최근 F5 BIG-IP의 원격코드 실행 취약점(CVE-2022-1388)이 공개되면서, 공격자들은 대대적으로 이를 악용하기 시작했습니다. 아래 그림은 트위터에서 공유된 관련 취약점 공격 패킷 중 하나이며, 원격 실행된 명령을 통해 악성코드가 호스팅 된 IP 정보를 확인할 수가 있습니다.
[그림 1]에서 확인된 IP(154.23.191[.]157:5896)에 접속해보면 패킷에서 확인되는 파일은 확인할 수 없었지만, 또 다른 악성코드가 호스팅 되어 있는 것을 발견할 수 있었습니다.
분석 결과, 해당 악성코드(589.exe)는 원격제어 악성코드인 Gh0st RAT의 변종으로 확인되었습니다. Gh0st RAT는 인터넷에 오픈소스로 공개되어 있기 때문에 많은 공격자들이 사용하는 원격제어 악성코드 중 하나이며, 필요에 따라 커스텀 하여 사용하기도 하므로 변종도 다수 발견되고 있는 악성코드입니다. 본 보고서에서는 악성코드 호스팅 사이트에서 확보한 Gh0st RAT 샘플에 대한 분석을 진행하고, 분석 내용을 토대로 침해 시스템에서 확인할 수 있는 침해 지표에 대해 알아보도록 하겠습니다.
수집된 악성코드 샘플 정보는 아래와 같습니다.
구분 | 내용 |
샘플명
|
589.exe |
MD5 | A824640862EA34979ABB4D80F2EE07B1 |
SHA1 | 529FBD21CF1EB8CDBD5CBC9C59C074CEBD8262ED |
VirusTotal |
[표 1] 분석 샘플 정보
본 샘플은 내부에 DLL 형태의 PE를 인코딩하여 내장하고 있으며, 실행 시 XOR 연산을 통해 디코딩 후 이를 메모리에 로드하여 실행합니다. [그림 3]은 내장된 PE를 디코딩하는 루틴입니다. XOR Key는 초기 1Byte에 33(h), 이후 33 46 30 44 00 (h)이 Key 값으로 사용됩니다.
[그림 5] 디코딩 결과
디코딩 된 DLL은 메모리에 로드된 후, 현재 프로세스의 실행경로를 뮤텍스 명으로 사용하여 뮤텍스를 생성하며, 이를 통해 중복 실행을 방지합니다.
이후, 특정 레지스트리 값을 생성하여 시스템의 현재 시각을 기록합니다. 이는 감염 시스템에서 악성코드 실행시점 파악 용도로도 참조할 수 있을 것으로 판단됩니다.
레지스트리 키 : HKLM\SYSTEM\CurrentControlSet\services\BITS
레지스트리 값 : InstallTime
다음은 샘플에서 확인되는 설정 플래그입니다. 샘플 내 지속성 설정 플래그(Flag_Persistence)의 값을 확인하여 지속성 설정 여부를 결정하며, 지속성을 설정하는 방법은 서비스로 등록하는 방식(Flag_Service)과 시작프로그램으로 등록하는 방식(Flag_StartupProgram)으로 나뉩니다.
[표 2]는 설정 플래그의 값에 따른 기능을 정리한 것입니다.
File Offset | 설정값 | 설명 |
0x00030320 (Flag_Service) |
1 | 윈도우 디렉토리로 원본 파일을 복사 후 서비스로 등록 |
0x00030324 (Flag_StartupProgram) |
1 | 시작프로그램으로 등록. 원본 파일은 재부팅 시 삭제 |
0x00030328 (Flag_Persistence) |
0 | 지속성 설정 ON |
[표 2] 설정 데이터의 값에 따른 기능 설명
본 샘플은 [그림 9]에서 확인할 수 있듯이 지속성이 설정되어 있으며, 윈도우 디렉토리로 원본 파일을 복사한 뒤 이를 서비스로 등록함으로써 지속성을 확보합니다. [그림 11]은 윈도우 디렉토리로 원본 파일을 복사하는 루틴이며, 복사 시 파일명 포맷은 [a-z]{6}.exe 입니다. (랜덤한 알파벳 소문자 6자리)
[그림 11] 윈도우 디렉토리로 원본 파일을 복사
윈도우 디렉토리로 복사된 파일은 서비스로 등록되어 지속성을 확보하며, 감염 시스템에서는 [그림 12]와 같이 서비스가 생성된 것을 확인할 수 있습니다.
- 서비스 이름 : Abcdef Hijklmno Qrs
- 표시 이름 : Abcdef Hijklmno Qrstuvwx Abcd
- 실행 파일 경로 : %WINDIR%\[a-z]{6}.exe
[그림 12] 서비스 등록
서비스 등록이 완료되면, 현재 실행중인 악성코드가 위치한 드라이브의 루트 경로에 원본 파일 삭제를 위한 vbs파일을 생성하여 실행합니다. 생성되는 파일명 포맷은 [1-9]{1,}.vbs 입니다. (랜덤한 숫자.vbs)
[그림 13] 원본 파일 삭제를 위한 vbs 파일 생성 후 실행
[그림 14]는 감염 시스템에서 생성된 vbs 파일이며, 해당 vbs파일이 실행되면 원본 파일을 삭제한 뒤, 자가 삭제됩니다.
다음은 시작프로그램으로 등록하여 지속성을 확보하도록 설정되었을 경우에 동작하는 루틴입니다. 시작프로그램 경로를 알아온 뒤, 해당 경로로 원본 파일을 복사하고, 재부팅 시 원본 파일을 삭제합니다. 복사 시 파일명은 샘플 내 하드코딩 되어 존재하며, 아래와 같습니다.
- 파일명 : 1ec194dba44488ae6fd64c04eccc79f7.exe
감염 시스템에서는 시작프로그램 경로에 [그림 16]과 같은 파일이 생성된 것을 확인할 수 있겠습니다.
지속성 설정이 완료되면, C2서버와 통신하기 위한 준비 과정을 수행합니다. 먼저, 내장하고 있는 인코딩 된 데이터를 Base64 및 자체 알고리즘을 통해 디코딩합니다.
디코딩 결과는 [그림 18]과 같으며, C2서버의 도메인을 확인할 수 있습니다.
인코딩 데이터 : bWaAZ25xZmYta2aFck8=
디코딩 결과 : nishabii[.]live (C2서버 도메인)
위 디코딩 과정이 완료되면 C2서버로 접속을 시도하며, 정상적으로 연결 시 감염 시스템의 각종 정보들을 수집합니다.
수집하는 정보에는 실행중인 보안 프로그램 목록에 대한 정보도 포함되어 있는 것을 알 수 있습니다. 감염 시스템에서 실행중인 프로세스의 이름을 [표 3]의 리스트와 비교하여 해당 프로세스가 실행 중인지 확인합니다.
360tray.exe 360sd.exe a2guard.exe ad-watch.exe cleaner8.exe vba32lder.exe MongoosaGUI.exe CorantiControlCenter32.exe F-PROT.EXE CMCTrayIcon.exe K7TSecurity.exe UnThreat.exe CKSoftShiedAntivirus4.exe AVWatchService.exe ArcaTasksService.exe iptray.exe PSafeSysTray.exe nspupsvc.exe SpywareTerminatorShield.exe BKavService.exe MsMpEng.exe Microsoft Security Essentials SBAMSvc.exe VIPRE ccSvcHst.exe QQ.exe f-secure.exe avp.exe KvMonXP.exe RavMonD.exe Mcshield.exe egui.exe NOD32 |
kxetray.exe knsdtray.exe TMBMSRV.exe avcenter.exe ashDisp.exe rtvscan.exe ksafe.exe QQPCRTP.exe Miner.exe AYAgent.aye patray.exe V3Svc.exe avgwdsvc.exe ccSetMgr.exe QUHLPSVC.EXE mssecess.exe SavProgress.exe fsavgui.exe vsserv.exe remupd.exe FortiTray.exe safedog.exe parmor.exe beikesan.exe KSWebShield.exe TrojanHunter.exe GG.exe adam.exe AST.exe ananwidget.exe AVK.exe GData ccapp.exe |
Symantec Norton avg.exe AVG Anti-Virus spidernt.exe Dr.web Mcshield.exe Mcafee avgaurd.exe Avira Antivir F-PROT.exe F-Prot AntiVirus vsmon.exe ZoneAlarm avp.exe Kaspersky cpf.exe Comodo outpost.exe Outpost Firewall rfwmain.exe kpfwtray.exe FYFireWall.exe MPMon.exe pfw.exe S.exe 1433.exe DUB.exe ServUDaemon.exe BaiduSdSvc.exe |
[표 3] 실행중인 보안 프로그램 확인 목록
다음은 최종적으로 정보 수집이 완료되었을 때의 수집 결과를 메모리에서 확인한 것입니다.
이는 추후 암호화 과정을 거쳐 C2서버로 전송됩니다.
[그림 20]의 0x001852AC 주소를 기점으로 각 오프셋별 수집된 정보를 정리하면 [표4]와 같습니다.
Offset | Size(Byte) | 수집 정보 |
0x0004 | 0x9C | 윈도우 버전 |
0x00A0 | 0x04 | CPU 클럭 속도 |
0x00A4 | 0x04 | CPU 개수 |
0x00B8 | 0x04 | 물리 메모리 크기 (MB) |
0x00BC | 0x04 | IP |
0x00C0 | 0x30 | 호스트 이름 |
0x00F4 | 0x04 | 네트워크 인터페이스 속도 |
0x0138 | - | 실행중인 보안 프로그램 목록 |
[표 4] 감염 시스템 정보 수집 목록
C2서버로 감염 시스템의 수집 정보 전송이 완료되면, C2서버로부터 추가 명령을 수신하여 다양한 악성행위를 수행할 수 있습니다. 명령에 따른 주요 기능을 몇가지 정리하면 다음과 같습니다.
1) 화면 캡쳐
감염 시스템의 화면을 캡쳐 하는 기능입니다.
[그림 21] 화면 캡쳐
2) 키로깅
감염 시스템의 키 입력을 모니터링하여 키로깅을 수행합니다.
키로깅 데이터는 XOR 인코딩(Key : 0x62)을 거쳐 시스템 디렉토리 내에 “urlg.dat” 파일에 기록됩니다. 이는 감염 시스템에서 키로깅이 수행되었을 경우의 침해지표로 활용될 수 있겠습니다.
※ 키로깅 파일 경로 : C:\Windows\System32\urlg.dat
3) Remote Shell
파이프를 통해 Remote Shell 기능을 구현합니다. 공격자는 원격지에서 cmd 명령을 수행할 수 있습니다.
4) 파일 다운로드 및 실행
추가 파일을 다운로드하고 실행하는 기능입니다.
5) 자가 삭제
감염 시스템에 설치된 악성코드를 자가 삭제하는 기능입니다. 지속성을 위해 등록된 서비스와 시작프로그램 파일도 삭제되며, 현재 동작하고 있는 악성 프로세스도 종료됩니다. 악성 파일은 재부팅 시 삭제됩니다.
6) 이벤트 로그 삭제
다음은 윈도우 이벤트 로그(“Application”, “Security”, “System” )를 삭제하는 기능입니다.
분석을 통해 확인된 IOC 정보를 정리하면 다음과 같습니다. 아래와 같은 사항들이 확인되는 시스템이 있다면 Gh0st RAT 변종 악성코드 감염을 의심해볼 필요가 있을 것으로 판단됩니다.
1) File
File Name | 설명 |
%WINDIR%\[a-z]{6}.exe | 원본 악성코드 복사본 (지속성을 위해 서비스로 등록되는 파일) |
C:\[1-9]{1,}.vbs | 원본 악성코드 자가 삭제를 위한 스크립트 |
C:\Windows\System32\urlg.dat (64bit) C:\Windows\SysWOW64\urlg.dat (32bit) |
키로깅 데이터가 인코딩되어 저장된 파일 |
%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\1ec194dba44488ae6fd64c04eccc79f7.exe | 원본 악성코드 복사본 (지속성을 위한 시작프로그램 등록) |
2) SHA1
SHA1 | 설명 |
529FBD21CF1EB8CDBD5CBC9C59C074CEBD8262ED
|
Gh0st RAT 변종 악성코드 |
5667ED6AB06BFD66827FB939CE488436765F10DC | 원본 악성코드 자가 삭제를 위한 스크립트 |
3) Service Name
Service Name | 설명 |
Abcdef Hijklmno Qrs | 지속성을 위해 등록된 서비스 |
4) Registry
Registry | 설명 |
Key : HKLM\SYSTEM\CurrentControlSet\services\BITS Value : InstallTime |
악성코드 실행 시간 기록 |
5) C2 Server
C2 Server | 설명 |
nishabii[.]live | C2 Server |
보안관제센터 MIR Team
한미연합훈련 기간 방산업체 노린 북한발 악성코드 (0) | 2022.09.30 |
---|---|
한국 기업을 타깃으로 하는 귀신 랜섬웨어 (리눅스 ver) (0) | 2022.08.19 |
깃허브 저장소를 통한 악성코드 유포 사례 (0) | 2022.05.24 |
RDP Bruteforce Attack을 통해 유포되는 MedusaLocker (0) | 2022.03.11 |
악성 워드 문서를 통해 유포되는 Hancitor 악성코드 (0) | 2022.03.11 |
댓글 영역