원문 캡처 · github.com
원문 캡처 · github.com

CAU는 MIT 라이선스로 공개된 Go 기반 악성코드 탐지 엔진이다. 해시 서명과 YARA를 비롯한 여섯 탐지기가 파일을 한 번씩 읽고, 탐지 결과를 설명과 ATT&CK 기법, CI에서 처리할 수 있는 종료 코드와 함께 제공한다.

명령줄에서 파일이나 디렉터리를 검사하고, SARIF·JSON·OCSF 형식으로 결과를 저장할 수 있다. 다음 예시는 저장소가 안내하는 사용 방식이다.

text
cau scan --dir ./downloads
cau scan ./dist --format sarif --output cau.sarif --fail-on none # code scanning
cau scan ./build --format json --fail-on heuristic # fail CI on suspicion
cau scan ./dist --format ocsf --output findings.json # OCSF for a security lake
cau coverage --format navigator --output layer.json # ATT&CK Navigator heat map
cau rules lint --rules ./signature-base --profile generic # lint a third-party rule set

탐지기는 해시 서명, 프로세스 안에서 실행하는 YARA, 휴리스틱, PE·ELF 구조 분석, 보이지 않는 코드포인트 탐지, 인코딩된 실행 파일 탐지로 구성된다. 여러 탐지기의 결과를 결합하는 융합 판정도 제공한다. 해시 및 YARA 일치는 MALICIOUS, 점수 기반 결과는 SUSPICIOUS로 분류하며, 점수만으로는 MALICIOUS로 승격하지 않는다. 서로 독립적인 출처가 뒷받침할 때만 CLEAN을 SUSPICIOUS로 높이고, 판정을 낮추지는 않는다고 프로젝트는 설명한다.

설치와 평가 결과

설치에는 Go와 libyara 개발 패키지가 필요하다. 저장소는 Debian 계열 환경의 설치 명령과 macOS용 Homebrew 대안을 안내한다. 빌드와 스모크 테스트는 다음과 같이 실행하도록 제시돼 있다.

text
sudo apt install golang-go libyara-dev pkg-config build-essential # or: brew install go yara pkg-config
git clone https://github.com/s-b-repo/cau.git cau && cd cau
make build
./cau scan --file corpus/smoke/malicious/mimikatz_strings.bin --db corpus/smoke/hashes.txt

sudo make install은 실행 파일을 /usr/local/bin에, 규칙과 서명을 /usr/local/share/cau에 설치한다. 종료 코드는 정상(0), 지정한 --fail-on 수준의 탐지 결과(1), 검사할 수 없는 파일(2), 실행 실패(3), 사용법 오류(4)로 나뉜다.

프로젝트가 공개한 평가에서는 Kali의 Windows 도구 349개에서 휴리스틱 탐지가 재점수화 뒤 60건에서 28건으로 줄었고, 자격 증명 덤퍼와 인젝터는 계속 탐지됐다. 같은 도구 모음의 PE 파일 49개에서는 임계치를 넘은 항목이 없었다. Kali 시스템의 ELF 파일 4,974개와 커널 모듈 40개에서도 임계치를 넘은 항목은 없었다. 이는 프로젝트가 제시한 측정치이며, 세부 조건과 한계는 평가 문서에 정리돼 있다.

저장소에는 설치 안내, 명령줄 참조, 탐지기 설명, 출력 형식, 탐지 콘텐츠, 탐지 엔지니어링, Go 라이브러리 사용법, 아키텍처, 제한 사항, 기여 안내, 계획, 변경 기록이 있다. 프로젝트는 교육 및 연구용이라고 밝히며, 분석 권한이 있는 파일과 시스템만 검사하고 실제 악성코드 표본은 격리된 환경에서 다루라고 안내한다.