WSL, 멀웨어 생태계에서
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
이 기사는 어떻게 악성 JavaScript가 호스트에서 Windows Subsystem for Linux (WSL)를 탐지하고 Windows 사용자 정보 및 디렉토리를 열거할 수 있는지를 설명합니다. 샘플인 ottercookie-socketScript-module-3.js는 Cryxos 정보탈취 패밀리로 분류됩니다. 환경 변수와 파일 시스템 탐침을 사용하여 코드가 WSL 마커를 찾은 다음 WSL 마운트 포인트를 통해 노출된 Windows 데이터를 매핑합니다 (예: /mnt/c/Users 아래의 사용자 경로). 이 설명은 WSL이 토지 활용 능력으로 오용되고 있다는 점을 제시합니다.
조사
분석 결과는 WSL 특유의 아티팩트를 찾고 로그인한 Windows 사용자 이름을 검색하는 is_wsl()과 get_wu()라는 두 함수로 나타납니다. WSL이 존재하면, 멀웨어는 /mnt를 스캔 대상으로 추가하여 마운트된 경로를 통해 호스트 드라이브를 탐색하고 사용자 디렉토리를 열거할 수 있도록 범위를 확장합니다. 샘플의 SHA256 해시는 공개되지 않았지만, 사냥 및 상관관계를 위한 파일 이름은 제공되었습니다.
완화 방안
생산 엔드포인트에서 비정상적인 WSL 사용을 감시하고, wsl$ 공유를 통한 수상한 활동과 마운트된 호스트 볼륨에 대한 예기치 못한 접근을 포함하여 모니터링합니다. 불필요한 경우 WSL을 비활성화하거나 제한하고, WSL 환경 변수를 쿼리하거나 /proc/version을 읽는 스크립트를 탐지합니다. 또한 호스트 프로파일링 중 cmd.exe를 스폰하는 JavaScript 런타임을 감시합니다.
대응
탐지되면 엔드포인트를 격리하고, WSL 마운트 및 접근한 파일의 포렌식 증거를 보존하며 전체 멀웨어 스캔을 실행합니다. ottercookie-socketScript-module-3.js와 관련 페이로드를 제거한 후 WSL 구성이 강화되었거나 비활성화되었는지 확인합니다.
"graph TB %% 클래스 정의 classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef data fill:#ccffcc %% 액션: WSL 환경 확인 action_check_wsl["<b>액션</b> – WSL 환경 확인<br/><b>기법</b> – T1497.002: 가상화/샌드박스 회피: 사용자 활동 기반 검사<br/><b>설명</b>: 적은 사용자의 활동을 바탕으로 가상화 또는 샌드박스 아티팩트를 검사하여 분석을 피합니다."] class action_check_wsl action %% 기법 노드 (T1497.002)의 액션 텍스트 내에서 선택 사항) %% 액션: Windows 사용자 이름 검색 action_retrieve_username["<b>액션</b> – cmd.exe 및 /mnt/c/Users를 통해 Windows 사용자 이름 검색<br/><b>기법</b> – T1056.004: 입력 캡처: 자격 증명 API 훅킹<br/><b>설명</b>: 적은 관련 Windows API를 훅킹하여 자격 증명 입력을 캡처합니다."] class action_retrieve_username action %% 액션: 브라우저 데이터 경로 찾기 action_locate_browser["<b>액션</b> – 브라우저 데이터 경로 찾기<br/><b>기법</b> – T1555.003: 암호 저장소의 자격 증명: 웹 브라우저의 자격 증명<br/><b>설명</b>: 적은 저장된 웹 자격 증명에 접근하기 위해 일반적인 브라우저 디렉토리를 검색합니다."] class action_locate_browser action %% 액션: 우선 디렉토리에 /mnt 마운트 포인트 추가 action_add_mount["<b>액션</b> – 우선 디렉토리에 /mnt 마운트 포인트 추가<br/><b>기법</b> – T1564.004: 아티팩트 숨기기: NTFS 파일 속성<br/><b>설명</b>: 적은 NTFS 속성을 사용하여 마운트 포인트를 숨기고 악성 위치를 우선시합니다."] class action_add_mount action %% 액션: 마운트된 Windows 드라이브에서 파일 수집 action_collect_files["<b>액션</b> – 마운트된 Windows 드라이브에서 파일 수집<br/><b>기법</b> – T1025: 이동식 미디어의 데이터; T1091: 이동식 미디어를 통한 복제<br/><b>설명</b>: 적은 데이터를 수집하고 마운트된 이동식 미디어를 통해 악성 파일을 복제합니다."] class action_collect_files action %% 액션: 브라우저 저장소에서 자격 증명 수확 action_harvest_credentials["<b>액션</b> – 브라우저 저장소에서 자격 증명 수확<br/><b>기법</b> – T1555.003: 암호 저장소의 자격 증명: 웹 브라우저의 자격 증명<br/><b>설명</b>: 저장된 암호, 쿠키 및 세션 토큰을 브라우저에서 추출합니다."] class action_harvest_credentials action %% 액션: 수집된 데이터를 통한 잠재적 횡적 이동 action_lateral_movement["<b>액션</b> – 수집된 데이터를 통한 잠재적 횡적 이동<br/><b>설명</b>: 수확한 자격 증명과 파일을 사용하여 네트워크 내에서 횡적 이동을 수행합니다."] class action_lateral_movement action %% 연결 action_check_wsl –>|leads_to| action_retrieve_username action_retrieve_username –>|leads_to| action_locate_browser action_check_wsl –>|enables| action_add_mount action_add_mount –>|enables| action_collect_files action_locate_browser –>|enables| action_harvest_credentials action_collect_files –>|enables| action_lateral_movement action_harvest_credentials –>|supports| action_lateral_movement "
공격 흐름
시뮬레이션 실행
전제 조건: 원격측정 및 기본선 사전 비행 검사가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적 대행 기술 (TTP)의 정확한 실행을 자세히 설명합니다. 명령과 서사는 TTPs로 식별된 것과 직접적으로 반영해야 하며, 탐지 논리에 기대되는 정확한 원격 측정을 생성해야 합니다.
-
공격 서사 및 명령:
공격자는 피해자 기계에 초기 발판을 얻었으며, 사용자 이름을 열거하여 페이로드를 개인화하려고 합니다. 눈에 띄지 않기 위해, 적은 네이티브 Windows 명령 셸(Living-off-the-Land)을 사용하여 정확히
echo %USERNAME%명령을 실행하여 환경 변수를 현재 사용자 이름으로 확장합니다. 이 활동은 명령줄과 함께cmd.exe프로세스 생성 이벤트를 발생시켜, 탐지 규칙의 서명과 일치합니다.echo %USERNAME%, matching the detection rule’s signature. -
회귀 테스트 스크립트:
# cmd.exe를 통해 사용자 이름을 검색하는 Cryxos 트로이 목마 시뮬레이트 $cmd = "cmd.exe" $args = "/c echo %USERNAME%" Write-Host "실행 중: $cmd $args" Start-Process -FilePath $cmd -ArgumentList $args -NoNewWindow -Wait -
정리 명령:
# 지속적 아티팩트 없음; 남아있는 cmd.exe 인스턴스가 완료되었는지 확인 Get-Process -Name cmd -ErrorAction SilentlyContinue | Stop-Process -Force