Information


  • File Type : hwp
  • hash : f2e936ff1977d123809d167a2a51cdeb
  • hwp Property Set

  • Process Tree

  • Contents

Analysis


  • hwp 내부에는 EPS가 삽입되어 있음

  • EPS 내부함수의 xor 연산을 통해 쉘코드가 포함된 추가 루틴을 Decode함

  • Decode 된 전문 내부에서 쉘코드를 확인할 수 있음

  • 쉘코드를 분석하기 용이한 exe 형태로 변환

쉘코드 분석_1

  • NOP slide로 시작하는 엔트리포인트 확인할 수 있음(변환전과 동일)

  • XOR 연산을 통해 다음 실행될 루틴을 Decode함

  • CreateProcessA를 통해서 iexplorer.exe 프로세스를 생성함

  • 생성한 프로세스에 악성행위하는 내용 추가를 위해 아래의 API를 호출함

  • WriteProcessMemory 루틴 분석

  • 첫번째 인자인 HANDLE을 확인했을 때 84임을 확인할 수 있고, HANDLE 84의 값은 PID : 674

  • 0x674 = 1,652 이므로, PID 1652 값임을 알 수 있음

  • 두번째 인자인 값인 150000은 iexplorer.exe에 쓸 주소를 나타내고,

  • 세번째 인자의 4014D3 주소의 값을 Write함

  • CreateRemoteThread 루틴 분석

  • lpStartAddresslpParameter 인자로 0x150000(WrtieProcessMemory로 Write한 iexplorer.exe의 내부주소)로 설정되어 있음
  • 해당 API를 통해 프로세스가 suspend 상태에서 resume될 것임을 알 수 있음

첫번째 쉘코드는 iexplrer.exe 를 생성하고 추가 쉘코드를 Write 함으로써 악성행위를 수행

쉘코드 분석_2

  • LoadLibray API를 통해 wininet.dll 함수를 로드함

  • 이후 인자로 아래 URL을 인자로 주고 GetProcAddreass를 통해 wininet.dll dll의 InternetOpenUrlA API를 리턴함

두번째 쉘코드는 지정된 URL에 접속시도하고, 추가 파일을 다운로드하여 추가 악성행위 실행

  • 현재, C&C 서버는 닫혀있음


1. Overview



1.1 Origin of name


VirusTotal Software Engineer인 Victor M. Alvarez의 트윗에 따르면 YARA의 Full name은 다음과 같다.


"YARA is an ancronym for:

YARA: Another Recursive Ancronym, or Yet Another Ridiculous Acronym. Pick your choice."


Yet Another Recursive Acronym 또는 Yet Another Ridiculous Acronym 이다[1][2].



2. About YARA



2.1 Features of yara


yara의 특징은 다음과 같다[3].


º 텍스트 기반 또는 바이너리 패턴을 기반으로 Malware 변종(malware families)에 대한 탐지를 제공

º 16진수 문자열, 텍스트 문자열, 정규 표현식 (Regular Expression) 을 지원

º PE, ELF 분석을 처리하는 모듈과 함께 오픈 소스 Cuckoo 샌드박스를 지원



Rules을 작성하는 기준에 대한 가이드는 다음과 같다[4].


º Rules에 Hit 되는 기준은 악성코드의 동작에 필요한 부분이여아 함

º 작성한 Rules는 기준 악성코드와 변종 악성코드 패밀리를 구별할 수 있을정도로 충분해야함

º 작성한 Rules는 다른 악성코드들 사이에서 일반적으로 통해야 한다(common across).




2.2 Get rules from external sources


YaraRules Github에서는 다양한 Rule set을 제공한다. rules는 Anti-Debug 및 Anti-Visualization techniques, 악성 문서, 패커 등을 탐지하기위한 규칙이 있다[5].

또한 VirusTotal, ThreatConnect 등과 같은 위협 정보 공유 플랫폼(Threat Intelligence sharing platforms)들이 YARA를 지원한다. 이를 통해 수집한 위협 정보를 기반으로 Rules를 작성할 수 있다[6][7].


VirusTotal의 경우 개인 API로 자신의 Rules를 입력하고 Hit 되는 샘플이 업로드 될 때 notice 해준다.

[그림 1]은 위협 정보 공유 플랫폼에서 지원하는 YARA 화면이다.


[그림 1] VirusTotal and ThreatConnect



2.3 Automatically generate rules

yara rules를 작성하는 일을 자동화 해주는 경우는 다음과 같다.


º Joe Sandbox[8]
- https://www.joesandbox.com/yaraspaged/
- Joe Sandbox에서는 동적 분석 결과를 바탕으로 Windows용 Signature를 제작할 수 있음
- 무료 온라인 샌드박스 (VirusTotal, Hybrid-Analysis, Malwr 등)과 호환

º Hyara[9]
- https://github.com/hy00un/Hyara
- 정적 분석 단계에서의 YARA 제작의 편의성을 극대화한 강력한 IDA Plug-in

(Hyara 관련 내용은 본 블로그의 Make yara rule with Hyara (IDA plug-in) 게시글 참고)






2.4 Make yara rules

자세한 문법은 YARA documentation 를 참조


2.4.1 Strings 문법

º wide : Unicode와 같은 2바이트 문자를 한 글자로 검색할 때 사용
º ascii : ascii 문자열 형식 검색 (wide와 함께 사용할 경우  순서 상관없음)
º nocase : 대/소문자 구분하지 않음
º fullword : 문자열을 하나의 문자열로 취급 (?)

<코드 분석 이후 yara 제작과 함께 상세한 내용 작성 예정>
<yara import 추가>
<yara 문법 추가>


N. Conclusions



암호화, 패킹, 다형성 등 우회가 비교적 쉬운 시그니처 기반 탐지에 대한 문제점들이 제시되고 있지만 여전히 YARA는 강력한 시그니처 기반 탐지 도구이다. 탐지 방안에 있어서 단독으로 사용하기는 무리가 있지만 다양한 탐지 도구들과 함께 병행하면 문제가 없다고 생각하며, 자동화 도구를 활용하여 높은 능률을 보장 받을 수 있다고 생각한다.

N. Related Reports



(1) https://github.com/VirusTotal/yara

(2) https://yara.readthedocs.io/en/v3.8.1/

(3) https://yararules.com/

(4) https://github.com/Yara-Rules/rules

(5) https://twitter.com/yararules



N. References



[1] https://twitter.com/plusvic/status/778983467627479040

[2] https://github.com/VirusTotal/yara/issues/58

[3] https://yara.readthedocs.io/en/v3.5.0/index.html

[4] https://securityintelligence.com/signature-based-detection-with-yara/

[5] https://github.com/Yara-Rules/rules

[6] https://www.virustotal.com/

[7] https://threatconnect.com/

[8] https://www.joesecurity.org/blog/8938263704094453988

[9] https://github.com/hy00un/Hyara

1. Overview



'''

박혜윤_이력서(181119)열심히하겠습니다.exe

이미지 무단사용관련 내용확인(박혜윤작가).exe

'''


파일명으로 유포된 GandCrab v5.0.4 랜섬웨어 악성코드이다.



2. File Info



SHA-256 : cf0ea1584d93d65c00012664eb39f2b003e41b60885759d6219b2d29a02ddcc3

<분석 완료 후 내용 추가 예정>


3. Detailed analysis


<분석 완료 후 내용 추가 예정>


N. Used Automated Malware Analysis Tools list



[1] VirusTotal, Available : https://www.virustotal.com/

[2] Hybrid-analysis, Available : https://www.hybrid-analysis.com/

[3] Intezer analyze, Available : https://analyze.intezer.com/


N. Related Report



[1] http://blog.alyac.co.kr/1989

[2] https://www.boannews.com/media/view.asp?idx=74745

'Analysis > Malware Analysis' 카테고리의 다른 글

[hwp] 한미우호협회 사칭 악성코드 분석  (0) 2020.12.20

블로그 이전으로 작성시간 변경됨 - 기존 [2019.01.03 00:47] 작성

1. Overview


Kaspersky lab의 GReAT 팀은 Rich Header 분석을 통해 공격 그룹을 밝혀낸 사례가 있다. 해당 내용을 담은 보고서가 공개되어 있으며 관련 내용의 일부를 해석한 내용은 다음과 같다[1].


'''2018 평창 올림픽 기간 동안 유포된 Olympic Destroyer에서는 Bluenoroff 패밀리의 파일과 동일한 Rich 헤더를 공유하였고 이는 동일한 환경을 사용하여 빌드되었다는 것을 뜻한다.'''


Rich Header는 변조가 쉽고 변조 유무에 대한 검증을 제공하지 않기 때문에 신뢰성이 높지 않지만 Attack Group간의 유사성을 표현하는데 간접 지표가 될 수 있다고 생각한다.


2. Background


Rich Header는 Visual Studio 6 (1998) 이후 MS Toolchain에 포함되며 훨씬 이전 버전에서 등장했을 수 있다. 2004년에 처음 논의되었고 2008년에 Daniel Pistelli에 의해 reverse engineered되었다[2]. Microsoft Toolchain을 반복할 때마다 리치 헤더가 생성되는 방식을 조정하고 제품 매핑 업데이트 하며 바이너리가 만들어진 정보를 포함한다.


PE 구조에서 DOS 헤더와 COFF 사이의 헤더에는 2가지 Stub가 존재한다[2].


1. DOS program

- "This program cannot be run in DOS mode" 를 출력

- Microsoft로부터 Documented 되었다.

- MSVC /SUB 컴파일러 플래그를 사용하는 모든 유효한 MS-DOS 응용 프로그램으로 릴리즈 가능


2. Rich Header

- 알 수 없는 바이트가 포함된 RICH 헤더로 문자열 "Rich"와 매직 넘버로 끝남

- Microsoft 공식 언급 없음

- 일관된 설명 없음


[그림 1] PE 파일 포맷 (일부)



3. Structure


3.1 PE Structure


PE 구조는 다음과 같다.


[그림 2] PE 구조


3.2 Rich Header Structure

Rich Header의 구조는 다음과 같다. Rich Header의 내용은 4바이트의 Checksum을 통해 XOR 연산 되어 있다. 이를 통해 XOR 이전의 값을 얻을 수 있다.


[그림 3] Rich Header 구조


Checksum 4바이트 값을 통한 XOR 연산을 진행한 결과는 [그림 4]와 같다. 이와 같이 헤더의 시그니처는 "DanS"라는 문자열로 이루어져 있다. 이를 통해 XOR 키를 얻는 방법 또한 존재한다[3].
[그림 4] XOR 연산이 완료된 Rich Header



각각의 값에 대한 자세한 설명은 [그림 5]와 같다.

Header (4 + 12 bytes)
- "Dans"
- Zero padding (or not)

@Comp.id Blocks (n x 8 bytes)
- n@Comp.id Block

Footer (8 + x bytes)
- "Rich" identifier
- Checksum
- Zeropadding (16 배수로 예상)
[그림 5] 헤더 구조

3.3 @Comp.id Structure

"@Comp.id" 는 "compiler build number" and "id" 의 줄임말이다[4].


ID 값은 각 목록 항목의 유형을 나타낸다. 예를 들어 특정 ID는 특정 버전의 C 컴파일러를 사용하여 생성된 OBJ 파일을 나타낸다. ID 값은 Visual Studio 릴리즈 간에 변경되는 값이다. 이러한 ID는 각 컴파일러 또는 어셈블러에서 생성되며 "@Comp.id" 심볼 형식으로 연결된 각 OBJ 파일 내에 저장된다.



● mCV
    - 결과물을 만들기 위한 컴파일러의 마이너 버전

● ProdID
    - 특정 식별 또는 객체 유형을 지정하는 고유 식별자

● Count
    - 특정 ProdID 및 mCV가 링커에서 사용된 빈도 지정



[그림 6] @Comp.id Structure

4. Conclusion



[그림 7]은 Rich Header가 존재하는 컴파일러와 존재하지 않는 컴파일러를 나눈 것이다[2].

[그림 7] Rich Header 생성 / 비생성 컴파일러



Microsoft에서 공식 문서로 제공하지 않고 비교적 생소한 내용이지만 실제 Threat intelligence에서 연관성을 표출한 사례가 있고 Attack Group를 추적하고 증명하는데 간접 지표로 충분히 활용 될 수 있을 것이라 생각한다.



5. References


[1] The devil’s in the Rich header, Kaspersky lab GReAT, 2018.03, Available: https://securelist.com/the-devils-in-the-rich-header/84348/

[2] RSA Conference 2017, AIR-T10, From Mole Hills to Mountains: Revealing Rich Header and Malware Triage, Available: https://published-prd.lanyonevents.com/published/rsaus17/sessionsFiles/5013/AIR-T10-From-Mole-Hills-To-Mountains-Revealing-Rich-Header-And-Malware-Triage.pdf

[3] http://dukup11ch1.tistory.com/46?category=780155

[4] https://bytepointer.com/articles/the_microsoft_rich_header.htm

[5] https://hy00un.github.io/2018/09/16/rich_header.html

[6] http://trendystephen.blogspot.com/2008/01/rich-header.html

[7] https://www.ntcore.com/files/richsign.htm

[8] https://bytepointer.com/articles/the_microsoft_rich_header.htm

'Reversing > Theory' 카테고리의 다른 글

Windows XP Folders and Locations & Windows 7 and Vista  (0) 2019.01.06
Process Hollowing  (0) 2019.01.06
Code Injection overview  (0) 2019.01.06
프로세스 핸들과 PID의 차이  (0) 2019.01.06
CreateFile의 CreateFileW CreateFileA 차이  (0) 2019.01.06

+ Recent posts