상세 컨텐츠

본문 제목

너구리가 도둑질한다: RacoonStealer 악성코드 분석

악성코드 Malware/Stealer

by 0xmh 2022. 7. 13. 16:01

본문

728x90

저번 블로그는 Oski Stealer를 분석해 보았는데 다른 Stealer들도 비슷하게 작동하는가~라는 생각이 들어서 이번에는 다른 Stealer를 분석하고자 하고 오늘 분석할 Stealer는 너구리... RacoonStealer입니다.

bleepingcomputer 뉴스에 따르면 우-러 전쟁에서 사망한 개발자때문에 RacoonStealer는 운영을 잠깐 종료했다가 이제 새로운 버전을 개발했다고 합니다. 

 

샘플 다운로드 --> https://bazaar.abuse.ch/sample/022432f770bf0e7c5260100fcde2ec7c49f68716751fd7d8b9e113bf06167e03/

 

String & Function Encryption

RacoonStealer도 Oski Stealer처럼 Base64하고 RC4 encryption을 사용하지만 LoadLibrary로 로딩되는 DLL들하고 GetProcAddress로 로딩되는 function들은 암호화되지 않으나 C2 통신을 위한 string들은 암호화되어 있습니다.

1. DLL Loading
2. Function Setup

String decryption을 위한 RC4 key는 두 개가 있는데 하나는 일반 string들을 위한 key이고 다른 key는 C2서버의 key입니다.

일반 String들은 "edinayarossiya"라는 RC4 key 암호화되어 있고 cyberchef로 쉽게 decrypt할 수 있습니다.

3. String encryption

"59c9737264c0b3209d9193b8ded6c127"인 key로는 C2 서버 아이피 주소를 받을 수 있습니다 --> hxxp://51[.]195.166[.]184/

4. C2 encryption

Mutex

그다음은 RacoonStealer가 이미 작동 중인지를 확인합니다. 그렇지 않은 경우에는 "8724643052" 라는 mutex를 만듭니다.

5. Check Mutex

Language Check

감염된 시스템의 LocalName을 확인하는 체크가 있다는 것을 확인할 수 있는데 "ru"라는 string은 아마 russian 혹은 russia라는 뜻일 것입니다. 하지만 "ru" string이 있든 없든 악성코드의 흐름이 달라지지 않습니다.

6. LocalName

Token Information

OpenProcess의 API로 현재 process를 열어 GetTokenInformation으로 그 process에게 무슨 권한이 있는지 확인합니다. 그 function의 결과를 "S-1-5-18"인 Security Identifier와 비교하는 것이 보이는데 S-1-5-18는 NT Authority\System입니다. 

7.Token Information

그 이후는 CreateToolhelp32Snapshot와 Process32First와 Process32First 시스템의 Process들을 열거하는 것이 확인되지만 이 기능도 악성코드 흐름에 별 영향을 주지 않습니다.

8. Enumerate Processes

Machine GUID & Username 

C2 서버에 연결하기 전에 Software\\Microsoft\Cryptography라는 Registry Key로 악성코드는 현 시스템의 machineguid를 받고 GetUserNameW라는 API로 유저 이름을 받습니다.

9. Machine GUID

너구리가 C2 서버에 연결하기 전에 machineID하고 유저 이름을 concat하는 것이 보입니다.

10. Concat User Info

Concat을 하고 나서 그 정보를 POST request로 통신서버에게 보냅니다.

11. C2 connection

Download DLLs

너구리도 정보 탈취 악성코드이므로 Oski처럼 정보를 불러올 수 있는 .dll들이 필요합니다. 통신 서버에 연결하여 InternetReadFile로 그 .dll들을 받습니다.

sqlite3.dll, mozglue.dll, nss3.dll, msvcp140.dll, nssdbm3.dll, freebl3.dll, softokn3.dll

12. Get DLLs

System Enumeration

정보를 탈취하기 전에 RacoonStealer는 먼저 감염된 시스템에 대한 정보를 열거합니다.

User CID

Timezone

Windows Currentversion

System Architecture

CPU Information

RAM Information

Display Information

Installed Software

위 정보도 역시 C2서버에게 보내질 것입니다.

13. System Enumeration

Sqlite Data Extraction

탈취를 위한 sqlite 기능들의 initialization이 보입니다.

sqlite_prepare_v2

sqlite3_open16

sqlite3_finalize

sqlite3_close

sqlite3_step

sqlite3_column_text16

sqlite3_column_blob

너구리는 sqlite3.dll를 활용해서, 신용카드 정보오와 쿠키들과 브라우저들의 비밀번호들을 탈취하고자 합니다.

SELECT origin_url, username_value, password_value FROM logins

SELECT host_key, path, is_secure , expires_utc, name, encrypted_value FROM cookies

SELECT name, value FROM autofill

SELECT name_on_card, card_number_encrypted, expiration_month, expiration_year FROM credit_cards

14. Sqlite Steal

모든 탈취 function들의 흐름이 매우 비슷하므로 (탈취 --> C2 서버 전송) 스크린 캡처를 올리지 않겠습니다.

 

NSS Data Extraction

nss3.dll로 정보를 탈취하는 흐름도 역시 비슷합니다.

15. NSS

SELECT host, path, isSecure, expiry, name, value FROM moz_cookies

SELECT fieldname, value FROM moz_formhistory

Search Wallets

마찬가지로 악성코드는 wallets를 찾을 때도 먼저 pattern을 정해서 그 pattern에 맞는 파일을 FindFirstFileW하고 FindNextFileW로 찾아내고 통신서버에게 보냅니다. "wallet.dat"를 찾아내고자 하는 function도 있는데 밑에 있는 사진하고 똑같다고 봐도 좋습니다.

16. Search Wallets

Grabber

너구리에게도 Grabber 기능도 있으며 ".lnk"인 파일들을 찾아내고자 하는 것 같습니다... 그 이유는...?

17. Grabber

마지막으로는 RacoonStealer는 Telegram에 대한 데이터도 탈취하고자 합니다.

 

Screenshot

GetDC, CreateCompatibleDC, CreateCompatibleBitmap

18. Screenshot

Loader

너구리에게 Loader 기능도 있습니다. 통신서버에 연결해서 공격자가 공격의 다음 "단계"를  감염된 시스템에 올릴 수 있습니다.

19. Get File
20. Execute File

Summary

너구리가 Oski Stealer하고 매우 비슷하고 특히 정보를 탈취하는 방식 거의 똑같습니다.

하지만 너구리는 Anti Analysis 체크들이 아예 없습니다. Oski는 감염된 시스템의 언어 설정을 확인하면서 그중에 Kazakhsta, Russia, Ukraine, Belarus, Uzbekistan, Azerbaijan가 있으면 종료됩니다. 너구리는 Local Name를 확인하긴 하지만 그 결과를 가지고 아무것도 하지 않습니다. CreateToolhelp32Snapshot하고 프로세스의 권한을 열거하는 기능도 잘 활용하지 않는 것을 보니 RacoonStealer는 아직도 개발 중인 것 같습니다.

 

관련글 더보기