
CVE-2019-19781을 위한 침해 지표 스캐너
이 저장소는 CVE-2019-19781과 관련된 Citrix ADC 어플라이언스의 침해 탐지 유틸리티를 포함합니다. 유틸리티와 그 리소스는 FireEye Mandiant 조사 중 수집된 침해 지표를 인코딩합니다. 자세한 내용은 이 도구의 출시를 발표한 블로그 게시물을 참조하십시오.
요약하면 유틸리티는 다음을 수행합니다:
다음은 수행하지 않습니다:
커뮤니티 피드백을 통해 도구의 탐지 기능이 더욱 정밀해질 수 있습니다. 문제, 아이디어 또는 피드백이 있으면 이슈를 열거나, PR을 제출하거나, 작성자에게 연락하십시오.
이 스캐너는 다음을 식별할 수 있습니다:
CVE-2019-19781에 대한 침해 지표(IoC) 스캐너는 FireEye Mandiant와 Citrix가 CVE-2019-19781 악용과 관련된 침해 대응 업무에서 얻은 지식을 바탕으로 공동 개발했습니다. 스캐너의 목표는 사용 가능한 로그 소스와 시스템 포렌식 아티팩트를 분석하여 CVE-2019-19781의 성공적인 악용 증거를 식별하는 것입니다. 도구가 수행할 수 있는 데에는 한계가 있으며, 따라서 도구를 실행한다고 해서 시스템이 손상되지 않았다고 보장할 수는 없습니다. 예를 들어, 침해 증거가 있는 시스템의 로그 파일이 잘리거나 교체되었을 수 있고, 시스템이 재부팅되었을 수 있으며, 공격자가 침해 증거를 제거하기 위해 시스템을 조작했을 수 있고, 침해 증거를 가리는 루트킷을 설치했을 수 있습니다.
이 도구의 출력은 다음 세 가지 범주 중 하나에 속합니다:
침해 증거. 기본값입니다.
이 범주에 속하는 모든 증거는 장치가 성공적으로 침해되었음을 나타냅니다.
이는 정보를 노출하는 명령 실행(예: ns.conf 또는 smb.conf 구성 파일 보기)부터
백도어 설치(예: NOTROBIN, 코인 마이너 등),
또는 Perl 기반 웹 셸 드롭까지 다양할 수 있습니다.
성공적인 취약점 스캐닝 증거 (이는 공인된 시스템 관리자 또는 무단 공격자일 수 있습니다). 이 범주에 속하는 모든 증거는 시스템이 취약한 상태(예: 완화 조치가 적용되지 않음)였으며 CVE-2019-19781을 악용하기 위한 최소 첫 번째 단계가 성공했음을 나타냅니다.
실패한 취약점 스캐닝 증거. 이 범주에 속하는 모든 증거는 시스템을 스캔하거나 악용하려는 시도가 실패했음을 나타냅니다.
이 도구는 모든 침해 증거 또는 CVE-2019-19781과 관련된 모든 침해 증거를 찾는 것을 보장하지 않습니다. 시스템에서 침해 징후가 확인되면, 조직은 침해된 시스템에 대한 포렌식 조사를 수행하여 사고의 범위와 정도를 파악해야 합니다. 이 도구는 "있는 그대로" 제공되며 어떠한 보증도 없습니다.
이 저장소의 릴리스 탭에서 독립 실행형 Bash 스크립트를 다운로드해야 합니다. 소스 디렉토리를 Citrix ADC 어플라이언스에 복사하는 것도 가능하지만 권장되지 않습니다.
IoC 스캐너는 Citrix ADC 어플라이언스에서 직접 실행할 수 있습니다.
이 모드에서 도구는 알려진 지표에 대해 파일, 프로세스 및 포트를 스캔합니다.
도구는 진단 메시지를 STDERR 스트림에 쓰고 결과를 STDOUT 스트림에 씁니다.
일반적인 사용에서는 STDOUT을 검토할 파일로 리디렉션해야 합니다.
도구는 Citrix ADC 어플라이언스에서 라이브 모드로 root로 실행되어야 합니다.
예:
$ sudo bash ./ioc-scanner-CVE-2019-19781-v1.1.sh > "/tmp/results-$(date).txt"
이 도구는 다음 제품과 함께 사용하도록 설계되었습니다:
IoC 스캐너는 마운트된 포렌식 이미지를 검사할 수도 있습니다. 이 시나리오에서는 이미지 루트 디렉토리 경로를 지정하는 명령줄 인수를 전달합니다. 오프라인 모드에서 실행하기 위해 root일 필요는 없습니다.
예:
$ bash ./ioc-scanner-CVE-2019-19781-v1.1.sh /mnt/path/to/evidence/root/
두 모드 모두 도구는 지원 코드를 임시 디렉토리로 추출합니다. 이 디렉토리는 스크립트가 종료되면 삭제됩니다. 도구는 시스템에 추가 변경을 가하지 않지만 로그 항목이 생성될 수 있습니다.
모든 포렌식 분석과 마찬가지로, 라이브 응답보다는 dd 이미지에 대한 오프라인 분석을 선호하십시오.
이렇게 하면 도구가 관련 증거를 덮어쓸 가능성이 없어집니다.
자세한 내용은 자주 묻는 질문을 검토하십시오.
침해를 식별하는 더 많은 방법을 발명했다면, 이 IoC 스캐너에 기여해 주시기 바랍니다. 우리는 가능한 가장 철저하고 정확한 스캐너를 제공하고자 합니다.
주요 목표는 신뢰도 높은 침해 지표를 보고하는 것입니다. 사용자가 이 도구의 출력을 기반으로 추가 조사를 시작할 수 있으므로, 잘못된 길로 인도하지 않는 것이 중요합니다. 따라서 단순 스캐닝과 같은 활동은 기본 모드에서 보고되어서는 안 됩니다. 공격자가 시스템에 접근하여 정보를 가져오거나 콘텐츠를 생성한 증거는 항상 보고되어야 합니다.
Citrix ADC 어플라이언스에서 공통 분모이기 때문에 Bash 스크립트로 이 도구를 제공합니다. 다음은 Citrix ADC 릴리스의 기능 매트릭스입니다:
FreeBSD/NetScaler를 대상으로 Go를 사용하는 악성코드를 목격했지만, Go는 FreeBSD 6.x를 지원하지 않습니다.
./tests/ 디렉토리에 침해 증거가 포함된 스파스 파일 시스템 이미지를 유지 관리합니다.
이 도구에 알려진 경로 또는 블랙리스트 콘텐츠와 같은 IoC를 추가할 때는 테스트를 위한 증거 예제를 제공하십시오.
Linux 또는 macOS 시스템에서 다음과 같이 단위 테스트를 실행할 수 있습니다:
$ bash ./tests/test.sh
runnning test: access-logs
runnning test: xml-template
runnning test: crontab
runnning test: var-cron-tabs-nobody
runnning test: error-logs
runnning test: file-system
runnning test: netscalerd
runnning test: notrobin-tmp-init
runnning test: notrobin-var-nstmp-nscache
runnning test: ns-content
runnning test: chr-encoded-template
runnning test: copied-ns-conf
runnning test: curl-in-template
runnning test: perms
runnning test: var-tmp-netscaler-portal-templates
runnning test: var-vpn-bookmark
runnning test: webshell-in-scripts
runnning test: shell-history
runnning test: bash_log
runnning test: notice_log
소스 저장소를 체크아웃한 후 ./build.sh 도구를 사용하여 독립 실행형 스크립트를 빌드할 수 있습니다.
이 도구는 기본 스크립트와 지원 리소스를 단일 번들로 패키징합니다.
실행 시 임시 디렉토리로 추출되어 거기서 실행된 후 정리됩니다.
빌드 방법:
$ bash ./build.sh > ioc-scanner-CVE-2019-19781-rev$(git rev-parse HEAD | cut -c 1-8).sh
FireEye의 CVE-2019-19781 및 실제 악용에 대한 추가 정보는 다음을 참조하십시오:
CVE-2019-19781에 대한 대응은 보안 업계 전반에 걸쳐 중요한 노력이었으며, 이 블로그들은 이 도구 사용자에게 유용한 추가 기여를 많이 인용하고 있습니다. 환경에서의 활동을 가장 잘 이해하려면 이 게시물에서 링크된 자료를 읽는 것이 좋습니다. 언제나 그렇듯, FireEye Mandiant 팀은 여기로 연락하여 후속 질문에 답변하거나 조사에 추가 지원을 제공할 수 있습니다.
| NetScaler 버전 | OS | 사용 가능한 언어 |
|---|
| 13.0 | FreeBSD 8.4 | Bash, Perl, Python |
| 12.1 | FreeBSD 8.4 | Bash, Perl, Python |
| 12.0 | FreeBSD 8.4 | Bash, Perl, Python |
| 11.1 | FreeBSD 8.4 | Bash, Perl |
| 10.5 | FreeBSD 8.4 | Bash, Perl |
| 10.1 | FreeBSD 6.3 | Bash, Perl |
| 9.3 | FreeBSD 6.3 | Bash, Perl |