
취약점 악용 및 취약점 예방 구현
CVE-2017-8464 취약점 탐지 애플리케이션 구축
목차:
제1부: CVE-2017-8464 개요
LNK 파일 개념 CVE-2017-8464 취약 시스템 구축 CVE-2017-8464 취약점 공격 도구제2부: Metasploit 도구를 사용한 CVE-2017-8464 악용
2.1. CVE-2017-8464 악용 모델
2.2. CVE-2017-8464 악용 실행
제3부: Python 언어 기반 CVE-2017-8464 탐지 도구 구축
3.1. 캡처한 네트워크 패킷 기반 CVE-2017-8464 시그니처 분석
3.2. 패킷 시그니처 분석 기반 CVE-2017-8464 악용 탐지 처리 함수
결론
**
제1부: CVE-2017-8464 개요
LNK는 Microsoft가 개발한 Binary 형식의 System Files - Windows Shortcut입니다.

그림 1: Windows의 바로 가기 아이콘
LNK 파일은 Windows에서 파일, 폴더 또는 애플리케이션의 원본을 참조하는 데 사용하는 바로 가기 또는 "링크"로, Macintosh 플랫폼의 별칭과 유사합니다. 대상 유형, 위치, 파일 이름은 물론 대상 파일을 여는 프로그램과 선택적 바로 가기 키를 포함합니다. Windows에서 파일, 폴더 또는 실행 프로그램을 마우스 오른쪽 버튼으로 클릭한 다음 Create shortcut을 선택하면 이러한 파일을 만들 수 있습니다.
이 취약점은 Microsoft Windows에 존재하며, 특수하게 제작된 바로 가기(shortcut)의 아이콘을 통해 공격자가 원격으로 코드를 실행할 수 있게 합니다.

그림 2: .LNK 파일을 통해 공격 코드를 다운로드하고 실행하는 바로 가기를 수동으로 생성
취약한 구성 요소는 네트워크 스택과 연결되어 있습니다. 이러한 취약점은 일반적으로 "remotely exploitable"이라고 하며, 프로토콜 수준 또는 여러 네트워크 홉(예: 하나 이상의 라우터를 통과)에서 악용할 수 있는 공격으로 간주됩니다.
CVE-2017-8464 취약점의 영향을 받는 시스템은 Microsoft Windows Server 2008 SP2 및 R2 SP1, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2012 Gold 및 R2, Windows RT 8.1, Windows 10 Gold, 1511, 1607, 1703, Windows Server 2016의 Windows Shell입니다. Windows Explorer 또는 바로 가기 아이콘을 구문 분석하는 다른 응용 프로그램에서 아이콘을 표시할 때 수동으로 생성된 .LNK 파일이 올바르게 처리되지 않아 로컬 사용자나 원격 공격자가 임의의 코드를 실행할 수 있습니다. "LNK Remote Code Execution Vulnerability"라고도 합니다.
보안 업데이트는 바로 가기 아이콘 참조의 유효성을 올바르게 확인하도록 수정하여 취약점을 패치하며, Microsoft Windows는 2017년 6월에 이 취약점에 대한 업데이트를 제공했습니다. 이 취약점은 Windows XP 및 이전 Windows 버전에는 영향을 미치지 않습니다.
Metasploit
Metasploit Framework는 명령줄 인터페이스에서 사용되는 서비스의 오류를 테스트, 공격 및 악용하기 위한 환경이며, VMware 버전의 Kali Linux에 포함되어 있습니다.

그림 3: Metasploit 도구
Armitage
Metasploit 프로젝트를 기반으로 하는 그래픽 인터페이스 도구입니다.

그림 4: Armitage 도구.
제2부: Metasploit 도구를 사용한 CVE-2017-8464 악용
2.1. CVE-2017-8464 악용 모델
피해자 시스템 – Windows 7 Pro

그림 5: 피해자의 운영체제 버전

그림 6: 피해자 시스템의 IP 주소
공격자 시스템 – Kali Linux – Metasploit 도구 사용.

그림 7: 공격자 시스템의 IP 주소
활성 네트워크 계층은 VMnet8 서브넷 192.168.169.0입니다.
2.2. CVE-2017-8464 악용 실행

그림 8: 페이로드 생성 및 공격자 시스템으로의 TCP 연결 수신

그림 9: 악성코드를 자동 실행하는 .lnk 파일 생성

그림 10: 페이로드 설정 정보

그림 11: .lnk 파일 생성 및 악성코드 포함

그림 12: 모든 악성코드를 USB로 복사

그림 13: 피해자가 악성코드가 포함된 취약한 .lnk 파일이 든 USB를 연결함

그림 14: 공격자가 악용에 성공하여 피해자 시스템에 침투함
**
제3부: Python 언어 기반 CVE-2017-8464 탐지 도구 구축
3.1. 캡처한 네트워크 패킷 기반 CVE-2017-8464 시그니처 분석

그림 15: CVE-2017-8464 취약점 공격 패킷이 캡처됨

그림 16: 공격자에게 TCP 연결이 성공한 후 PSH 플래그가 설정된 패킷

그림 17: 공격자가 피해자에게 보낸 캡처 패킷에서 발견된 의심스러운 시그니처
PE 파일 형식(Portable Executable File Format)은 Win32 고유의 파일 형식입니다. *.EXE, *.DLL(32비트), *.COM, *.NET, *.CPL 등 Win32에서 실행 가능한 모든 파일은 PE 형식입니다. 단, VxDs 파일과 *.DLL(16비트) 파일은 예외입니다.

그림 18: PE 파일 구조.
DOS MZ 헤더
모든 PE 파일은 간단한 DOS MZ 헤더로 시작합니다. 이 헤더는 처음 64바이트를 차지하며, 프로그램이 DOS 환경에서 실행될 때 사용됩니다.
e_magic: PE 파일의 시그니처로, 값은 4Dh, 5Ah(문자 "MZ", MS-DOS 창시자 Mark Zbikowsky의 이름에서 유래)입니다. 이 값은 유효한 DOS 헤더임을 나타내며 계속 실행할 수 있음을 표시합니다.

그림 19: 캡처된 패킷에서 확인된 PE 파일 시그니처
e_lfanew: DOS 헤더의 맨 끝에 있는 DWORD로, 파일 시작 위치를 기준으로 한 PE 헤더의 오프셋을 포함하는 필드입니다.
DOS 스텁
DOS 스텁은 오류 메시지를 표시하는 작은 DOS EXE 프로그램일 뿐이며, 16비트 Windows와의 호환성을 위한 부분입니다.

그림 20: 공격자가 피해자에게 보낸 패킷에서 캡처된 DOS 스텁 정보
PE 헤더
PE 헤더는 실제로 로더가 파일을 메모리에 로드하는 데 필요한 정보를 포함하는 IMAGE_NT_HEADERS 구조체입니다.
Signature: PE 헤더의 시작 부분에 있는 DWORD로, PE 시그니처 50h, 45h, 00h, 00을 포함합니다.

그림 21: e_lfanew 값이 가리키는 PE 헤더의 Signature 부분
섹션 테이블
섹션 테이블은 PE 헤더 바로 뒤에 오는 구성 요소로, IMAGE_SECTION_HEADER 구조체 배열로 구성됩니다.

그림 22: 캡처된 패킷에서 확인된 섹션 테이블 내용

그림 23: 시그니처 및 악성코드 관련 정보를 CSV 파일에 저장
3.2. 패킷 시그니처 분석 기반 CVE-2017-8464 악용 탐지 함수

그림 24: 패킷의 프로토콜 정보를 가져오는 함수

그림 25: 패킷의 info 필드 정보를 가져오는 함수

그림 26: 패킷을 Pcap에서 CSV 파일로 변환하는 함수

그림 27: 네트워크 트래픽에서 악성코드를 검사하는 함수

그림 28: 트래픽을 캡처하고 악성코드를 검사하는 루프
*악용 실행을 통한 프로그램 작동 테스트

그림 29: 실제 머신에서 감시 프로그램 실행

그림 30: 네트워크 트래픽 수신 중 감지 및 경고

그림 31: CVE-2017-8464 감시 프로그램 폴더

그림 32: 패킷 캡처 후 매 변환 시 패킷을 기록한 파일들이 있는 packet 폴더

그림 33: 모든 경고가 로그에 저장됨
결론
CVE-2017-8464 취약점을 악용하고 이를 탐지하는 프로그램을 구축하는 과정을 통해 학생들은 취약점을 악용하는 방법을 이해하고, 이를 바탕으로 시그니처와 취약점에서 발생하는 악성코드의 동작을 분석할 수 있습니다. 이러한 행위 및 시그니처 분석 능력은 학생들이 네트워크 보안 모니터링 정보를 자동으로 수집, 분석, 처리하여 악성코드 탐지 경고를 제공하는 프로그램을 직접 작성할 수 있는 역량을 갖추게 해줍니다.