728x90

분류 전체보기 181

Null 스캔 & FIN 스캔

NULL 스캔TCP 헤더에는 SYN, ACK, FIN, RST 등의 플래그 비트가 있습니다. Null 스캔은 미 모든 플래그를 0으로 설정하여 패킷을 전송합니다. 이러한 비정상적인 패킷은 방화벽이나 IDS의 탐지 규칙을 우회할 가능성이 있습니다. Kalisudo nmap -sN IP주소wireshark에서 확인을 해보면 다음과 같습니다.먼저 필터링을 설정을 합니다.tcp.flags == 0 and ip.dst == 192.168.0.100다시 nmap을 통해 null 스캔을 하면 다음과 같습니다. iptables 을 통해 null 스캔 차단하고 log 남기기#sudo iptables -I INPUT -p tcp --tcp-flags ALl NONE -j LOG --log-prefix "NULL_SCAN_..

network 2025.06.10

[Windows] Heap Overflow

힙 메모리는 스택과 다르게 RET, SEH가 존재하지 않으므로 공격을 성공시키기 위해 여러가지 다양한 기법들이 동원됩니다.주로 힙 메모리에 존재하는 다른 오브젝트, 포인터 및 헤더 등을 덮어쓰는 방법으로 공격합니다. 예제 코드#include #include #include int main() { char* buf1 = (char*)malloc(0x20); char* buf2 = (char*)malloc(0x20); printf("buf1: %p\n", buf1); printf("buf2: %p\n", buf2); memset(buf1, 'A', 0x30); free(buf1); free(buf2); return 0;}32바이트로 동적할당을 합니다.그리고 memset의 buf1의 48바이트를 채워서 buf..

System Hacking 2025.06.08

[Windows] Stack Buffer Overflow

1) Stack Buffer Overflow메모리 경계를 검사하지 않는 함수 사용으로 인해 스택을 덮어쓰게 되어 주로 발생한다. 아주 고전적인 취약점이지만 아직도 많이 발생하고 있으며 실제로 퍼징을 하다 보면 여전히 많이 발견된느 취약점이다.함수는 각각의 스택 프레임을 가지고, 함수 호출 시 저장된 SFP(Saved Frame Pointer), RET(Return address)를 이용하여 호출 이전의 코드로 돌아간다. 실습 소스코드#include #include #include int main(int argc, char* argv[]){ char readbuf[2000] = { 0, }; char printbuf[500] = { 0, }; printf(" # text reader #\n"); if (a..

System Hacking 2025.05.26

프로그램 카운터

마이크로프로세서 내부에 있는 레지스터 중의 하나로서, 다음에 실행될 명령어의 주소를 가지고 있어서 실행할 기계어 코드의 위치를 지정한다. 때문에 명령어 포인터라고도 한다. 인텔의 x86계열의 CPU에서는 IP라고 한다.https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EC%B9%B4%EC%9A%B4%ED%84%B0 CPU는 메모리(RAM)에 저장된 명령어들을 순서대로 실행한다.PC는 다음에 실행할 명령어의 메모리 주소를 가리킨다.CPU가 명령어를 하나 실행하면, PC는 자동으로 다음 명령어 주소로 업데이트된다.만약 jmp, call, ret 과 같은 분기 명령어가 나오면, PC는 새로운 주소로 점프하여 흐름 제어(Control Flo..

컴퓨터 구조 2025.05.21

Windbg

Microsoft 사에서 제공하는 디버거이다. 윈도우 프로그램 디버깅 시 유용하고 커널 디버깅을 지원한다 .명령어 줄 기반의 디버거라 다른 디버거에 비해 불편하다는 단점이 있지만, 익숙해지면 오히려 더 빠르고 편리하다GO : break point 위치까지 프로그램을 실행Step Out : 현재 함수를 끝까지 실행 후 리턴Step Into : instruction 한개 실행, 만약 함수를 호출하면 함수 내부로 진입Step Over : instruction 한개 실행, 만약 함수를 호출하면 해당 함수를 끝까지 실행후 리턴 r : 레지스터 정보 표시u : 언어셈블dc : 메모리를 double word 배열로 보여주고 ASCII로 해석한다.ba : windbg의 breakpoint는 특정 메모리에 접근할 때 걸..

System Hacking 2025.05.17

뮤테이션

입력(input)을 약간씩 변형해서 새로운 입력을 만들어내는 작업hellohello 라고 입력을 했다고 해봅시다afl은 여기에 다음과 같은 작은 변경을 가할 수 있다.어떤 문자를 바꾸기 -> hello -> hezlo문자를 추가하기 -> hello -> helloo문자를 삭제하기 -> hello -> helo비트를 뒤집기 -> hello -> hfllo기존의 입력을 조금씩 변화시켜(mutate) 프로그램에 집어 넣고, 실행 경로(coverage)가 달라지는지 확인하는 방식이걸 반복해서 더 넓은 커버리지를 찾는 것이다.즉 mutation기존 입력을 기반으로 하여 새로운 테스트 케이스를 자동 생성하는 기법이다.

Fuzzing 2025.05.15
728x90