소개
이 문서에서는 Windows에서 ClamAV sigtool.exe를 사용하여 사용자 지정 탐지 - 고급을 만드는 방법에 대해 설명합니다.
고급 맞춤형 탐지 정보
Advanced Custom Detections(고급 맞춤형 탐지)는 기존의 안티바이러스 시그니처와 유사하지만 사용자가 작성합니다. ClamAV는 악성코드와 기타 파일 기반 위협을 탐지하기 위해 시그니처를 사용하여 정상 파일과 악성/원치 않는 파일을 구별합니다. ClamAV 서명은 기본적으로 텍스트를 기반으로 하며 지정된 탐지 방법과 관련된 ClamAV 특정 서명 형식 중 하나를 준수합니다. 이러한 서명은 파일의 다양한 측면을 검사할 수 있으며 다른 서명 형식을 갖습니다. 사용 가능한 시그니처 형식 중 일부는 다음과 같습니다.
· MD5 서명
· MD5, PE 섹션 기반 서명
· 파일 본문 기반 시그니처
· 확장된 시그니처 형식(오프셋, 와일드카드, 정규식)
· 논리적 시그니처
· 아이콘 서명
ClamAV 프로젝트는 CVD(ClamAV Virus Database) 파일 형식의 시그니처 컬렉션을 배포합니다. CVD 파일 형식은 디지털 서명 컨테이너를 제공하며, 디지털 서명 컨테이너는 서명을 캡슐화하고 악의적인 제3자가 수정할 수 없도록 보장합니다. 이 시그니처 세트는 Cisco Talos에서 적극적으로 관리하며 ClamAV와 함께 제공되는 freshclam 애플리케이션을 사용하여 다운로드할 수 있습니다
왜 ClamAV인가
ACD를 사용하여 아래 예와 같이 SHA256 해시를 사용하여 탐지할 수 없는 복잡한 탐지/파일 특성을 일치시킵니다.
본문 기반 서명 콘텐츠 형식
ClamAV는 모든 본문 기반(콘텐츠 기반) 서명을 16진수 형식으로 저장합니다. 단, ClamAV YARA 규칙 지원은 예외입니다. 16진수 시그니처란 악성코드 본문이 16진수 문자열로 변환된 것을 의미하며, 다양한 와일드카드를 사용하여 추가로 확장할 수 있습니다.
논리적 시그니처를 사용하면 논리적 연산자를 사용하여 여러 시그니처를 확장 형식으로 결합할 수 있습니다. 더 상세하고 유연한 패턴 매칭을 모두 제공할 수 있습니다.
확장 시그니처 형식은 원래 .db 데이터베이스 형식이 사용되지 않기 때문에 ClamAV의 가장 기본적인 본문 기반 시그니처 형식입니다.
확장 시그니처를 사용하면 파일 "대상 유형", 바이러스 오프셋 또는 엔진 기능 수준(FLEVEL)과 같은 16진수 콘텐츠 이외의 추가 정보를 지정할 수 있으므로 탐지의 신뢰성이 향상됩니다
피싱 서명
ClamAV는 표시 텍스트가 실제 URL과 다른 도메인인 URL인 경우 의심스러운 HTML 링크를 탐지할 수 있습니다. 안타깝게도, 회사가 웹 서비스를 계약하고 HTML 링크 표시 텍스트를 사용하여 회사 웹 사이트에 대한 링크처럼 보이게 하는 것은 매우 일반적입니다. 이러한 관행이 일반적이므로 ClamAV는 피싱 캠페인의 대중적인 표적이 되는 특정 웹 사이트에 대해서만 피싱 검사를 수행합니다
바이트코드 서명
바이트코드 시그니처는 파일 추출의 다양한 단계에서 샘플 내용을 구문 분석하기 위해 C 코드를 작성하여 더 복잡한 매칭을 수행할 수 있는 방법입니다.
컨테이너 메타데이터 기반 시그니처
ClamAV 0.96을 사용하면 특정 조건을 충족하는 다른 컨테이너 유형 내에 저장된 파일과 일치하는 일반 서명을 생성할 수 있습니다. 서명 형식은 다음과 같습니다.
VirusName:ContainerType:ContainerSize:FileNameREGEX:
FileSizeInContainer:FileSizeReal:IsEncrypted:FilePos:
Res1:Res2[:MinFL[:MaxFL]]
여기서 해당 필드는 다음과 같습니다.
VirusName: 시그니처가 일치할 때 표시되는 바이러스 이름입니다.
ContainerType: 대상 파일을 포함하는 파일 유형입니다. 예를 들면 다음과 같습니다.
CL_TYPE_ZIP,
CL_TYPE_RAR,
CL_TYPE_ARJ,
CL_TYPE_MSCAB,
CL_TYPE_7Z,
CL_TYPE_MAIL,
CL_TYPE_POSIX_TAR,
CL_TYPE_OLD_TAR,
CL_TYPE_CPIO_OLD,
CL_TYPE_CPIO_ODC,
CL_TYPE_CPIO_NEWC,
CL_TYPE_CPIO_CRC
등등.
이 문서는 해시 서명에 초점을 맞추고 있습니다.
참고: ClamAV에 대한 서명을 생성하는 가장 쉬운 방법은 filehash 체크섬을 사용하는 것이지만 이 방법은 정적 악성코드에만 사용할 수 있습니다.
주의: 이 문서의 정보는 ClamAV의 최신 릴리스로 변경될 수 있습니다. 항상 ClamAV의 공식 가이드와 상호 연관시키고 검증하십시오.
시그니처 형식에 대한 자세한 내용은 ClamAV 웹 사이트를 참조하십시오.
이러한 시그니처는 엔드포인트로 다운로드되는 파일로 컴파일됩니다. 고급 맞춤형 탐지를 생성하려면 Outbreak Control(아웃브레이크 제어) > Advanced(고급)로 이동합니다. Create Signature Set(시그니처 세트 생성)를 클릭하여 새 Advanced Custom Detection(고급 맞춤형 탐지) 세트를 생성하고 이름을 지정한 다음 Create(생성)를 클릭합니다.
Advanced Custom Detection(고급 맞춤형 탐지) 세트를 생성한 후 Edit(수정)를 클릭하면 Add Signature(시그니처 추가) 링크가 표시됩니다. 서명의 이름을 입력하고 Create(생성)를 클릭합니다.
모든 시그니처가 나열되면 Build a Database from Signature Set(시그니처 세트에서 데이터베이스 구축)를 선택합니다. 원하지 않는 시그니처를 실수로 추가한 경우 Remove(제거)를 클릭하여 삭제할 수 있습니다.
경고: 시그니처를 추가하거나 제거할 때마다 Build a Database from Signature Set(시그니처 세트에서 데이터베이스 구축)를 클릭해야 합니다
참고: 파일에 대한 고급 사용자 지정 탐지를 생성할 경우 1시간 동안 캐싱이 수행됩니다. 고급 맞춤형 탐지 세트에 파일을 추가하는 경우 캐시 시간이 만료되어야 탐지가 적용됩니다. 예를 들어 알 수 없는 파일이 캐시된 지 5분 후에 해당 파일에 대한 고급 사용자 지정 탐지를 추가하면 55분 더 이상 탐지가 적용되지 않습니다.
경고: Advanced Custom Detections(고급 맞춤형 탐지)는 알 수 없는 상태의 파일에서만 작동합니다.
맞춤형 탐지 생성 방법 - Advanced with sigtool.exe
1단계: 먼저 ClamAV 웹 사이트 다운로드를 탐색하여 Sigtool을 얻어야 합니다.
내 경우에는 ZIP 패키지 clamav-1.1.0.win.x64.zip을 다운로드합니다
2단계: 원하는 위치에 파일의 압축을 풉니다. 내 경우에는 C:/ClamAV를 사용했습니다.
강조 표시된 폴더와 파일을 확인하십시오.
clamscan.exe - 파일 및/또는 디렉터리에서 바이러스를 검사하는 데 사용되는 명령줄 도구입니다. clamscan과 달리 clamscan은 실행 중인 clamd 인스턴스가 작동하지 않아도 됩니다. 대신 새 엔진을 생성하고 실행할 때마다 바이러스 데이터베이스에 로드합니다. 명령줄에 지정된 파일 및/또는 디렉토리를 스캔하고, 스캔 보고서를 작성한 다음 종료합니다.
sigtool.exe - 서명을 만들고 형식을 지정하고 *.hdb 파일에 쓰는 도구입니다. HDB 확장은 해시 기반 서명을 나타냅니다. sigtool은 libclamav를 가져오고 clamscan이 백그라운드에서 수행하는 작업을 수행하는 바로 가기를 제공합니다. 이러한 정보는 시그니처를 작성하거나 FP 또는 성능 문제를 일으킬 수 있는 시그니처에 대한 정보를 얻고자 할 때 매우 유용할 수 있습니다.
VirusVault - 사용자 지정 서명을 만들려는 파일을 삭제하기 위해 만든 고유 폴더입니다.
VirusRV.hdb - 이 파일에는 서식이 지정된 시그니처가 들어 있습니다. 이 파일의 이름은 VirusRV이지만 의미 있는 이름을 사용할 수 있습니다.
3a단계: CMD 라인을 시작하고 이전에 ClamAV의 압축을 해제한 위치로 이동합니다.
3b단계 이 행을 실행합니다.
C:\ClamAV>sigtool —md5 location-of-the-custom-file > name-of-the-output-file.hdb
이름을 변경하고(기본적으로 sigtool은 파일 이름을 사용함) *.hdb 파일 내에 배치할 수 있습니다. 단일 데이터베이스 파일에는 원하는 수의 시그니처가 포함될 수 있습니다. clamscan/clamd가 시작될 때마다 자동으로 로드되도록 하려면 데이터베이스 파일을 로컬 바이러스 데이터베이스 디렉토리(예: /usr/local/share/clamav)에 복사하면 됩니다.
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRV.hdb
이 경우 TestVirusRV.exe 파일에 대한 시그니처를 만든 다음 VirusRV.hdb 파일에 시그니처를 작성합니다
참고: SHA 값을 기반으로 시그니처를 생성하려면 해당 파일이 *.hsb로 저장됩니다
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRVsha256.hsb
주의: 패턴 일치 전에 내부적으로 전처리된 텍스트 파일, HTML 및 기타 데이터에는 해시 기반 서명을 사용할 수 없습니다. 이러한 경우 해시 서명을 사용하려는 경우 -debug 및 —leave-temps로 clamscan을 실행하고 /tmp에 남아 있는 전처리된 파일에 대한 서명을 만듭니다. 대상 파일에서 단일 바이트가 변경되자마자 해시 시그니처의 매칭이 중지된다는 점에 유의하십시오. 여기서 더 많은 정보를 확인할 수 있습니다.
이러한 Sigtool 플래그는 서명 작성에 특히 유용합니다.
—md5 / —sha1 / —sha256: MD5/SHA1/SHA256 해시를 생성하고 파일 크기를 계산하며, 두 가지를 모두 올바른 형식의 .hdb/.hsb 서명으로 출력합니다.
서명 이름
ClamAV 서명은 영숫자 문자, 대시(-), 점(.), 밑줄(_)만 사용하여 단어를 구분해야 합니다. 공백, 아포스트로피, 콜론, 세미콜론 또는 따옴표를 사용하지 마십시오.
공식 서명 데이터베이스에서 발견되는 ClamAV 서명 이름은 일반적으로 다음 형식을 사용합니다.
{platform}.{category}.{name}-{signature id}-{revision}
서드파티 데이터베이스의 명명 규칙은 다양합니다. 여기서 공식 데이터베이스의 시그니처 이름을 지정하는 Cisco-Talos 지침을 확인할 수 있습니다.
팁: 이전에 작성한 디렉토리에 있는 파일에 여러 개의 서명을 작성하려면 My VirusVault라는 이름을 지정했습니다. 와일드카드를 사용하여 명령을 실행할 수 있습니다. 이 경우 나는 다음과 같이 내 실행:
C:\ClamAV>sigtool —md5 C:\ClamAV\VirusVault\wildcard\ > VirusRV.hdb
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\*\ > VirusRV.hdb
VirusVault 디렉터리에 있는 각 파일에 대해 서명을 생성함
4단계: 이 명령을 실행하여 서명을 확인합니다.
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\TestVirusRV.exe
모든 서명을 확인하려면 와일드카드 마스크를 다시 사용할 수 있습니다.
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\*\
5단계: 새로 생성한 *.hdb 파일을 열고 생성한 시그니처를 복사한 다음 보안 엔드포인트 콘솔인 Outbreak Control(아웃브레이크 제어) > Advanced(고급)를 클릭하여 Edit(편집)로 이동하면 Add Signature(시그니처 추가) 링크가 표시됩니다.
6단계: Build a Database from Signature Set(시그니처 세트에서 데이터베이스 구축)를 클릭한 다음 새 맞춤형 탐지를 정책에 적용해야 합니다.
7단계: 엔드포인트에서 정책을 동기화하고 수동 스캔을 통해 새 서명을 테스트합니다. 아래 나열된 것과 같은 결과를 볼 수 있습니다.
수동 스캔
Secure Endpoint Console의 탐지
이벤트 확장됨
Secure Endpoint Console에서 서명을 저장하기 위한 요구 사항
MD5 해시만 있고 파일 크기를 모르는 경우 시그니처 세트를 만들 수 있지만 다음 규칙을 사용해야 합니다.
A: MD5는 모두 대문자를 포함할 수 없습니다.
올바른 MD5 해시:
5b852928a129d63dc5c895bd62cf2ab7
잘못된 MD5 해시:
5B852928A129D63DC5C895BD62CF2AB7
Secure Endpoint Console에서 모든 대문자로 오류 발생
B: 이름을 지정하려면 대문자 문자를 사용해야 하며, 이는 사용자 이름일 수 있습니다.
올바른 이름:
Dm-launcher.msi
잘못된 이름:
dm-launcher.msi
C: 크기에 대해 와일드카드를 사용할 수 있지만 최소 FLEVEL에 대해서는 :73을 사용해야 합니다.
올바른 와일드카드:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi:73
잘못된 와일드카드:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi
모든 소문자에 대한 보안 엔드포인트 콘솔에서 오류가 발생했으며 FLEVEL이 지정되지 않았습니다.
참고: 크기를 알 수 없는 해시 서명 - ClamAV 0.98에서는 크기를 알 수 없지만 해시가 있는 해시 서명에 대한 지원도 추가했습니다. 특정 크기의 시그니처를 사용하는 것이 훨씬 더 성능 효율적이므로 이 기능을 사용할 때는 주의해야 합니다. 이러한 경우 크기 필드에 '*' 문자를 사용할 수 있습니다. 이전 버전의 ClamAV와 제대로 호환되려면 이러한 시그니처의 최소 기능 수준이 73 이상이어야 합니다. 이 레벨 세트 없이 와일드카드 크기를 사용하는 시그니처는 형식이 잘못된 것으로 거부됩니다.