Malware

[Malware Analysis] Raccoon Stealer 2.0(v2) - (2)

Y30L 2024. 3. 2. 05:21

Raccoon Stealer v2(Ref : The Hacker News)

 

1. 개요


Raccoon Stealer v1은 2019년 4월 언더그라운드 포럼에서 서비서형 악성코드(MaaS, Malware-as-a-Service)로 판매되며 발견된 악성코드이다. 2019년 이후에도 꾸준하게 등장하였으나 2022년 7월 변종인 Raccoon Stealer 2.0(v2)가 발견되었다.

 

2. 샘플 및 분석 환경


분석 대상 샘플 및 Hash Value, Time Stamp는 아래와 같다.

Sample Information

 

분석 Windows 10 가상환경에서 진행하였으며 IDA Version 및 사용한 Debugger 정보는 아래와 같다.

Analysis Information

 

 

3. 상세 분석


지난 포스팅했던 공유폴더 경로 및 경로 설정 행위 부분 이후 루틴에 대해 분석한 결과를 포스팅하고자 한다.

 

[Malware Analysis] Raccoon Stealer 2.0(v2) - (1)

1. 개요 Raccoon Stealer v1은 2019년 4월 언더그라운드 포럼에서 서비서형 악성코드(MaaS, Malware-as-a-Service)로 판매되며 발견된 악성코드이다. 2019년 이후에도 꾸준하게 등장하였으나 2022년 7월 변종인 Rac

y30l.tistory.com

 

3.8 컴퓨터 상세 정보 탈취

설정 정보의 sstmnfo_ 필드를 참조하여 대상 컴퓨터 관련 정보를 탈취한다.

Figure 1. List of computer-related information stolen
Figure 2. List of computer-related information stolen (detailed)

 

탈취한 정보(인자명 : computer_info)를 Internet_fun의 인자로 하여 탈취를 진행한다.(서버로 내보낸다.)

Figure 3. Internet_fun()

 

Internet_fun()의 내부는 다음과 같다.

우선 연결하고자 하는 주소가 http로 시작하는지 확인한 후 http로 시작하지 않는다면 해당 함수를 종료한다.

Figure 4. Inside Internet_fun()

 

이후 http일 경우 80포트, https일 경우 443포트로 지정한 후 POST 요청을 보낸다. POST 요청이 정상적으로 요청되었다면 add_data(computer_info, 컴퓨터 관련 정보)를 인자로 하여 HttpSendRequest()를 실행하여 서버로의 정보 탈취를 수행한다.

Figure 5. HttpOpenRequestW()

 

 

3.9 sqlite3.dll 로드 및 크롬 관련 정보 탈취

sqlite3.dll을 로드하고 사용자의 크롬 데이터를 탈취하기 위한 google_data_search()함수를 실행한다.

Figure 6. sqlite3.dll Load

 

google_data_search() 함수 내부는 공유 폴더를 다시 로드하고 실제 정보를 탈취하는 chrome_info_steal() 함수를 실행한다. 

Figure 7. chrome_info_steal()

 

chrome_info_steal()는 우선적으로 공유 폴더의 하위 경로 중 User Data가 존재하는지 확인한다. 해당 경로의 존재 유무를 확인하는 원인은 C:\\Users\\사용자명\\AppData\\Local\\Google\\Chrome\\User Data에 사용자 관련 Chrome 정보가 존재하기 때문이다.

Figure 8. "User Data" Path Check

 

User Data 경로가 존재한다면 Local State 파일에 접근하여 해당 파일을 읽고 데이터를 복호화할 encrypted_key와 Chrome Version Information인 stats_version을 파싱한다.

Figure 9. Folding Local State Files
Figure 10. Extract encrypted_key and stats_version

 

Local State에서 원하는 정보를 추출(파싱)한 이후 Login Data 문자열을 결합하여 C:\\Users\\사용자명\\AppData\\Local\\Google\\Chrome\\User Data\\Login Data 경로를 완성한다. 이후 랜덤한 파일을 생성하여 Login Data파일을 랜덤파일로 복사한다.

Figure 11. Combine Login Data Path
Figure 12. Random File Create
Figure 13. random_string_fun()
Figure 14. Login Data Copy

 

위의 과정에서 추출 및 탈취한 데이터는 sqlite3_open() 을 통해 데이터 베이스를 오픈하고 SQL 쿼리문로 정보탈취가 이루어진다.

Figure 15. Data Base Open

 

Login Data 이외에도 Chrome과 관련된 모든 정보는 동일한 루틴으로 이루어지며 탈취 정보 목록은 아래와 같다.

Figure 16. List of hijack information

 

 

3.10 nss.dll 로드 및 FireFox 관련 정보 탈취

LoadLibraryW()함수를 통해 nss3.dll을 로드한 후 FireFox 관련 정보를 탈취하는 Roaming_data()함수로 진입한다.

Figure 17. nss3.dll Load
Figure 18. Roaming_data()

 

Roaming_data()도 Chrome 탈취 과정과 유사하다. Firefox 정보는 FireFox\\Profiles 경로에 존재하기 때문에 해당 경로를 로드하고 진입한다. 

Figure 19. Profiles Path Check

 

Profiles이 유효한 경로일 경우 get_firefox_info() 함수로 진입하여 실제 정보 탈취 행위를 진행한다.

Figure 20. get_firefox_info()

 

get_firefox_info() 함수도 랜덤 파일을 생성한 후 탈취 데이터를 복사하고 SQL 쿼리를 사용하여 탈취한다. 이는 위에 존재하는 Chrome 정보 탈취 과정과 동일하기에 생략하였다. 사용된 SQL 쿼리문 및 탈취 정보 리스트는 아래와 같다.

Figure 21. List of hijack Information(Firefox)

 

FireFox, Chrome 정보 탈취 루틴 사이에 wlts, grbr, tlgrm_, scrnht 문자열을 검색하는 루틴이 존재하였으나 C&C 서버가 다운되어 정확한 분석은 하지 못하였다. 하지만, 문자열로 추측할 때 텔레그램 관련 정보 탈취, 지갑 주소 관련 정보 탈취와 같은 행위를 한다고 추측할 수 있다.

Fiture 22. Telegram String Check
Figure 23. Copy Telegram Data
Figure 24. POST(telegram_data)

 

 

3.11 암호화폐 지갑의 자격 증명 정보 탈취

암호화폐 지갑의 자격 증명 탈취를 위해 Roaming 디렉토리 내부에 wallet.dat 파일이 존재하는지 검사하고 존재할 경우, 랜덤파일에 wallet.dat 데이터를 복사(wallet_data_steal())한다.

Figure 25. wallet.dat file Path Check
Figure 26. Copy wallet.dat

 

Roaming 경로 이외에도 wallet.data 파일이 존재하는지 확인하기 위해 논리드라이브 또한 검사한 후 논리드라이브에 wallet.dat 파일이 존재한다면 해당 파일 또한 탈취한다.

Figure 27. wallet.dat file Path Check(Logiacal Drive)

 

wallet.dat 파일을 모두 복사한 랜덤 파일을 C&C서버로 전송한다.

Figure 28. RandomFile(wallet.dat) Read
Figure 29. HttpSendRequests(wallet.dat)

 

 

3.11 현재 화면 이미지 정보(스크린샷) 탈취

현재 화면 스크린샷 정보를 탈취하기 위해 현재 사용자가 사용하고 있는 화면 스크린샷을 탈취하기 위해 메모리 DC 객체를 생성하고 크기 및 해상도 정보를 수집한다.

Figure 30. Collect PC screen information

 

이후 윈도우 화면과 동일한 비트맵을 생성하고 비트맵을 랜덤 파일에 복사한다.

Figure 31. Generate a bitmap that looks like a window screen
Figure 32. List of hijack Information(Screen Shot)

 

실제 랜덤 파일을 열어보았을 때 사용중이던 화면과 동일한 이미지가 탈취된 것을 확인할 수 있다.

(당시 x64dbg로 분석 중이었으므로 Debugger 화면이 캡쳐)

Figure 33. Screen Shot Image

 

 

3.12 악성 행위에 사용한 .dll 파일 자가 삭제

악성 행위에 사용된 nss3.dll, sqlite3.dll 파일을 삭제한다. 이는 흔적을 최소화하기 위한 행위로 추측된다.

Figure 34. Delete dll Files

 

 

4. MITRE ATT&CK Mapping

Figure 35. MITRE ATT&CK Mapping