1. 개요
Raccoon Stealer v1은 2019년 4월 언더그라운드 포럼에서 서비서형 악성코드(MaaS, Malware-as-a-Service)로 판매되며 발견된 악성코드이다. 2019년 이후에도 꾸준하게 등장하였으나 2022년 7월 변종인 Raccoon Stealer 2.0(v2)가 발견되었다.
2. 샘플 및 분석 환경
분석 대상 샘플 및 Hash Value, Time Stamp는 아래와 같다.
분석 Windows 10 가상환경에서 진행하였으며 IDA Version 및 사용한 Debugger 정보는 아래와 같다.
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_ 필드를 참조하여 대상 컴퓨터 관련 정보를 탈취한다.
탈취한 정보(인자명 : computer_info)를 Internet_fun의 인자로 하여 탈취를 진행한다.(서버로 내보낸다.)
Internet_fun()의 내부는 다음과 같다.
우선 연결하고자 하는 주소가 http로 시작하는지 확인한 후 http로 시작하지 않는다면 해당 함수를 종료한다.
이후 http일 경우 80포트, https일 경우 443포트로 지정한 후 POST 요청을 보낸다. POST 요청이 정상적으로 요청되었다면 add_data(computer_info, 컴퓨터 관련 정보)를 인자로 하여 HttpSendRequest()를 실행하여 서버로의 정보 탈취를 수행한다.
3.9 sqlite3.dll 로드 및 크롬 관련 정보 탈취
sqlite3.dll을 로드하고 사용자의 크롬 데이터를 탈취하기 위한 google_data_search()함수를 실행한다.
google_data_search() 함수 내부는 공유 폴더를 다시 로드하고 실제 정보를 탈취하는 chrome_info_steal() 함수를 실행한다.
chrome_info_steal()는 우선적으로 공유 폴더의 하위 경로 중 User Data가 존재하는지 확인한다. 해당 경로의 존재 유무를 확인하는 원인은 C:\\Users\\사용자명\\AppData\\Local\\Google\\Chrome\\User Data에 사용자 관련 Chrome 정보가 존재하기 때문이다.
User Data 경로가 존재한다면 Local State 파일에 접근하여 해당 파일을 읽고 데이터를 복호화할 encrypted_key와 Chrome Version Information인 stats_version을 파싱한다.
Local State에서 원하는 정보를 추출(파싱)한 이후 Login Data 문자열을 결합하여 C:\\Users\\사용자명\\AppData\\Local\\Google\\Chrome\\User Data\\Login Data 경로를 완성한다. 이후 랜덤한 파일을 생성하여 Login Data파일을 랜덤파일로 복사한다.
위의 과정에서 추출 및 탈취한 데이터는 sqlite3_open() 을 통해 데이터 베이스를 오픈하고 SQL 쿼리문로 정보탈취가 이루어진다.
Login Data 이외에도 Chrome과 관련된 모든 정보는 동일한 루틴으로 이루어지며 탈취 정보 목록은 아래와 같다.
3.10 nss.dll 로드 및 FireFox 관련 정보 탈취
LoadLibraryW()함수를 통해 nss3.dll을 로드한 후 FireFox 관련 정보를 탈취하는 Roaming_data()함수로 진입한다.
Roaming_data()도 Chrome 탈취 과정과 유사하다. Firefox 정보는 FireFox\\Profiles 경로에 존재하기 때문에 해당 경로를 로드하고 진입한다.
Profiles이 유효한 경로일 경우 get_firefox_info() 함수로 진입하여 실제 정보 탈취 행위를 진행한다.
get_firefox_info() 함수도 랜덤 파일을 생성한 후 탈취 데이터를 복사하고 SQL 쿼리를 사용하여 탈취한다. 이는 위에 존재하는 Chrome 정보 탈취 과정과 동일하기에 생략하였다. 사용된 SQL 쿼리문 및 탈취 정보 리스트는 아래와 같다.
FireFox, Chrome 정보 탈취 루틴 사이에 wlts, grbr, tlgrm_, scrnht 문자열을 검색하는 루틴이 존재하였으나 C&C 서버가 다운되어 정확한 분석은 하지 못하였다. 하지만, 문자열로 추측할 때 텔레그램 관련 정보 탈취, 지갑 주소 관련 정보 탈취와 같은 행위를 한다고 추측할 수 있다.
3.11 암호화폐 지갑의 자격 증명 정보 탈취
암호화폐 지갑의 자격 증명 탈취를 위해 Roaming 디렉토리 내부에 wallet.dat 파일이 존재하는지 검사하고 존재할 경우, 랜덤파일에 wallet.dat 데이터를 복사(wallet_data_steal())한다.
Roaming 경로 이외에도 wallet.data 파일이 존재하는지 확인하기 위해 논리드라이브 또한 검사한 후 논리드라이브에 wallet.dat 파일이 존재한다면 해당 파일 또한 탈취한다.
wallet.dat 파일을 모두 복사한 랜덤 파일을 C&C서버로 전송한다.
3.11 현재 화면 이미지 정보(스크린샷) 탈취
현재 화면 스크린샷 정보를 탈취하기 위해 현재 사용자가 사용하고 있는 화면 스크린샷을 탈취하기 위해 메모리 DC 객체를 생성하고 크기 및 해상도 정보를 수집한다.
이후 윈도우 화면과 동일한 비트맵을 생성하고 비트맵을 랜덤 파일에 복사한다.
실제 랜덤 파일을 열어보았을 때 사용중이던 화면과 동일한 이미지가 탈취된 것을 확인할 수 있다.
(당시 x64dbg로 분석 중이었으므로 Debugger 화면이 캡쳐)
3.12 악성 행위에 사용한 .dll 파일 자가 삭제
악성 행위에 사용된 nss3.dll, sqlite3.dll 파일을 삭제한다. 이는 흔적을 최소화하기 위한 행위로 추측된다.
4. MITRE ATT&CK Mapping
Raccoon Stealer 및 AxLocker 랜섬웨어를 제외한 다른 샘플에 대한 분석 보고서는 아래 링크에서 확인할 수 있습니다.
[악성코드 분석] 그 외 보고서📑
이전에 포스팅 되어 있는 AxLocker Ransomware, Raccoon Stealer 2.0 (1) 및 (2) 악성코드 이외에 연구센터 활동 당시 보고서입니다 :) https://y30l.notion.site/134b2d6ad9918007bf10c442b9d41b1b?pvs=4 악성코드 분석 | NotionMad
y30l.tistory.com
'Malware' 카테고리의 다른 글
[Malware Analysis] AxLocker Ransomware (0) | 2024.04.12 |
---|---|
[Malware Analysis] Raccoon Stealer 2.0(v2) - (1) (1) | 2024.02.27 |
[Paper Review] Feature Selection for Malware Detection Based on Reinforcement Learning (0) | 2023.12.14 |