작은 메모장
악성HWP문서 분석_Macro 1 본문
시작하기 앞서..
HWP 5.0부터는 컴파운드 파일 포멧이라는 규격을 사용
파일의 첫 8바이트가 D0 CF 11 E0 A1 B1 1A E1으로 시작
파일 헤더 스트림에 파일 인식 정보인 "HWP Document File"이 존재
이번 목표인 HWP 문서
분석하기 위해 해당 파일을 16진수로 변환
파일의 버전을 알아보기 위해 PowerShell명령어를 사용
파일의 첫 8바이트가 D0 CF 11 E0 A1 B1 1A E1으로 시작
파일 인식 정보인 "HWP Document File"또한 찾아봄
얘도 있음
즉, 이 파일은 HWP 5.0이상임
악성문서 트리아지
매크로 공격이 주로 시행되는 곳은 Scripts 스토리지에서 발생함
여기엔 2개의 스트림이 존재하는데,
스크립트 버전을 담는 JScriptVersion 스트림
Script 헤더, 소스, Pre 소스, Post 소스가 저장되는 DefaultJScript 스트림
이 스트림에 뭐가 있는지 확인
9번 섹션에 DefaultJScript가 존재하는 것을 확인
이를 분석하기 위해 별도로 저장
PostScript때와 마찬가지로 zlib압축이 되어있을 것이므로, 압축 해제
압축 해제됨
스크립트 분석
위 스크립트는 JavaScript 파일로, 총 3개의 함수로 구성됨
OnDocument_New(), OnDocument_Open(), CreateBin(filePath)
OnDocument_New(), OnDocument_Open()은 HWP에 기본적으로 내장되어 있는 함수
=> 한글 문서를 실행하면 악성 스크립트가 바로 실행됨
OnDocument_Open()의 세부코드
commandtoRun에 tmp.exe의 경로로 추정되는 값을 넣고
CreateBin 함수에 이를 넣은다음
ShellExecute 함수를 이용하여 경로의 tmp.exe를 실행시킴
그럼 CreateBin에는 무슨 내용이 있는가?
CreateBin의 세부 코드
상단 hexBin에 어마어마한 양의 hex데이터를 입력함
이를 iso-8859-1형식으로 바꾸고
이를 매개변수로 받은 filepath에 저장함 => 실행파일 내에 실행코드를 삽입
결과적으로, 위 코드는
임시 생성파일을 생성 후
무언가 엄청난 양의 데이터를 생성파일에 넣은 후
이를 실행시키는 악성코드임
저 어마어마한 hex 데이터를 분석함
일단 중간중간 끼워진 \x를 제거하기 위해 공백으로 변환
이를 복사 후 hex에디터에 붙여넣기
입력이 끝났다면 원래 저장하려던 이름인 tmp.exe로 파일을 저장
그럼 악성 exe 파일이 생성된 것을 확인할 수 있음
이를 Yara룰을 이용하여 확인
그럼 요상한 두개의 값이 감지됨
이는 API호출 명령으로, 룰셋을 확인하면 각각 VirtualAllocEx와 LoadLibraryEx로 확인됨
더욱 자세한 분석을 위해 ProcessMonitor를 사용하여 분석
프로세스의 이름을 알고 있으므로, 프로세스의 이름으로 필터링 (PID조건은 지워야 함)
아까 만들어둔 tmp.exe를 실행
엄청나게 많은 정보가 잡힘
한번 더 필터링
그럼 이 tmp.exe가 192.168.0.100이라는 주소로 계속 연결을 시도하고 있음을 확인 가능
'KISA 사이버 보안 훈련 > 스피어피싱 대응 심화' 카테고리의 다른 글
악성HWP문서 분석_익스플로잇 1 (0) | 2023.05.30 |
---|---|
악성HWP문서 분석_Macro 2 (0) | 2023.05.30 |
악성HWP문서 분석_PostScript 2,3 (0) | 2023.05.30 |
악성HWP문서 분석_PostScript 1 (0) | 2023.05.30 |
악성 HWP문서 분석전략 (0) | 2023.05.26 |