SCADA 공격의 실제 사례 연구 Stuxnet 악성 코드

Slides:



Advertisements
Similar presentations
제주특별자치도교육청. 목 차 일상생활 속에서의 정보보안 안전한 컴퓨터 사용  보안업데이트 자동설정  가짜 백신 프로그램 주의  믿을 수 있는 웹사이트만 접속  자동 로그인 기능 사용 안함  사용 후 반드시 로그아웃 확인 
Advertisements

1/29 Chapter 3: 시스템 소프트웨어 인터페이스 인간이 실질적으로 조작하는 기계의 부분 좋은 인터페이스 : 직관적 ( 사전지식, 경험으로 알 수 있음 ) 이어서 누구나 즉각적 사용 가능 사용자 ( 자연어 ) ↔ 응용 S/W↔ 시스템 S/W↔H/W( 기계어 )
경기도 구리시 인창동 127 벤처보육센터 303 호 Tel Fax 산소프트 의료종합정보 시스템 구축 제안서 ( EMR / OCS )
1) 지금 IBM 전용 PRINTER 를 LAN 에서 사용할 수 있습니까 ? 예 ! 여기 DPX-5250R 이라는 IBM INTERFACE MODULE 이 있습니다. LAN 에서 PC 나 PRINT SERVER 를 통해 DATA 출력 지원을 합니다. 2) 그럼 UNIX.
Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
전산 OA 장비 전산 OA 장비 유지보수 제안서 유지보수 제안서 ㈜정일정보시스템 고객사 귀중
더존다스 경영전략과 비젼 1 ERP 개발부문
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
J-Stream part1 (Software streaming service) ▪ 팀명 : Jukdori ▪ 팀원 : 16 th 윤병호 (PL) 15 th 송인규 16 th 김영진.
실행파일 (PE) 의 구조. PE(Portable Executable)  정의 : PE 구조로 된 PE 파일들은 플랫폼에 관계없이 Win32 운영 체제가 돌아가는 시스템이면 어디서든 실행 가능하다는 의미 EXE 와 DLL 등의 파일구조를 PE 파일 포맷이라고 명명함.
Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
윈도우XP설치하기 동부산대학 향기나무.
D-Guard Security Suites 제품 소개서
2013학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
1 비주얼 베이직 소개와 개발 환경 구축 비주얼 베이직 프로그래밍 환경을 구축하자!.
CDMA SW 구조 AIITQC 서울본원교육장 양 종 윤.
2009년 IT인재개발원 [연수생 모집요강]
음성 인식 프로그램 설치 가이드 (Windows Vista 용)
Window 2000 윈도우 2000 기본 프로세스들.
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
업무용 PC시스템 통합복구관리솔루션 “Reparo™ WidePro”.
HACKING 김진수 소준형 유병화.
뇌를 자극하는 Windows Server 장. 파일 서버.
제1장 C#의 기초 1.1 .NET Framwork 1.2 .NET Environment 1.3 C# 소개.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
제 2장 컴퓨터 구조.
Understanding of Socket and File I/O
Ablecom Type-7 IVR 에이블컴 기술연구소.
Safecode® 3.0 ㈜코드원 웹 애플리케이션 취약점 제거 및 관리 솔루션
보안 시스템 정보 보안 개론 10장.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
Windows CE 메모리 아키텍처 및 관리 서진호
효과적인 DB암호화 구축을 위한 애슬론 v1.5 제안
오목게임 W32 로봇시스템제어(하) GROUP 7 노성동, 하선웅, 김관준
Network Security - Ethereal 실습
뇌를 자극하는 Windows Server 장. 파일 서버.
BLUE TOOTH 인터넷미디어공학부 배지태.
Network Security - Wired Sniffing 실습
Dept. of Computer Engineering, Hannam Univ. Won Goo Lee
System Call Linux Kernel 수업 3번째.
Toad for SQL Server 제품 소개서 – 프로넷소프트㈜.
DBMS의 종류와 DBMS 장승빈 박상민 김혁.
인스톨쉴드9 데브스튜디오 사용 매뉴얼 (VB6에서 개발후 배포프로그램 만들기)
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
6장 디지털 증거 수집.
HDD 보안장치 소개 ㈜ 세 코 원
디지털 녹음장비 제 안 서 휴 코 산 업.
PLC를 이용한 제어로직에 관한 연구 김 재 은.
Unified Communications Cisco Korea
인터넷 보안 정보 보안 개론 5장.
Visual C++ Programming
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
Ch 13. Windows 관리 기구.
드 림 스 타 트 통합사례관리시스템 계약서 계약일자 : “갑” : “을” : ㈜ 진 우 정 보 시 스 템.
04장 웹 보안: 웹, 그 무한한 가능성과 함께 성장한 해킹
네트워크 보안 3 오 세 종.
Chapter 3: 시스템 소프트웨어 힘 뒤에 있는 힘.
VM? Virtual..?? Vulnerability Analyst Diary
Information Security - Wired Sniffing 실습
Internet Multimedia Solutions (Video Web Call Center)
메일캐리어 제품 소개서 탭스랩주식회사.
운영체제 (Operating Systems) (Memory Management Strategies)
씨엔아이는 왜 무선데이터 통신사업에 특화했나?
12장. 파일 시스템 구현.
정보보안 및 개인정보 보호의 이해 충청북도교육청.
Computer Network(Hacking)
파일 구조의 이해 PE Format 안녕하십니까
ASP 기초개념 ASP란? ActiveX 서버 컴포넌트.
Information Security - Sniffing 실습.
Presentation transcript:

SCADA 공격의 실제 사례 연구 Stuxnet 악성 코드 이 재명

Stuxnet 이해에 필요한 선수 지식 Windows OS Computer Security Win32 API : High-level APIs , used by common windows applications Native API : Low-level APIs , including system call wrapper(Zw*) Kernel Driver PE(Portable Executable) – EXE(executable), DLL(library), SYS(kernel driver) Computer Security Reverse Engineering Application Hacking (DLL Injection, Hooking, Vulnerability) System Hacking (Rootkit) IPS – NIPS(Network IPS), HIPS(Host-based IPS)

Stuxnet 이란? 2010년 6월에 발견된 SCADA 시스템 공격용 웜 바이러스 이란의 우라늄 농축 시설을 공격하기 위해 만들어진 것으로 추정 극도로 복잡하고 치밀한 설계 국가적 규모의 지원 하에 개발된 것으로 추측됨 Conficker 웜 바이러스에서 영감을 얻은 듯한 부분 존재 Conficker – 역사상 가장 복잡하고 널리 전파됐던 윈도우 웜 바이러스 2009년 1월 기준 9백만 ~ 1천5백만 대 정도의 컴퓨터 감염시킨 바이러스 Microsoft 사에서 Conficker 웜 개발자를 체포하고 유죄판결을 받도록 정보 제공하는 사람에게 $250,000의 현상금까지 걸었었음

Stuxnet 감염 통계 이란 약 십만 여 대의 감염된 컴퓨터

Stuxnet 의 구조 현대의 바이러스가 사용하는 기법의 대부분이 모두 쓰임 바이러스 설치를 위한 Dropper 기법 프로세스 권한 상승을 위한 0-day 취약점 바이러스 설치 사실을 은폐하기 위한 Rootkit 기법 Autorun.inf를 이용한 USB 저장 장치 감염 C&C 서버와의 통신을 통한 감염 컴퓨터 제어 보안 제품들의 우회 시도 신뢰 프로세스에의 DLL 인젝션 허위 디지털 서명

Stuxnet 의 구조 - Dropper Dropper 의 사용 Dropper? 시스템에 바이러스를 설치하는 트로이 목마(Trojan) 바이러스 설치할 바이러스를 내부에 포함하고 있거나, 외부로부터 다운로드함 설치할 Stuxnet의 모든 구성 요소가 Dropper 내 “stub” 섹션에 담김 섹션(Section)? PE 구조에서 데이터의 블록을 구분하는 단위

(참고) PE 섹션의 예 – notepad.exe Process Memory (notepad.exe) PE Header PE Header .text .text .data 6개의 섹션 실행 .data .rdata .pdata .rdata .reloc Thread Stack Mem … .rsrc

Stuxnet 의 구조 – Dropper (Cont.) Dropper가 실행되면 우선 “stub” 섹션에서 Stuxnet DLL을 추출 DLL(Dynamic Link Library)? 윈도우에서 사용되는 외부 라이브러리의 PE 파일 형식 리눅스의 .so 파일에 해당 외부 프로그램이 쓸 수 있는 함수를 노출(export) 그 후, 추출된 DLL을 로드하여 실행할 함수 하나를 호출 함수의 인자로 “stub” 섹션의 메모리 포인터를 넘겨 줌 함수는 “stub” 섹션으로부터 다시 DLL을 추출/로드, 다른 함수를 호출 이 과정이 Stuxnet 실행동안 계속 반복

(참고) DLL 예 – kernel32.dll 외부로 노출된 (Export된) 함수들

Stuxnet 의 구조 – Dropper (Cont.) 보안 제품 우회 시도 행위 기반 침입 탐지를 수행하는 모니터링 툴/HIPS 우회를 시도 모니터링 툴의 예시 Process Monitor (Sysinternals) HIPS(Host-based IPS)의 예시 COMODO Defense+

Stuxnet 의 구조 – Dropper (Cont.) Windows에서 DLL 로드 함수는 kernel32.dll의 LoadLibrary API 보안 제품들은 DLL 로드 감시를 위해 LoadLibrary 함수를 후킹 후킹(Hooking)? 메모리 조작 등을 통해 대상 함수 호출 시 다른 함수가 불리게 하는 해킹 기법 main: xxx yyy main: jump newmain yyy newmain: 메모리 상의 코드를 조작해 main 함수 대신 newmain 함수가 불리도록 후킹한 예

Stuxnet 의 구조 – Dropper (Cont.) 거짓된 파일 경로(예: fake.dll)로 LoadLibrary 함수를 호출하여 경로를 속이고 실제 DLL(예: real.dll) 로드는 정상적으로 이루어지도록 파일 관련 함수를 후킹 ntdll.dll의 ZwOpenFile은 파일을 열 때 사용하는 Low Level API Dropper HIPS의LoadLibrary “fake.dll” 정상LoadLibrary Stuxnet의 ZwOpenFile 파일 Open 시도 (ZwOpenFile) 원래 함수 호출 정상ZwOpenFile “real.dll”

Stuxnet 의 구조 – Stuxnet DLL Stuxnet의 Payload들을 담고 있는 핵심 DLL Payload: ① 화물 ; ② [네트워크] 전송 데이터 ; ③ [보안] 악성코드의 감염 증상 Dropper의 Stub section 속 환경 설정에 따라 지정된 동작 수행 Stuxnet DLL이 export하고 있는 외부 노출 함수들

Stuxnet 의 구조 – Stuxnet DLL (Cont.) DLL Injection “대상 프로세스”는 Stuxnet이 임의로 생성한 프로세스일수도, 기존에 실행 중인 프로세스일 수도 있음 “대상 프로세스”는 신뢰되는 프로세스 중 하나로 정함 (윈도우 시스템 프로세스, 안티바이러스 제품들) 행위 기반 침입 탐지 시스템을 우회하기 위함

Stuxnet 의 구조 – Stuxnet DLL (Cont.) Windows는 Vista(‘06) 이후 사용자 계정 컨트롤(UAC)이라는 보안 시스템 추가 권한이 낮은 프로세스가 권한이 높은 프로세스에 간섭할 수 없음 Stuxnet은 권한이 높은 프로세스에의 DLL 인젝션을 위해 2건의 프로세스 권한 상승 0-day 취약점 중 하나를 이용 0-day 취약점: 공격자 외에는 아직 알려지지 않아 패치되지 않은 취약점 UAC 경고 창

Stuxnet 의 구조 – 설치 제일 처음에 Stuxnet DLL의 Export #15번 함수가 호출됨 Export #15번 함수는 윈도우 버전 호환성, 안티바이러스 동작 여부 등을 확인/조치한 뒤, DLL 인젝션 수행 설치 과정을 나타낸 순서도

Stuxnet 의 구조 – 감염 NTVDM TRACE 레지스트리 값을 확인 값이 19790509(개발자의 생일?)와 같으면 바이러스 종료 (킬 스위치) VDM(Virtual DOS Machine) – 16bit emulator based on V8086 mode Stuxnet은 시스템 날짜가 2012-06-24 전일 때만 동작 Deadline은 2012-06-24 신호 전달 목적의 Mutex 생성 Mutex (Mutual exclusion) 원래는 동시성 제어를 위해 만들어진 개념 Windows에서는 Kernel object로 취급되어, Kernel object는 중복 생성이 불가하다는 점에서 중복 실행 방지 트릭으로도 활용 Stuxnet은 동작의 완료를 다른 프로세스에 전달하기 위해 Mutex를 활용

Stuxnet 의 구조 – 감염 (Cont.) 커널 드라이버 설치 루트킷(Rootkit)? Mrxcls.sys: 시스템 부팅 시마다 악성코드 시작 용도 Mrxnet.sys: Rootkit 의심을 피하기 위해 파일 생성 시각을 조작 시스템 폴더 내 다른 일반적인 파일들과 같게 만듦 루트킷(Rootkit)? 어원은 root(유닉스/리눅스 권한) + kit(도구). 유닉스 계열 시스템에서 해커가 시스템 툴을 rootkit으로 바꾸는 데서 유래 악성코드가 존재를 감추기 위해 설치하는 소프트웨어

Stuxnet 의 구조 – 감염 (Cont.) RPC 서버 시작 services.exe 시스템 프로세스에 Stuxnet DLL을 주입하여 시작 RPC(Remote Procedure Call) 다른 프로세스에서 제공하는 함수를 호출할 수 있도록 하는 기술 Stuxnet에서는 페이로드 제어의 중심 부분이자, LAN 내부 컴퓨터들끼리의 통신에도 사용됨 외부망과의 연결이 차단된 컴퓨터의 제어에 이용 (버전 업데이트 등)

Stuxnet 의 구조 – 감염 (Cont.) WinCC/Step7 프로젝트 파일 감염 WinCC: Siemens 사의 SCADA & HMI 시스템 Step7: PLC 자동화 시스템인 SIMATIC의 제어 소프트웨어 s7tgtopx.exe(WinCC Simatic manager) 프로세스에 Stuxnet DLL 주입 주입된 DLL에서 s7tgtopx.exe 프로세스의 사용 함수를 후킹 CreateFileA : MS-윈도우에서 파일을 생성하거나 여는 API *.s7p(Step7 프로젝트 파일) 파일을 열 때 불리는 함수 열려는 파일이 확장자가 .s7p인 파일이면 파일 경로를 RPC 서버에 보고 StgOpenStorage : Simatic manager가 *.mcp 파일을 열 때 사용하는 함수 *.mcp 파일은 Step7 프로젝트 구성 요소의 하나 *.mcp 확장자를 가진 파일에 접근하면 파일 경로를 RPC 서버에 보고 보고된 파일들이 속한 프로젝트 폴더가 이후 서술할 프로젝트 감염 대상

Stuxnet 의 구조 – Mrxcls.sys 시스템 부팅 시마다 악성코드 시작 용도 Realtek 사 또는 JMicron 사의 허위 디지털 서명으로 서명됨 services.exe 프로세스에 Stuxnet DLL 주입 S7tgtopx.exe 프로세스에 Stuxnet DLL 주입 CCProjectMgr.exe 프로세스에 Stuxnet DLL 주입 쉘 프로세스(explorer.exe) 에 oem7m.PNF 주입 oem7m.PNF 파일은 Stuxnet 안에 들어있지 않음 공격자가 원격 전송하는 파일?

Stuxnet 의 구조 – C&C (명령 및 제어) www.mypremierfutbol.com www.todaysfutbol.com 인터넷 연결 여부 체크 (MSN, 윈도우 업데이트 서버) C&C 서버로 감염 컴퓨터의 기본적인 정보 전송 Stuxnet의 환경 설정 데이터 요약 OS 버전 컴퓨터 이름, 도메인 이름(작업 그룹 이름) IP 주소 Siemens Step7 또는 WinCC 가 구동 중인지 조사하여 그 여부

Stuxnet 의 구조 – Rootkit (Mrxnet.sys) NTFS, FAT, CDFS 파일시스템의 필터 드라이버로 작동 IRP 요청을 가로채서 “디렉토리 조회” 명령의 결과 조작 필터 드라이버(Filter Driver) 특정 하드웨어 장치와 OS 사이의 드라이버 스택에 삽입되는 드라이버 IRP(I/O Request Packet) OS 또는 타 Driver에서 특정 Driver로 보내는 I/O 요청 구조체 Realtek 사의 허위 디지털 서명으로 서명됨

(참고) 드라이버 스택 예시 OS H/W

Stuxnet 의 구조 – 전파 Stuxnet은 크게 세 가지 방법으로 전파됨 네트워크를 통한 전파 이동식 저장 매체를 통한 전파 Step7 프로젝트 감염을 통한 전파

Stuxnet 의 구조 – 네트워크 전파 네트워크 전파에 사용된 방법 P2P(Peer-to-Peer) P2P 통신과 업데이트 하드코딩된 DB 서버 비밀번호로 WinCC 컴퓨터 감염 네트워크 공유 폴더를 통한 전파 Print Spooler 0-day 취약점(MS10-061)을 통한 전파 윈도우 서버 서비스 취약점(MS08-067)을 통한 전파 P2P(Peer-to-Peer) 기존의 클라이언트-서버 모델이 아닌 동등한 위치의 컴퓨터들끼리 서로 네트워크 통신하며 정보를 교환하는 모델 P2P 파일 공유 예: BitTorrent, 윈도우 네트워크 파일 공유

Stuxnet 의 구조 – 네트워크 전파 (P2P) RPC(Remote Procedure Call) 이용 RPC는 로컬 컴퓨터 외 네트워크의 원격 컴퓨터의 프로시저도 호출 가능 MS RPC 레퍼런스 문서: https://docs.microsoft.com/en- us/windows/desktop/rpc/rpc-start-page 다른 컴퓨터의 Stuxnet 버전이 구버전이면 로컬 Stuxnet 전송 신버전이면 원격지의 Stuxnet을 다운로드/설치 외부 망과 분리된 컴퓨터의 Stuxnet의 버전을 최신으로 유지

Stuxnet 의 구조 – 네트워크 전파 (WinCC) WinCC 데이터베이스 S/W가 동작 중인 서버 해킹 시도 DBMS가 MS SQL Server WinCC 소프트웨어에 하드코딩된 기본 비밀번호 이용, DB 접속 시도 비밀번호 변경 없이 기본 비밀번호를 사용하고 있을 경우 접속 성공

Stuxnet 의 구조 – 네트워크 전파 (WinCC) (Cont.) 접속에 성공하면 CREATE TABLE/INSERT INTO SQL 문을 보내 Stuxnet EXE 바이너리 전송 OLE Automation 저장 프로시저 이용, 전송된 Stuxnet을 저장 및 실행 ADODB.Stream COM 오브젝트 호출 (바이너리를 디스크에 저장하는 용도) WScript.Shell COM 오브젝트 호출 (EXE 실행 용도) ADODB.Stream과 WScript.Shell은 VBScript 바이러스에서 흔히 사용 OLE(Object Linking & Embedding) : COM(Component Object Model)의 전신 COM(Component Object Model) (= ActiveX) MS Windows에서 사용하는 C++ 기반 객체 모델링 규격 OLE Automation : COM extension for scripting (IDispatch 인터페이스)

Stuxnet 의 구조 – 네트워크 전파 (WinCC) (Cont.) Stuxnet EXE가 실행되면, EXE는 .cab 파일을 리소스에서 추출해 “GraCS\cc_tlg7.sav” 경로에 저장 *.cab 파일은 Windows Cabinet 압축파일 형식으로, 윈도우 내장 유틸리티 extrac32.exe로 압축 해제 가능 xp_cmdshell 내장 저장 프로시저를 이용하여 extrac32.exe 프로그램 실행, “cc_tlg7.savx” 라는 이름으로 Stuxnet DLL 추출 “sp_run” 이라는 이름의 확장 저장 프로시저로 추가 후 실행, 삭제 Stuxnet DLL이 SQL 서버 프로세스의 컨텍스트에서 로드되어 실행됨 Stuxnet 제거가 어렵도록 한 것

Stuxnet 의 구조 – 네트워크 전파 (공유 폴더) 네트워크 공유 폴더를 이용한 전파 방식은 예전부터 자주 사용된 기법 과거에 전파력이 강했던 바이러스들이 이용 Win32/Funlove.4099 (1999), Win32/Nimda (2001), Win32/Parite.B (2001), Conficker.B (2008) 등 현재 오피스 환경에서의 파일 공유가 보편적 → 지금까지도 유효 네트워크 상에 C$, Admin$ 공유 항목이 있는 컴퓨터를 찾음 C$ (C:\), Admin$ (%windir%)은 윈도우 기본 공유 항목 쓰기 가능한 디렉토리 내에 DEFRAGxxxxx.TMP 라는 이름으로 Stuxnet DLL 복제

Stuxnet 의 구조 – 네트워크 전파 (공유 폴더) 복제에 성공하면, rundll32.exe 명령을 원격으로 실행해서 Stuxnet 원격 실행 시도 rundll32.exe는 DLL 파일의 함수를 호출하는 윈도우 기본 프로그램 rundll32.exe “DEFRAGxxxxx.TMP”,DllGetClassObjectEx rundll32 명령 원격 실행을 위해 다음 네 가지 방법 시도 현재 사용자 인증 정보를 이용해 명령 수행 explorer.exe(윈도우 쉘 프로세스)의 인증 정보 이용하여 수행 WMI의 Win32_Process:Create 메소드 호출을 이용 NetScheduleJobAdd API 함수를 이용해 원격 컴퓨터에 작업 스케줄 추가 WMI(Windows Management Instrumentation) 윈도우의 관리 정보에 접근할 수 있도록 윈도우에서 외부로 노출시키는 인터페이스 Win32_Process class는 프로세스를 관리 (정보 조회, 시작/종료 등)

(참고) WMI 프로그래밍 예시 (Win32_Process) 아래 프로그램은 현재 시스템에서 실행 중인 프로세스의 목록을 출력 코드 복사 후 program.vbs 이름으로 저장 후 실행 Dim oWMI, oQuery, oProcess, sResult Set oWMI = GetObject("winmgmts:") Set oQuery = oWMI.ExecQuery("SELECT * FROM Win32_Process") sResult = "" For Each oProcess In oQuery sResult = sResult & oProcess.Name & vbCrLf Next MsgBox sResult, vbInformation, "프로세스 목록" (실행 결과)

Stuxnet 의 구조 – 이동식 디스크 전파 네트워크에 연결되어 있지 않은 컴퓨터 감염을 위함 USB 저장장치 감염을 위해 두 가지 방법 이용 *.lnk (바로 가기 파일) 취약점 (CVE-2010-2568) – Stuxnet 신버전 Autorun.inf (자동 실행) – Stuxnet 구버전 Autorun.inf도 여러 바이러스에서 많이 쓰는 방법 (Conficker.B 등) 현재 백신들은 Autorun.inf 실행 방지의 옵션을 제공한다

Stuxnet 의 구조 – 이동식 디스크 전파(Autorun) AhnLab 기준으로, 최초로 Autorun.inf 를 전파에 사용한 바이러스는 Win32/Leebad.worm.208896 (2006) 이후 2007년 들어서 유행하기 시작 Stuxnet에서는 바이러스 실행 파일과 autorun.inf 를 하나의 파일로 넣는 트릭 선보임 Windows에서 autorun.inf를 파싱할 때 올바른 명령어가 아닌 부분은 무시함을 이용 앞 부분은 Stuxnet 실행 파일, 뒷 부분에 autorun.inf 명령어를 집어넣음

Stuxnet 의 구조 – Step7 프로젝트 파일 감염 p.20에서 수집한 Step7 프로젝트 폴더 속 프로젝트 파일을 수정 프로젝트를 열면 Stuxnet DLL이 로드되도록 함 Apilog\types 파일을 수정하여 특정 파일 이름의 DLL을 로드하도록 함 DLL Hijacking 기법 DLL Hijacking (a.k.a. DLL Preloading) 응용 프로그램이 DLL을 로드할 때 전체 경로가 아닌 파일명으로만 로드함을 이용, 원래 로드하려던 DLL보다 더 우선 순위의 경로에 조작된 DLL을 위치시키는 수법 DLL 검색 순서: https://docs.microsoft.com/ko-kr/windows/desktop/Dlls/dynamic-link- library-search-order SCADA 제어 컴퓨터에 침투하기 위함

Stuxnet 의 구조 – PLC 수정 Simatic 소프트웨어의 s7otbxdx.dll 파일을 Stuxnet의 #208번 리소스 파일로 교체 s7otbxdx.dll 파일은 PLC와 컴퓨터 간의 PLC block 교환을 담당 PLC 장치는 STL/SCL와 같은 언어로 된 Code Block, Data Block으로 로드됨 s7otbxdx.dll 파일을 교체함으로써 PLC에서 읽거나 쓰는 PLC block을 감시 PLC block에 독자적인 block을 추가하거나 바꾸어 PLC 감염 PLC 감염 표시 남기기 (재감염 예방 목적) 수행

Stuxnet 의 구조 – PLC 루트킷 PLC PLC 감염 사실을 알아차리지 못하도록 루트킷 역할도 수행 Simatic 변조된 s7otbxdx.dll 파일은 s7blk_read, s7blk_write, s7blk_findfirst, s7blk_findnext, s7blk_delete 함수를 가로채서 감염된 PLC block에 대한 정보 은폐, I/O 차단 수행 Simatic S/W PLC comm module (s7otbxdx.dll) PLC Stuxnet block Failure (not exist)

추천 도서 윈도우 API 윈도우 커널 역공학 (리버스 엔지니어링) 김상형, “윈도우즈 API 정복 1”, 한빛미디어, 2006 정덕영, “Windows 구조와 원리”, 한빛미디어, 2006 Mark Russinovich et al., “Windows Internals”, 6th ed., Microsoft Press, 2012 이봉석, “실전 윈도우 디바이스 드라이버”, 에이콘출판, 2015 역공학 (리버스 엔지니어링) 이호동, “Windows 시스템 실행파일의 구조와 원리”, 한빛미디어, 2005 이승원, “리버싱 핵심 원리”, 인사이트, 2012

참고 문헌 – Stuxnet 관련 Nicolas Falliere et al., “W32.Stuxnet Dossier”, Symantec, 2011 https://www.symantec.com/content/en/us/enterprise/media/securit y_response/whitepapers/w32_stuxnet_dossier.pdf 박형근, “스턱스넷(Stuxnet) 상세 분석 보고서”, IBM Security, 2010 http://index-of.co.uk/Reverse-Engineering/(Stuxnet).pdf “Win-Trojan/Stuxnet.513536”, AhnLab, 2010 https://www.ahnlab.com/kr/site/securityinfo/asec/asecCodeView.do ?virusSeq=33556&tabGubun=1

이미지 출처 p.4 그래프 : W32.Stuxnet Dossier, Nicolas Falliere et al.(Symantec), 2011 p.9 CreateFileA 문서 : https://docs.Microsoft.com/en- us/windows/desktop/api/fileapi/nf-fileapi-createfilea 에서 캡처 p.10 COMODO Defense+ 스크린샷 : https://www.pcmag.com/feature/250309/comodo-internet-security-4-0 p.13 DLL Exports 표 : W32.Stuxnet Dossier, Nicolas Falliere et al.(Symantec), 2011

이미지 출처 p.15 UAC 경고 창 : https://docs.microsoft.com/en-us/windows/desktop/uxguide/winenv- uac p.16 Control flow : Nicolas Falliere et al., “W32.Stuxnet Dossier”, Symantec, 2011 p.24 좌 : https://www.electronicdesign.com/windows/how-write-windows-drivers 우 : https://docs.microsoft.com/ko-kr/windows- hardware/drivers/gettingstarted/driver-stacks p.35 Autorun.inf 사진 : Nicolas Falliere et al., “W32.Stuxnet Dossier”, Symantec, 2011

Thank you Any Questions?