안녕하세요? 이스트시큐리티입니다.
과거부터 공격자들은 백신 탐지를 우회하고 감염 사실을 은폐하기 위해 다양한 방법을 시도해왔습니다. 그중 프로세스 인젝션 기법을 통한 백신 탐지 우회는 Process Hollowing, SetWindowsHookEx등 방법을 전형적인 방법을 통해 이루어져왔습니다. 하지만 이러한 기법들은 오랜 기간 사용되었기 때문에 백신 회사들로부터 인젝션 탐지 연구가 진행되어 악성코드 탐지율이 높아졌습니다.
이에 따라 최근 기존에 사용되어 왔던 프로세스 인젝션 기법이 아닌 Atombombing , Process Doppelganging, early bird등 새로운 기법들이 등장하였으며 이러한 기법들은 정보 탈취 악성코드, 랜섬웨어 등 다양한 유형의 악성코드에서 발견되고 있습니다.
따라서 본 보고서에서는 새롭게 발견된 인젝션 기법 중 Process Doppelganging(1)을 이용한 SynAck랜섬웨어를 상세 분석하고자 합니다.
악성코드 상세 분석
1. 분석 환경 우회
악성코드 분석가나 분석 시스템으로부터 정적인 데이터 분석을 어렵게 하기 위해 문자열 난독화, 동적인 IAT구성, 자체적인 API함수를 사용합니다.
1) 난독화
다음과 같이 난독화를 통해 사용한 API가 확인되지 않아 정적 분석을 어렵게 합니다.
[그림 1] IAT구성 화면
2) 자체적인 API호출 함수 구성
주소 계산을 통해 함수를 호출하기 때문에 다음과 같이 정적 분석 툴로 어떤 함수가 호출되는지 확인되지 않습니다.
[그림 2] 코드 난독화 화면
3) Process DoppelGanging인젝션
전형적인 프로세스 인젝션 기법을 사용할 경우, 분석 시스템이나 백신을 통해 쉽게 탐지될 수 있기 때문에 이를 우회하기 위해 최근 공개된 Process DoppelGanging이라는 새로운 프로세스 인젝션 기법을 사용합니다. 인젝션 대상 프로세스는 윈도우 설치 프로그램인 msiexec.exe이다. 다음은 인젝션 코드입니다.
[그림 3] Process DoppelGanging 인젝션 코드
하지만 실제 해외에서 공개된 방식인 PE파일을 직접 쓰지 않고 이를 응용하여EntryPoint에 삽입되는 코드를 통해 로드되는 방식을 사용합니다. 다음은 삽입되는 EntryPoint 코드입니다.
[그림 4] 후킹된 Entry Point 코드
2. 파일 암호화
파일 암호화를 진행하기 전에 excel.exe, javaw.exe, dns.exe, vmtoolds.exe, GoogleUpdate.exe등 총293개의 프로세스를 종료합니다. 이는 프로세스에서 접근 중인 파일을 최소화하여 많은 파일을 안정적으로 암호화하기 위함으로 보입니다. 또한 분석을 어렵게 하기 위해 종료 대상 프로세스리스트는 이름값으로 생성된 Hash로 관리됩니다. 다음은 프로세스 종료 코드입니다.
[그림 5] 프로세스 종료 코드
안정적인 파일 암호화를 위해 파일 암호화 제외 경로가 존재합니다. 제외 경로 리스트는 Hash로 관리되며 Windows(0x7B35A3C6), STARTUP(0x53C4CAFE), CryptnetUrlCache(0x8FEBB2B3), Temp(0xF37288C2), Cache(0xAD634ADA) 등 총 16가 존재합니다.
[그림 6] 암호화 제외 대상 경로들의 Hash
파일 암호화는 로컬에 연결된 저장공간을 대상으로 루트 폴더부터 진행됩니다. 암호화가 완료된 파일은 임의의 10자리의 확장자가 추가되며 해당 폴더에는 감염ID를 이용한 “==READ==THIS==PLIEASE==[감염ID].txt” 이름의 랜섬노트가 드롭된다. 다음은 암호화가 완료된 폴더화면입니다.
[그림 7] 암호화된 폴더 화면
암호화가 완료된 파일의 구조는 다음과 같습니다.
암호화 파일 구조 |
크기 ( byte ) |
설명 |
암호화된 파일 데이터 |
Filesize – Filesize%16 |
암호화된 파일 내부 데이터 |
파일 접미 원본데이터 |
Filesize%16 |
파일의 접미 원본 데이터 (파일사이즈를 16으로 나눈 나머지만큼 암호화되지 않는다.) |
암호화 시그니쳐 |
8 |
시그니쳐를 통해 암호화여부를 확인 ( 0x2F A1934A203DCE65 ) |
암호화 ID |
4 |
감염 ID |
암호화 정보 구조체 크기 |
4 |
암호화 정보 구조체의 크기 0x27B로 고정 |
암호화 정보 구조체 |
0x27B |
암호화된 AES, 공개키 등의 정보 |
[표 1] 암호화 파일 구조
또한 랜섬노트에는 사용자 정보와 암호화 키 정보들이 포함되어 있습니다. 생성된 랜섬노트의 내용은 다음과 같습니다.
[그림 8] 랜섬노트 화면
랜섬노트에 따르면 파일 복원을 위해서는 “synack@scryptmail.com” 또는 “synack@countermail.com”로 연락을 해야하며 24시간이내에 답장이 없을 시 BitMessage를 이용해야 합니다. 또한 암호화된 파일의 일부는 무료로 복원시켜준다는 내용을 포함합니다.
결론
시간이 지날수록 공격자들의 공격 기법들이 교묘하고 다양해지고 있습니다. 알려지지 않은 기법들을 사용해 백신 탐지를 우회함으로써 사용자들 모르게 악성코드에 감염될 확률이 더 높아졌습니다.
SynAck 랜섬웨어의 경우 기존 랜섬웨어와는 다르게 Process Doppelganging 이라는 새로운 기법을 사용하면서 상당히 고도화된 모습을 보였습니다. 백신 회사 또는 전문가들은 새로운 기법에 대해 분석하고 빠르게 대응할 수 있는 관심과 연구를 지속적으로 수행할 필요가 있습니다.
또한 지속적으로 변종이 등장할 가능성이 있는 만큼 사용자는 주기적으로 중요 파일을 백업하여야 하며, 패치 누락으로 인한 취약점이 발생하지 않도록 OS와 소프트웨어는 최신 버전의 업데이트를 유지해야 합니다. 백신을 최신 업데이트 상태로 유지하며 주기적인 검사를 실시하여야 합니다.
현재 알약에서는 해당 악성코드를 ‘Trojan.Ransom.SynAck’ 로 진단하고 있습니다.
Trojan.Android.InfoStealer 악성코드 분석 보고서 (0) | 2018.06.21 |
---|---|
특정인 지칭, 상품 주문 제안 메일로 위장한 GandCrab 랜섬웨어 (0) | 2018.06.20 |
김수키(Kimsuky) APT조직, 미북 정상회담 전망 및 대비 문서로 공격 (0) | 2018.06.19 |
상품 관련 내용으로 유포되는 악성 메일 주의 (0) | 2018.06.18 |
국내 시중 은행 이름을 도용한 계정 탈취 목적 악성 메일 주의 (0) | 2018.06.15 |
댓글 영역