일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 윈도우 커널 디버깅
- pcap packet capture
- 윈도우 커널
- vcruntime.dll
- 윈도우 커널 드라이버
- 바이트 오더
- arudino
- Msvcrt.dll
- vcruntime140.dll
- IAT Hooking
- packet capture
- windows kernel debugging
- Network Byte Order
- 시스템해킹
- Windows Kernel Debug
- Windows Kernel Driver
- 개발 환경 준비
- 개발하기
- hacking
- 해킹
- pcap packet
- HackCTF
- Windows Kernel
- apphelp.dll
- pwnable
- 포너블
- 네트워크 바이트 오더
- Windows
- ucrtbase.dll
- C언어 패킷캡쳐
- Today
- Total
목록분류 전체보기 (118)
미친해커
이더넷 이더넷(Ethernet)은 컴퓨터 네트워크에서 사용하는 기술이다. LAN, MAN, WAN 등 거의 모든 네트워크 분야에서 활용되는 기술 규격이며, OSI 모델의 데이터 링크 계층에서 MAC 패킷과 프로토콜 형식을 정의한다. 개요 이더넷은 네트워크에서 각 기기들이 48비트 길이의 고유한 MAC 주소를 가지고 데이터를 주고 받을 수 있도록 만들어졌다. 헤더 이더넷 헤더의 사이즈는 총 14바이트으로 이루어져 있으며, 6바이트의 도착지(Destination) 그리고 출발지(Source) MAC 주소, 2바이트의 Ethernet Type이 존재한다. Ethernet Type에는 다음 계층의 프로토콜이 무엇인지 기록된다. typedef struct _NETWORK_ETHERNET_HEADER { unsig..
바이트 오더(Byte Order) 네트워크 바이트 오더를 설명하기 전에 바이트 오더에 대해 먼저 설명해야 한다. 바이트 오더란 컴퓨터 메모리에 바이트가 저장되는 순서를 바이트 오더라고 부른다. 바이트 오더는 저장되는 방식에 따라 다르며 Little Endian, Middle Endian, Big Endian 등의 바이트 오더가 존재한다. Intel과 AMD 계열의 프로세서는 주로 Little Endian을 사용한다. 저장 방식 빅 엔디안은 상위 바이트부터 순서대로 저장 되고 리틀 엔디안은 하위 바이트부터 순서대로 저장된다는 차이점이 있다. 종류 0x1234 표현(2바이트 표현) 0x12345678 표현(4바이트 표현) Big Endian (빅 엔디안) 01 02 03 04 05 06 07 08 00000..
이더넷 프로토콜이란? 이더넷은 전세계적으로 사용되는 기술 규격이다. OSI 모델 데이터 링크 계층에서 MAC 패킷과 프로토콜을 정의한다. 또한 네트워크에서 각 기기가 48비트 길이의 고유 MAC 주소를 이용하여 데이터를 주고 받을 수 있도록 만들어졌다. 이더넷 헤더 이더넷 헤더의 사이즈는 총 14바이트으로 이루어져 있으며, 6바이트의 도착지(Destination) 그리고 출발지(Source) MAC 주소, 2바이트의 Ethernet Type이 존재한다. Ethernet Type에는 다음 계층의 프로토콜이 무엇인지 기록된다. 구조체 C언어를 기준으로 구조체는 아래와 같이 정의할 수 있으며 필요한 경우 구조체 바이트 정렬이 필요하다. typedef struct _NETWORK_ETHERNET_HEADER {..
pcap이란?pcap(packet capture)는 네트워크 프로그래밍을 위한 라이브러리다. 유닉스 계열의 운영 체제들은 libpcap 라이브러리에 pcap이 포함되어 있어 libpcap을 이용해 네트워크 프로그래밍을 할 수 있다. 윈도우는 WinPcap이라고 하는 libpcap의 포팅된 버전을 사용한다. 네트워크의 패킷들을 잡을 수 있으며 일반적으로는 볼수 없는 헤더들의 데이터도 모두 캡처하여 볼 수 있다. pcap API는 C언어로 작성되어 있어 여러 언어에서 사용할 수 있다는 장점이 있다. (해당 블로그에서는 Unix 계열의 운영 체제들을 기준으로 실습한다)libpcap 설치하기블로그에서는 Ubuntu와 Kali Linux에서 프로그래밍 실습을 진행한다. 해당 운영 체제에는 기본적으로 libpc..
Install WinDbg 윈도우 커널 디버깅은 우리가 일반적으로 알고 있는 x64dbg와 같은 디버거로는 디버깅할 수 없다. 윈도우에서 제작한 WinDbg를 사용해 디버깅할 수 있다. 기본적으로 WinDbg는 두 종류가 있는데 하나는 SDK에서 설치할 수 있는 디버거와 Microsoft Store에서 다운로드할 수 있는 디버거이다. 본문에서는 Microsoft Store에 있는 WinDbg Preview를 기준으로 설명하겠다. WinDbg Preview는 Microsoft Store에서 "Windbg" 키워드로 검색하면 바로 다운로드 받을 수 있다. Set the symbol path and server 이제 디버거의 심볼 패스와 서버를 설정해야 한다. 윈도우 커널을 디버깅하면서 필요한 디버깅 심볼들이..
Install Visual Studio Visual Studio Code와 Mingw(GCC)를 활용해서도 윈도우 커널 드라이버 개발을 할 수 있지만, Visual Studio에서 개발하는 편이 훨씬 간편하다고 생각한다. 1. 개발할 윈도우 버전 선택 윈도우 커널 드라이버는 하위 호환성은 지켜지지만 상위 호환성은 지켜지지 않는다. 그렇기에 자신이 개발할 드라이버의 대상이 되는 윈도우 버전을 잘 선택해야 한다. 하위 호환성 : Windows 7 드라이버를 Windows 10에서 실행 상위 호환성 : Windows 10 드라이버를 Windows 7에서 실행 이전 WDK 버전 및 기타 다운로드 - Windows drivers WDK(Windows 드라이버 키트), Windows 디버거(WinDBG) 등을 설치..