
Stuxnet 웜의 교육용 재구성 버전으로, 악성코드 분석 및 방어 연구를 위해 제작되었습니다. 권한 상승, 루트킷 기능, 그리고 Siemens Step 7 및 S7 PLC를 대상으로 하는 PLC 페이로드 주입 모듈을 포함합니다.
이 저장소는 악명 높은 Stuxnet 웜의 순수 교육 및 연구 목적의 재구성본을 포함하고 있습니다. 이는 2010년에 발견된 원본 바이너리 샘플에 대해 글로벌 보안 연구 커뮤니티가 수행한 수많은 리버스 엔지니어링 작업의 산출물입니다.
고지 사항: 이 코드는 학술 연구, 악성코드 분석 교육, 방어적 연구 목적으로만 제공됩니다. 악의적인 목적으로 사용되도록 의도된 것이 아니며, 배포 가능한 악성코드도 아닙니다. 저자와 기여자들은 불법적이거나 비윤리적인 활동을 용납하지 않습니다.
목차
개요
핵심 구성 요소
기술 아키텍처
빌드 지침
사용법
법적 고지 및 라이선스
감사의 말
Stuxnet은 산업 제어 시스템(ICS)에 물리적 파괴를 일으키도록 설계된 최초의 알려진 사이버 무기로 널리 인정받고 있습니다. 이는 특히 지멘스 Step 7 소프트웨어와 S7-300/400 PLC를 표적으로 삼았으며, 궁극적으로 주파수 변환기 드라이브를 조작하여 원심분리기 로터를 손상시켰습니다.
이 저장소는 디컴파일된 바이너리에서 파생된 재구성된 소스 코드입니다. 원래의 로직과 공격 벡터를 보존하면서도 가독성과 분석을 위해 코드베이스를 구조화했습니다.
주요 특징
표적: 지멘스 SIMATIC WinCC, Step 7 및 S7 PLC.
전파: USB 드라이브(LNK 익스플로잇), 네트워크 공유(Print Spooler), P2P(Peer-to-Peer).
페이로드: 모터 주파수를 변경하기 위한 PLC 블록 로직(OB1/OB35) 수정.
은닉: 파일, 프로세스 및 레지스트리 은닉을 위한 고급 루트킷 기능(MRxCls.sys, MRxNet.sys).
이 저장소는 원본 악성코드 분석 중 식별된 주요 모듈별로 구성되어 있습니다.
모듈: 로더/드로퍼 파일명: winsta.exe, ~WTR4141.tmp 설명: 초기 감염, 권한 상승 및 기타 구성 요소 배포를 담당하는 진입점.
모듈: 권한 상승 파일명: ~WTR4132.tmp 설명: Win32k.sys 취약점을 악용하여 시스템 수준 권한을 획득합니다.
모듈: S7 후크 라이브러리 파일명: s7otbxdx.dll 설명: 원본 s7otbxsx.dll의 악의적인 대체품. Step 7과 PLC 간의 통신을 가로챕니다.
모듈: Step7 후크 라이브러리 파일명: s7aaapix.dll 설명: Step 7 엔지니어링 환경 내에서 AUT(자동화 도구) API 호출을 가로챕니다.
모듈: 루트킷(파일 시스템) 파일명: mrxcls.sys 설명: SSDT 후킹을 통해 Stuxnet 파일, 프로세스 및 레지스트리 키를 숨기는 데 사용되는 커널 모드 드라이버.
모듈: 루트킷(네트워크) 파일명: mrxnet.sys 설명: 악성 파일을 숨기기 위해 파일 시스템 요청을 필터링하고 P2P 전파를 활성화합니다.
모듈: 페이로드(공격) 파일명: s7plcmain 설명: 원심분리기를 손상시키는 "주파수 변조" 공격을 담당하는 핵심 로직.
다음은 Stuxnet 프레임워크의 높은 수준의 실행 흐름을 설명합니다.
1단계: 초기 감염 벡터(USB/네트워크) 2단계: 드로퍼 및 권한 상승 3단계: 환경 확인 4a단계: 표적 발견(지멘스 소프트웨어) -> S7 후크 설치 4b단계: 비표적 -> 자체 파괴/대기 5단계: PLC 쓰기 모니터링 6단계: OB1/OB35 쓰기 감지 -> 페이로드 주입 7단계: 주파수 출력 수정 8단계: 원심분리기 물리적 손상 9단계: 루트킷 설치(MRxCls) 10단계: 파일 및 레지스트리 은닉 11단계: 네트워크 모듈 로드(MRxNet) 12단계: P2P 전파
실행 흐름
환경 정찰: 웜은 특정 지멘스 소프트웨어(WinCC, Step 7)와 특정 표적 PLC(S7-315, S7-417)의 존재를 확인합니다.
DLL 주입: s7blk_write 함수 호출을 가로챕니다.
코드 주입: 사용자가 프로젝트를 PLC에 다운로드하면 악성 코드가 OB1/OB35 블록에 추가됩니다.
물리적 영향: PLC는 조작된 코드를 실행하여 연결된 가변 주파수 드라이브(VFD)가 비정상적인 주파수(고/저)로 회전하게 하여 기계적 손상을 초래합니다.
빌드 지침
중요: 이 코드베이스는 통제된 가상 환경에서의 정적 분석 및 디버깅을 위해 설계되었습니다. 중요 인프라에 실시간 배포하기 위한 것이 아닙니다.
요구 사항
빌드 환경: Microsoft Visual Studio 2019/2022(Windows) 또는 mingw-w64.
대상 OS: Windows XP / Windows 7(드라이버 호환성용).
드라이버 키트: Windows Driver Kit(WDK) 7600(커널 드라이버 컴파일 시).
사용자 모드 모듈 빌드
저장소 클론
git clone https://github.com/Sadpainy/Stuxnet.git cd stuxnet-analysis
메인 드로퍼 빌드
cd winsta nmake /f Makefile.win
S7 후크 라이브러리 빌드
cd ../s7otbxdx cl /LD s7otbxdx.c user32.lib ws2_32.lib
이 코드는 다음을 위해 사용됩니다:
악성코드 분석: APT(고급 지속 위협)에 사용된 특정 코드 로직 이해.
방어적 연구: ICS 보안 도구용 탐지 시그니처 개발(예: YARA 규칙, Snort 시그니처).
학술 연구: 사이버 보안과 중요 인프라 보호의 교차점 검토.
분석 설정
환경 격리: Host-Only 네트워킹이 활성화된 가상 머신(VMWare/VirtualBox)을 사용합니다. 인터넷 연결을 비활성화합니다.
모듈 로드: IDA Pro, Ghidra 또는 x64dbg와 같은 도구를 사용하여 .dll 및 .sys 파일을 분석합니다.
활동 모니터링: Process Monitor(ProcMon), Process Hacker 및 Wireshark를 사용하여 동작을 관찰합니다.
법적 고지 및 라이선스
이 프로젝트는 GNU General Public License v3.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.
이 저장소의 코드는 교육 목적의 리버스 엔지니어링 산출물입니다. Stuxnet 웜의 원본 저자는 익명이지만, 여기에 포함된 재구성본은 독립적인 보안 연구자들의 작업입니다.
저자들은 원본 악성코드의 소유권을 주장하지 않습니다.
코드는 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다.
저자들은 이 코드로 인해 발생하는 오용이나 손해에 대해 책임을 지지 않습니다.
이 저장소를 사용함으로써 귀하는 모든 관련 법률 및 규정을 준수할 책임이 전적으로 귀하에게 있음을 인정합니다.
이 연구와 재구성은 글로벌 사이버 보안 업체들이 제공한 광범위한 분석과 위협 인텔리전스 없이는 불가능했을 것입니다.
Symantec(W32.Stuxnet 보고서)
Kaspersky Lab(Stuxnet 연대기)
ESET(현미경으로 본 Stuxnet)
Amr Thabet 및 Christian Roggia(research-virus/stuxnet)
이것은 학술적 재구성입니다. 피해를 입히는 것이 아니라 더 강력한 방어 체계를 구축하는 데 사용하십시오.