1. 개요

- 미국 CISA, NSA, FBI 등에서 러시아 연방 보안국(FSB)과 연관된 것으로 추정되는 Snake 악성코드 분석 보고서 발표

- Snake 악성코드는 50여 개 국가 정부 네트워크, 연구 시설 및 언론 등을 대상으로 민감 정보 탈취를 시도

 

Hunting Russian Intelligence “Snake” Malware | CISA

SUMMARY The Snake implant is considered the most sophisticated cyber espionage tool designed and used by Center 16 of Russia’s Federal Security Service (FSB) for long-term intelligence collection on sensitive targets. To conduct operations using this too

www.cisa.gov

 

2. 주요내용

① 러시아 배후 해킹 그룹 Turla는 피싱메일과 무차별 대입 공격을 통해 자격 증명 정보 획득 및 관리자 권한 획득 시도

- 초기 액세스 권한 획득 후 Snake 악성코드 배포

> jpsetup.exe(이미지 뷰어 설치 프로그램)을 통해 Snake 악성코드 배포

> 정상적인 경로(%windows%\WinSxS\)에 WerFault.exe 등록하여 지속성 유지

WinSxS (Windows Side By Side)
- Windows OS의 "DLL Hell" 문제를 해결하기 위해 만들어짐
※ DLL Hell: DLL을 관리할 때 발생할 수 있는 모든 문제를 의미
> Windows OS는 프로그램 사용 시 DLL파일을 사용
> 업데이트 등으로 DLL이 변경되는 경우 DLL 관련 문제가 발생할 수 있음
※ DLL 버전 충돌 문제, 프로그램이 의존하는 DLL 파일을 찾을 때의 어려움, 불필요한 DLL 파일 복사본이 만들어지는 문제 등
> 이러한 문제를 해결하기 위한 목적으로 등장

- 윈도우 업데이트 시 시스템, 드라이버가 변경되는 폴더, 파일들을 WinSxS 폴더에 백업
> 프로그램 실행 시 해당 디렉터리에서 DLL에 관한 정보를 불러옴
> 이를 통해 의존성 문제를 줄일 수 있음

 

② 관리자 권한 획득 후 도메인 컨트롤러에 액세스

- 조직의 전체 네트워크에 대한 정보 수집 목적

> 키로거, 네트워크 스니퍼, 오픈 소스 등의 도구를 사용

 

③ 여러 노드를 경유하여 내부 정보 유출

- 여러 프로토콜을 이용한 통신(TCP, UDP, HTTP, SMTP, DNS 등)과 암호화를 사용해 탐지 우회

 

3. 탐지규칙

3.1 Snort

- 권고된 탐지 규칙을 적용하기 전 운영 환경을 고려하여 적용여부 검토

alert http any any -> any any (msg: "http rule (Cookie)";pcre:"/[0-9A-Za-z]{10}[0-9A-Za-z\/\+]{11}=/C";flow: established, to_server;sid: 7; rev: 1;)

alert http any any -> any any (msg: "http rule (Other Header)";pcre:"/[0-9A-Za-z]{10}[0-9A-Za-z\/\+]{11}=/H";flow: established, to_server;sid: 8; rev: 1;)

alert http any any -> any any (msg: "http2 rule (Cookie)";pcre:"/[0-9A-Za-z]{22}[0-9A-Za-z\/_=\;]{11}/C";flow: established, to_server;sid: 9; rev: 1;)

alert http any any -> any any (msg: "http2 rule (Other Header)";pcre:"/[0-9A-Za-z]{22}[0-9A-Za-z\/_=\;]{11}/H";flow: established, to_server;sid: 10; rev: 1;)

alert tcp any any -> any any (msg: "tcp rule";content: "|00 00 00 08|"; startswith; dsize: 12;flow: established, to_server; flowbits: set, a8; flowbits: noalert;sid: 1; rev: 1;)

alert tcp any any -> any any (msg: "tcp rule";content: "|00 00 00 04|"; startswith; dsize:8;flow: established, to_server; flowbits: isset, a8; flowbits: unset, a8;flowbits: set, a4; flowbits: noalert;sid: 2; rev: 1;)

alert tcp any any -> any any (msg: "tcp rule";content: "|00 00 00 08|"; startswith; dsize: 4;flow: established, to_client; flowbits: isset, a4; flowbits: unset, a4;flowbits: set, b81; flowbits: noalert;sid: 3; rev: 1;)

alert tcp any any -> any any (msg: "tcp rule";dsize: 8; flow: established, to_client; flowbits: isset, b81;flowbits: unset, b81; flowbits: set, b8; flowbits: noalert;sid: 4; rev: 1;)

alert tcp any any -> any any (msg: "tcp rule";content: "|00 00 00 04|"; startswith; dsize: 4;flow: established, to_client; flowbits: isset, b8; flowbits: unset, b8;flowbits: set, b41; flowbits: noalert;sid: 5; rev: 1;)

alert tcp any any -> any any (msg: "tcp rule";dsize: 4; flow: established, to_client; flowbits: isset, b41;flowbits: unset, b41;sid: 6; rev: 1;)

 

3.2 Yara

- Snake Queue File 탐지

rule HighEntropy
{
    meta:
        description = "entropy rule"

    condition:
        math.entropy(0, filesize) >= 7.0
}

 

- Snake Werfault.exe 탐지

rule PeIconSizes
{
    meta:
        description = "werfault rule"

    condition:
        pe.is_pe 
        and 
        for any rsrc in pe.resources:
            (rsrc.type == pe.RESOURCE_TYPE_ICON and rsrc.length == 3240)
        and
        for any rsrc in pe.resources:
            (rsrc.type == pe.RESOURCE_TYPE_ICON and rsrc.length == 1384)
        and
        for any rsrc in pe.resources:
            (rsrc.type == pe.RESOURCE_TYPE_ICON and rsrc.length == 7336)
}

 

4. 기타 대응 방안

- 암호 변경: 기본 암호 사용, 암호 유출 가능성 등을 고려하여 전사 차원의 암호 변경

- 최소권한부여: 관리자 권한 획득을 어렵게 하기 위함

- MFA 적용: 계정에 엑세스하지 못하도록 하기 위함

+ Recent posts