윈도우즈 채굴말웨어 공격 분석 및 대응

채굴말웨어 공격

  • 전형적 행동: CPU 사용률 장기간 급증, 프로세스명은 일반적으로 무작위 문자 또는 시스템 프로세스 위장(svchost.exe 등), 지역 외 채굴 풀 IP에 지속 연결
  • 응급 조치: netstat -ano로 채굴 풀 연결 확인, 도메인 역추적; 자동 실행 항목/예약 작업 확인으로 채굴 프로그램 시작 경로 찾기; 숨겨진 계정 및 악성 파일 제거
  • 윈도우 시스템에서의 공격은 일반적으로 침투 삽입 → 지속성 생존 → 채굴 실행 → 은취 회피 4단계로 진행됨

환경 설정 - 방화벽 비활성화

필요 도구:

  • D방패: 말웨어 파일 탐지
  • Exeinfo PE: 셸 도구로 프로그램의 패킹 도구나 셸 타입 식별
  • python-exe-unpacker: 실행 파일을 파이썬 바이트코드로 역컴파일
  • pycdc: 바이트코드를 완전한 파이썬 소스코드로 역컴파일 github.com

파이썬 코드 실행 경로 소스코드(.py) → 어휘/구문 분석 → AST(추상 구문 트리) → 바이트코드(.pyc) → 파이썬 가상머신 → 실행

파이썬 역컴파일 기본 단계 바이트코드 파일(.pyc) → 파일 헤더 분석 → 코드 객체 추출 → 바이트코드 역어셈블리 → AST 재구성 → 파이썬 소스코드 생성

1단계 셸 파일 탐색

요구 사항에 따라 셸 파일을 찾아 비밀번호 획득

데스크톱에서 phpstudy 발견 방법1: D방패 업로드하여 말웨어 파일 탐지

의심스러운 말웨어 파일 발견

방법2: 웹사이트 로그 확인

동시에 말웨어 파일 경로와 공격자 IP 획득

shell.php 파일 내용 확인

명백히 빙혈 트래픽 특징, 셸 비밀번호가 빙혈 기본 연결 비밀번호 rebeyond로 확인됨

2단계 숨겨진 계정 탐색

관리자 권한으로 터미널 열기

일반 명령어:

  • net localgroup administrators
  • wmic useraccount
  • Get-LocalUser(PowerShell)
  • reg query HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

참고: 레지스트리 편집기에서 경로 확인 필요

숨겨진 계정: hack168$

3단계 공격자 IP 주소 획득

윈도우 보안 로그 경로: C:\Windows\System32\winevt\Logs\Security.evtx

(1) 이벤트 ID 4720(사용자 계정 생성) 필터링, 공격자가 2024/2/26 23:01:13에 숨겨진 계정 hack168$ 생성

(2) 이벤트 ID 4732(사용자를 로컬 그룹에 추가) 필터링, MemberSid와 hack168$에 해당하는 Sid가 동일, 공격자가 2024/2/26 23:01:37에 계정을 관리자 그룹에 추가

(3) 이벤트 ID 4624(성공적인 로그인) 필터링, 공격자가 2024/2/26 23:02:23에 본 컴퓨터에 로그인, 공격자 IP 192.168.126.1 획득

4단계 공격자 계정으로 로그인

관리자 권한으로 hack168$ 계정 비밀번호 수정 net user hack168$ 12345aaa!@#

데스크톱에서 미확인 프로그램 발견

Exeinfo PE 파일로 셸 확인

x64 - [PyInstaller v3.6.1 - 200520] 이는 64비트 프로그램으로 PyInstaller 3.6.1 버전으로 패킹됨 python:python38.dll 프로그램 내부에 파이썬 3.8 런타임 라이브러리 포함

따라서 python-exe-unpacked 도구를 사용해 exe 파일을 바이트코드로 역컴파일할 수 있음 이 실험 환경에는 파이썬 환경이 없으므로 직접 업로드 필요(예: python311)

생성된 역컴파일 폴더에서 kuang 동명 파일 찾기

확장자를 pyc(바이트코드 파일)로 변경

uncompyle6를 설치하고 사용해 pyc 파일을 읽을 수 있는 파이썬 코드로 역컴파일

C:\Users\Noahxxx\AppData\Local\Programs\Python\Python311\python.exe -m pip install uncompyle6
C:\Users\Noahxxx\AppData\Local\Programs\Python\Python311\Scripts\uncompyle6 Kuang.pyc > Kuang_source.py

Unknown magic number 227 오류는 Kuang.pyc의 파일 헤더가 PyInstaller 패킹 시 수정되어 표준 magic number 헤더가 누락되었기 때문입니다. 이는 악성 소프트웨어가 자주 사용하는 반분석 기법입니다.

해결 방법: 바이트코드가 수정된 파일 헤더를 정상 값으로 대체, 즉 파일 시작 부분에 파이썬 3.8에 해당하는 magic number(55 0D 0D 0A)를 삽입한 후 pycdc 도구를 사용해 역컴파일합니다.

정상적인 pyc 파일을 열어 올바른 파일 헤더 복사

kuang.pyc의 시작 부분에 삽입

역컴파일 성공, 악성 채굴 프로그램 소스코드 획득 (multiprocessing 모듈을 사용하여 서버에서 CPU 코어 수와 동일한 프로세스를 시작하고, 각 프로세스가 cpu_intensive_task() 함수를 실행하며, 지속적으로 공격자의 채굴 풀 주소 http://wakuang.zhigongshanfang.top에 요청을 보내 채굴 결과를 제출하고 작업을 수신)

채굴 풀 주소는 http://wakuang.zhigongshanfang.top입니다

핵심 공격 정보(통과 조건)

핵심 정보 결과
공격자 셸 비밀번호 빙혈 기본 비밀번호 rebeyond
공격자 IP 주소 192.168.126.1
숨겨진 계정 이름 hack168$($가 포함된 숨겨진 관리자 계정)
채굴 프로그램 채굴 풀 도메인 http://wakuang.zhigongshanfang.top

핵심 탐색 프로세스

  1. 셸 파일 탐색: D방패 / 웹사이트 로그를 통해 빙혈 말웨어 파일 shell.php를 위치시키고, 기본 연결 비밀번호 rebeyond 추출;
  2. 숨겨진 계정 발견: net localgroup administrators/reg query 등 명령어를 사용하여 공격자가 생성한 숨겨진 계정 hack168$ 발견;
  3. 공격자 IP 추적: 윈도우 보안 로그(Security.evtx) 분석, 이벤트 ID 4624(성공적인 로그인) 필터링을 통해 공격자 IP 192.168.126.1 위치 확인;
  4. 채굴 프로그램 분석:
  • 셸 확인을 통해 Kuang.exe가 PyInstaller 3.6.1로 패킹된 파이썬 채굴 프로그램임 확인;
  • 역컴파일 시 magic number 변조 문제 발생, Kuang.pyc 시작 부분에 파이썬 3.8 표준 헤더 55 0D 0D 0A 삽입 후 pycdc로 성공적으로 역컴파일;
  • 채굴 프로그램 핵심 동작 추출: 다중 프로세스가 CPU를 점유해 채굴하고 지정된 채굴 풀에 계산력 결과를 제출하기 위해 연결.

핵심 기술 요소

  • 파이썬 프로그램 역컴파일 핵심: .exe(PyInstaller 패킹) → .pyc(바이트코드) → magic number 보완 → pycdc 역컴파일 → 소스코드;
  • 악성 채굴 프로그램 특징: CPU 사용률 급증, 백그라운드 무음 실행, 채굴 풀 도메인에 지속 연결, 숨겨진 계정 생성으로 지속성 구현;
  • 윈도우 로그 추적 핵심 이벤트 ID: 4720(계정 생성), 4732(관리자 그룹 추가), 4624(성공적인 로그인).

핵심 조치 권고

  • Kuang.exe 프로세즉 즉시 종료, 채굴 프로그램 및 역컴파일 잔여 파일 삭제;
  • 숨겨진 계정 hack168$ 삭제, 서버 관리자 비밀번호 변경;
  • 공격자 IP 192.168.126.1 및 채굴 풀 도메인 wakuang.zhigongshanfang.top 차단;
  • 빙혈 말웨어 파일 제거, 서버 원격 접근, 방화벽 등 보안 설정 강화.

태그: 윈도우-보안 채굴말웨어 포렌식 파이썬-역컴파일 시스템-로그

7월 7일 19:58에 게시됨