!!악성코드이기 때문에 다운로드하셔서 절대 실행시키지 마세요. 무조건 VM을 사용하세요!!
Malware bazaar에서 저처럼 초보자에게 분석하기가 쉬운 악성코드가 뭐가 있는지 보다가 RegretLocker를 발견해서 오늘은 RegretLocker 랜섬웨어를 분석할 것입니다. 어려운 obfuscation이 전혀 업고 개발자게 남겨둔 strings가 많으므로 분석이 그렇게 어렵지는 않은 것 같습니다.
샘플을 여기서 다운로드가 가능합니다:
https://bazaar.abuse.ch/sample/a188e147ba147455ce5e3a6eb8ac1a46bdd58588de7af53d4ad542c6986491f4/
pestudio를 확인해 보니 RegretLocker 샘플은 32-bit입니다. 왼쪽에 있는 "virtustotal"를 보니 바이러스 검사 소프트웨어 67개 중에 58은 이 파일이 악성코드인 것을 판단합니다. Ida하고 ghidra로의 static analysis에 바로 넘어가겠습니다.
이 랜섬웨어는 유저이름하고 컴퓨터 이름을 확인하는데 만약에 컴퓨터 이름이 "WIN-295748OMAKG"이면 바로 종료합니다. 왜 그런 체크가 있는지 전혀 모르겠지만 아마 이 악성코드를 개발한 사람의 "실험 환경"이 아닌가 싶네요. 자기 머신을 감염시키지 않기 위한 보안 장치인지...
이 랜섬웨어는 지속성을 확보하기 위해 registry를 열어 "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"에 악성코드를 추가합니다. 저의 "윈도우 권한상승" 블로그들에 자주 나오는 registry key인데, 위에 path에 추가되어 있는 서비스들은 유저가 로그인할 때마다 실행됩니다.
아울러 악성코드는 작업 스케줄러를 불러오는 것을 확인할 수 있습니다.
위에 schtasks는 ShellExcuteA라는 API로 실행됩니다.
악성코드는 Shadowcopy를 삭제하는 것을 확인할 수 있습니다. Shadowcopy는 짧게 말하자면 백업 파일들입니다. 즉 삭제되면 backup이 불가능해집니다
시스템 백업도 삭제됩니다. 다른 말로 하자면: Snapshot 삭제. 감염 전 상태로 못 돌아간다는 말이죠.
" bcdedit.exe / set{ default } bootstatuspolicy ignoreallfailures ". bcd는 부팅 항목 옵션 값을 설정하는 역할을 합니다. "bootstatuspolicy ingoreallfailures"가 있으므로 부팅이 실패했을 때 모든 에러들을 무시합니다. 에러가 일어날 경우 재부팅합니다.
" bcdedit.exe / set{ default } recoveryenabled No ". 시스템 리커버리 불가.
" vssadmin.exe Delete Shadows / All / Quiet " . 위와 똑같이 Shadow Volume Copies들을 삭제합니다.
감염된 컴퓨터에게 인터넷 연결이 있는지를 확인하기 위해 악성코드는 http://api.ipify.org 에 연결하고.
피해자 아이피가 무엇인지 확인합니다.
아울러 악성코드는 자기의 C2 서버에 연결해보려고 하고 ".onion"이라고 있는 것을 보니까 TOR 웹주소네요.
위에 TOR 주소에 연결하여 RSA key를 받으려고 합니다. 받지 못하는 경우에는 아래에 있는 hardcoded되어 있는 RSA key를 사용합니다.
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1ZQInrnhxXCtAN/LsOX2GmgbvBxMsO49lc1/qodshkUvRQLazWv61UbMLKx2gaRQrCYuVrR1Cgd7LxY4ueGo50TqZioAJbCcfzdiXlEkJqLlz4RTU9RFZ/wFjWxChek2NsU6vLLSowPPTw+JhwTooI+QPAIYeoxCf4xz7Kvu9CQIDAQAB
-----END PUBLIC KEY----
랜섬웨어는 위에서 받은 RSA key로 새로운 AES key를 만듭니다.
Encrypt 시키기 전에 당연히 일단 drives들하고 mount가 되어 있는 Volume들을 열거합니다.
다음 사진 3장에 보이는 것들 빼고 모든 파일들이 encrypt됩니다 (Windows, ProgramData, Microsoft, System, notepad, x96dbg, Hex Editor, 그리고 악성코드가 직접 만든 파일도 포함)
코드를 분석하다 보니 흥미로운 부분이 하나 있었는데, 파일 사이즈에 따라 Encryption이 다른 것 같습니다!
사이즈 대략 105mb 이상인 경우에는 "encrypt_large_file"라는 encryption function이 사용됩니다.
아울러 "RmRegisterResources"과 "RmStartSession"과 "RmGetList"과 "GetCurrentProcessId"라는 API들을 process들을 열거하면서
다음 사진의 process들 외에는
악성코드를 쓰는 중인 process들을 죽어버리네요.
process를 제대로 "죽였는지"에 대한 확인 function도 있습니다.
Babkuk 랜섬웨어: 악성코드 분석 처음인 사람 누구나 접할 수 있는 Malware (0) | 2022.11.13 |
---|---|
Darkside 랜섬웨어: 미국 파이프라인 마비 시킨 악성코드 Part 2 (0) | 2022.11.05 |
Darkside 랜섬웨어: 미국 파이프라인 마비 시킨 악성코드 Part 1 (0) | 2022.11.01 |
Wannacry Ransomware Part 2 (0) | 2022.05.19 |
Wannacry Ransomware 분석 및 Malware 방법론 (0) | 2022.05.19 |