저번 블로그에서 Darkside를 되게 재밌게 분석을 해서 이번에도 다른 랜섬웨어를 분석하고 싶었는데 많은 악성코드들 중에 어느 랜섬웨어가 가장 좋고 그나마 접하기가 쉬울지 고민하며 찾아보다가 Babuk이라는 샘플을 찾게 되었습니다.
Babuk의 encryption routine 빼고 남은 기능들은 다크사이드보다 분석하기가 훨씬 쉽고 다크사이드와 달리 Babuk는 dynamic IAT를 만들지 않고 중요한 string들도 전혀 암호화되어 있지 않고 plaintext입니다.
랜섬웨어에 대해서 궁금해하시는 분들은 아마 Babok부터 시작하는 것이 좋을 것 같습니다!
샘플은 여기서 다운로드하시면 됩니다: https://bazaar.abuse.ch/sample/704a0fa7de19564bc743fb68aa0652e38bf86e8ab694bc079b15f945c85f4320/
Babuk는 악성코드가 실행되자마자 "babuk_v3"이라는 Mutex가 존재하는지를 확인하고, 존재한다면 ExitProcess로 자기 종료시키고, 반면에 그런 Mutex가 없다면 CreateMutexA로 Mutex를 만듭니다. Mutex의 이름을 보니 버전 3인 것 같아서 혹시나 버전 4? 5?도 있을까라는 생각이 들었는데 구글 검색을 해보니 Babuk를 만드는 해커들이 서로끼리 싸웠다더군요. 그래서 한 명은 열받아서 source code를 인터넷에 업로드했다고 하네요 ㅎㅎ (https://www.bleepingcomputer.com/news/security/babuk-ransomwares-full-source-code-leaked-on-hacker-forum/)
Babuk가 commandline를 받아주는 기능이 있다는 것을 확인할 수 있는데
lan 네트워크를 탐지 시 다음과 같이 네트워크 속에 있는 resource를 열거합니다.
다음 두 사진은 내용이 많아서 조금 복잡해 보일 수도 있는데 여러 가지 API들 도움으로 서비스를 종료시키는 것입니다.
OpenSCMangerA --> Service Control Manager 열기
OpenServiceA --> lpServiceName에 저장되어 있는 서비스를 열기
QueryServiceStatusEx --> 서비스가 "현황" 확인
ControlService --> "SERVICE_CONTROL_STEP"를 parameter로 쓰는데 종료시키기 전에 일단 서비스 멈추기부터
Babok가 종료시키려고 하는 서비스들:
memtas
mepocs
sophos
veeam
backup
GxVss
GxBlr
GxFWD
GxCVD
GxCIMgr
DefWatch
ccEvtMgr
ccSetMgr
SavRoam
RTVscan
QBFCService
QBIDPService
Intuit.QuickBooks.FCS
QBCFMonitorService
YooBackup
YooIT
zhudongfangyu
stc_raw_agent
VSNAPVSS
VeeamTransportSvc
VeeamDeploymentService
VeeamNFSSvc
veeam
PDVFSService
BackupExecVSSProvider
BackupExecAgentAccelerator
BackupExecAgentBrowser
BackupExecDiveciMediaService
BackupExecJobEngine
BackupExecManagementService
BackupExecRPCService
AcrSch2Svc
AcronisAgent
CASAD2DWebSvc
CAARCUpdateSvc
Process도 마찬가지고 종료시키려고 합니다.
sql.exe
oracle.exe
ocssd.exe
dbsnmp.exe
synctime.exe
agntsvc.exe
isqlplussvc.exe
xfssvccon.exe
mydesktopservice.exe
ocautoupds.exe
encsvc.exe
firefox.exe
tbirdconfig.exe
mydesktopqos.exe
ocomm.exe
dbeng50.exe
sqbcoreservice.exe
excel.exe
infopath.exe
msaccess.exe
mspub.exe
onenote.exe
outlook.exe
powerpnt.exe
steam.exe
thebat.exe
thunderbird.exe
visio.exe
winword.exe
wordpad.exe
0notepad.exe
피해자가 백업하지 못하게끔 cmd.exe를 활용하여 Shadow Copies를 삭제합니다
Babok는 FindFirstFileW하고 FindNextFileW를 활용하여 directory들을 뒤져서 안에 있는 파일들을 암호화시킵니다.
lpstring2에 저장되어 있는 폴더하고 파일과, "How To Restore Your Files.txt"와 파일 extension이 ".babyk"인 파일들을 스킵합니다.
Babuk는 다른 랜섬웨어와 비교했을 때 (Conti, Darkside 등) 분석하기가 훨씬 쉽고 파일들을 암호화시키는 속도도 언급했던 랜섬웨어들과 경쟁이 되지는 않지만 Babuk가 쓰는 encryption 방법은 그래도 흥미롭습니다. Babuk는 CreateSemaphoreA라는 API로 MultiThreading을 시도하려고 하고 윈도우 documentation에 따르면 "세마포어 개체는 제한된 수의 사용자를 지원할 수 있는 공유 리소스를 제어하는 데 유용한다"고 합니다.
현재 피해 시스템 Processors 수를 두배 올려 CreateThread를 부르고 encryption을 시작합니다
Thread를 하나 만든 다움에 이 Thread가 모든 가능한 Drive를 확인하고 데이터를 발견한 경우에 그 데이터를 encrypt합니다.
FLARE의 capa explorer 도움으로 Babuk가 chacha20를 쓴다는 것이 확인되었고, curve2519를 사용합니다. (수학을 설명해드릴 자신 없으니... 링크를 남기겠습니다 ㅠㅠ https://en.wikipedia.org/wiki/Curve25519)
아울러 Babuk는 파일의 사지에 따라 encryption 방법이 살짝 다른 것 같습니다.
MultiThreading과 Encryption에 대한 공부를 조금 더 해서 이 블로그를 업데이트해야겠네요...
Darkside 랜섬웨어: 미국 파이프라인 마비 시킨 악성코드 Part 2 (0) | 2022.11.05 |
---|---|
Darkside 랜섬웨어: 미국 파이프라인 마비 시킨 악성코드 Part 1 (0) | 2022.11.01 |
RegretLocker 랜섬웨어 악성코드 분석 (0) | 2022.06.17 |
Wannacry Ransomware Part 2 (0) | 2022.05.19 |
Wannacry Ransomware 분석 및 Malware 방법론 (0) | 2022.05.19 |