[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 5. 악성 MS오피스 문서 분석 VBA 매크로 Word 문서 Part 1+2

2025. 8. 6. 22:36·온라인교육/KISA아카데미

1. 악성 MS 워드 트리아지

1. file 을 통한 분석

-> CDF[1], ole 파일 형식을 사용하는 MS 워드 문서

 

 

2. yara64 를 통한 분석

-> 워드 문서에 매크로 삽입시, 로컬시스템 자원에 대한 엑세스 권한 허용 가능

yara 옵션
-w : 경고문구 비활성화
-m : 작성된 yara 룰에 대한 설명, 메타데이터 출력
-s : yara룰과 일치된 문자열 출력
-g : yara룰의 태그값을 출력

 

 

3. oleid 를 통한 분석
기대효과 : 문서 파일내에 의심스러운 객체가 포함되어 있는지 식별

-> 의심스러운 VBA 매크로확인

 

 

4. olevba 를 통한 분석

Document_open 문서가 실행될때 매크로 실행
Create, showwindow, CreateObject 파일 및 응용 프로그램 시스템 명령 실행 의심, 은닉화 의심
Chr, Hex Strings, Base64 Strings 난독화 의심
VBA Stomping[2] VBA 매크로 파싱결과 P-code가 생성된다. 그러나 공격자는 악성 P-code와 정상적인 VBA 매크로를 함께 .vbaProject.bin 파일에 저장한다. 

 

 

5. pcodedmp 를 통한 P-code 분석

-> P-code 덤프시 7번째 라인에서 매우 큰 문자열이 확인된다.

 

문자열을 복사해서 확인해보면, 2342772...26fq 문자열이 반복되는것을 확인할수 있다.

 

이부분을 지워보면,

-> 깔끔한 명령어가 나온다.

 

 

6. oledump를 통한 소스코드 분석

M : VBA 매크로 존재하는 섹션
m : VBA 매크로는 존재하지 않지만, 매크로 관련 모듈에 관한 정의가 존재하는 섹션

 

  • oledump -v -s 13 를 이용해서 13번째 섹션을 조사

-> 문서가 열린후 boaxvoebxiotqueb 함수를 호출하는것을 확인

 

13번째 섹션은 함수 호출외에 별다른 악성행위가 없다.

 

  • oledump -v -s 15 를 이용해서 13번째 섹션을 조사

-> notepad++로 옮겨서 언어를 Visual Basic으로 변경

 

P-code에서 확인한 난독화를 위한 문자열이 존재한다.

 

 

-> P-code에서 확인했던 익숙한 문자열을 확인
-> 안티디버깅을 위한 쓸데없는 코드도 확인

 

  • 변수 haothkoebtheil 디버깅

gooykadheoj가 무슨 변수인지 추적해보면,

-> roubhaol.Zoom 에 15를 더한값임을 확인

 

  • roubhaol 추적

-> oledump 에서 확인했던 문자열로 이때 f와 o로 끝나는 것은 사용자 양식에 포함된 객체라는 뜻

이게 뭔말일까?
좀 찾아보니 oledump 동작 방식은 OLE 포맷과 VBA 매크로 저장방식에 대해 깊이 파봐야 이해할수 있을듯 싶어서 나름대로 정리해본다.

OLE 문서는 일종의 가상 파일 시스템 구조를 갖는데, 스토리지(폴더개념)와 스트림(파일개념)이 그것이다. oledump.py는 내부 FAT 구조에 따라 모든 스트림들의 경로와 이름, 크기, 문서 내 상대적 위치를 인덱싱하여 나열한다.
그렇다면, 모듈은 무엇이고 VBA 매크로는 어떻게 저장될까?
모듈은 VBA코드 덩어리이며, 하나의 스트림(파일)이다. 모듈의 종류에 따라 확장자가 달라질수 있으나 모듈은 반드시 하나의 스트림(파일)에 속해  Macros/VBA/ModuleName 형태로 확인된다.
빨간 박스는 뭘까? 이것은 사용자가 정의한 폴더구조로 roubhaol 이라는 문자열을 사용하고 있다. 아직까진 무슨 기능을 하는지 모른다. 다만 Macros/VBA/roubhaol 와 연관되어있음을 짐작할 수 있다.

 

 

2. 매크로 스크립트 분석

1. 문서 열람을 통한 분석

-> 매크로 허용
-> 그럴듯한 이미지가 확인된다.

 

  • 보기 - 매크로 - 매크로 보기 - 편집

-> VBA 편집창

 

문서2 - 폼 - 사용자 양식을 확인

-> roubhaol 를 더블클릭해보면,

 

이전에 "6. oledump를 통한 소스코드 분석" 과정에서 찾았던 Zoom 값을 확인할수 있다.

-> roubhaol.Zoom 에 15를 더하는 로직에서 사용됨

 

-> 이전 디버깅 과정에서 gooykadheoj 변수의 값이 아스키값 115인 것을 확인

 

100에 15를 더했을때 무엇이 될까?

->? powershell 로 간단히 확인해보면 s가 된다.

때문에 gooykadheoj 는 s 가 된다.

-> 이제 joe어쩌구 변수를 추적해본다.
-> 클릭하면
-> joef 어쩌구 변수가 P Text값을 갖는것을 알수 있다.

 

때문에 조립된 문자열은 "winmgmts:win32_process"이다.

win32_process 메서드는 프로세스를 생성할수 있다. 이 문자열이 어디에 쓰이는지 추적해본다.

-> 어떤 juuv 함수를 거쳐서 deul 변수에 저장된다.

 

deul 변수는 CreateObject 함수의 인자로 전달되는데 이때 CreateObject 함수는 ActiveX 개체에 대한 참조를 만들고 반환한다.

 

-> 최종적으로 생성된 개체의 주소는 tiaj 변수에 저장되고 xve 변수에 전달된다.

 

xve 변수에 전달되는것이 무엇일까?

 

tiaj변수는 개체의 주소, 그렇다면 Create( ) 함수로 인해 생성되는것을 확인해야한다.

함수의 전달인자 geul 변수부터 추적하면,

-> 이제는 친근한 사용자 양식 roubhaol 을 만났다. 이녀석의 gaod 항목의 두번째 페이지에서 ControlTipText 를 가지고 온다.

 

다시 VBA 편집기에서 ControlTipText를 확인해보면,

 

그런데 gaod 변수를 살펴보면 Pages 선택 기능이 안보인다. 영상에서도 안보여준다.(왜째서..)

 

 

그래서 이것저것 눌러보다가 오른쪽의 수상한 녀석을 발견했다.

-> Page2 가 보인다
-> ControlTipText 값이 보인다.

 

복사해서 Notepad++ 로 확인해보면, 이전의 p2342772... 문자열이 또 확인된다. 이 반복되는 문자열을 모두 지워보면 다음과 같은 파워쉘 스크립트가 확인된다.

-> 또 엄청 지저분한 문자열 발견

파워쉘 명령어 -e 옵션은 base64 encodedCommand의 약자이다. 때문에 powershell -e <문자열> 은 인코딩된 명령을 디코딩해서 실행하라는 의미이다.

 

CyberChef에서 디코딩을 수행해보면 다음과 같이 

-> 가독성이 상당하다...

 

 

세미콜론을 기준으로 줄바꿈을 시도해보자

-> 여전히 가독성이 좋지 않다.

 

PowerShell-Beautifier 을 이용해서 다음과 같이 파일로 저장한후 powershell ISE 에서 읽어본다.

-> 분석을 방해하는 안티디버깅 코드들이 보인다. 모두 제거해서 디버깅을 수행해보면,

 

1 line - 네트워크 보안 프로토콜 TLS 사용
3 line - toeh변수 = userprofile\337.exe 
4 line - 웹클라이언트 생성
5 line - 뭔가 알수없는 수개의 도메인이 연결되어있다.

 

5 line 의 도메인들을 확인해보면, 6 line 에 bp 를 걸고 실행시켜본다.

-> 도메인 문자열에서 공백이 발생해 문제가 생기는것 같다.

 

이를 해결하기 위해 도메인 문자열이 저장된 변수를 직접 확인해본다.

5 line 에서 공백이 발생하기 전까지 드래그하여 선택영역만 실행을 수행한뒤, 변수값을 확인한다.

-> 음.. 실습 영상과 도메인 정렬이 동일하지 않다.

 

이를 해결하기 위해서 공백만을 제거하고 다시 5 line 만 실행해서 변수를 확인해본다.

-> 5개의 도메인이 확인된다.

 

그 밑의 코드를 확인하면, 반복문에 5개의 도메인이 하나씩 들어가서 다운로드를 수행한다.

그후 if문에서 24751 바이트 이상일경우 WMI 클래스를 통해 조건에 맞는 파일을 실행하는것을 확인할수 있다.

 

 


REFERENCE & trivia

[1]CDF : 

[2]VBA Stomping : VBA 스톰핑은 MS Office의 정상적인 기능을 악용한 사례다. VBA 매크로는 OOXML, OLE 문서에서 삽입가능한 기능이며, VBA를 포함한 파일 작성후 저장시 자동으로  vbaProject.bin 이 생성된다. 파일을 저장할때 VBA매크로는 컴파일되어 P-code 형태로 vbaProject.bin 에 저장되는데 이때 VBA매크로도 함께 저장된다. 공격자는 악성 VBA매크로를 삽입한 문서를 저장한다. 그럼 vbaProject.bin 에는 악성 VBA매크로와 악성 P-code가 함께 저장되는데, 이때 vbaProject.bin 파일에 직접 접근하여(unzip을 이용) 악성 VBA매크로에 정상적인 VBA매크로를 덮어씌운다. 결론적으로 VBA Stomping 기법을 활용한 문서는 정상 VBA매크로와 악성 P-code를 품은채 완성된다. 피해자는 이파일을 열람할시 MS정책에 따라 VBA매크로는 건너뛰고 P-code를 실행한다. 그러나 이 기법은 파일을 저장할시, 새롭게 VBA매크로를 컴파일한다는 MS정책에 따라 악성 P-code를 덮어씌우게 되므로 영속성을 획득하기엔 어려움이 있다.

 

...

추후 보충 

'온라인교육 > KISA아카데미' 카테고리의 다른 글

[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 6. 악성 MS오피스 문서 분석 VBA 매크로 Word 문서 2  (4) 2025.08.07
[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 4. 악성 MS오피스 문서 분석 VBA 매크로 XLSB 문서 Part 1+2  (3) 2025.08.03
[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 3. 악성 MS오피스 문서 분석 VBA 매크로 PPAM 문서 Part 1+2  (1) 2025.08.02
[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 2. 악성 MS오피스 문서 분석 Excel 4.0 매크로  (1) 2025.08.02
[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 1. 악성 MS오피스 문서 분석전략  (2) 2025.08.02
'온라인교육/KISA아카데미' 카테고리의 다른 글
  • [KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 6. 악성 MS오피스 문서 분석 VBA 매크로 Word 문서 2
  • [KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 4. 악성 MS오피스 문서 분석 VBA 매크로 XLSB 문서 Part 1+2
  • [KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 3. 악성 MS오피스 문서 분석 VBA 매크로 PPAM 문서 Part 1+2
  • [KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 2. 악성 MS오피스 문서 분석 Excel 4.0 매크로
simpleton-sec
simpleton-sec
정보보안과 컴퓨터 공학에 관한 경험을 올립니다.
  • simpleton-sec
    보안쟁이 개인기록
    simpleton-sec
  • 전체
    오늘
    어제
    • 분류 전체보기 (23)
      • 드림핵 (0)
        • [Path]Embedded Security Res.. (0)
      • 프로그래밍언어 (0)
        • Haskell (0)
      • 정보보안 도서 (11)
        • [나만의 해킹 랩 만들기] (1)
        • [64비트 멀티코어 OS 원리와 구조] (6)
        • [악성코드 분석 시작하기] (4)
        • [실전 악성코드와 멀웨어 분석] (0)
      • misc (3)
      • 온라인교육 (6)
        • KISA아카데미 (6)
      • 라이트업 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    악성문서파일 분석
    악성코드 분석
    우분투 원격접속
    운영체제 개발
    MS파일분석
    원격 데스크톱
    정보보안
    OS
    멀웨어
    악성코드분석시작하기
    파일 난독화
    프로그래밍언어론
    하스켈
    우분투 24.04
    문자열 추출
    정보보안도서리뷰
    정적분석
    컴퓨터구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
simpleton-sec
[KISA 아카데미][중급] 악성 문서파일 분석(MS) 훈련 - 5. 악성 MS오피스 문서 분석 VBA 매크로 Word 문서 Part 1+2
상단으로

티스토리툴바