전체 글 161

DNS Spoofing

* DNS Soofing-> 원리- ARP Spoofing이 선행되어서 스니핑이 가능한 상태에서 Attacker는 클라이언트가 DNS 서버로 DNS Query를 보내는 패킷 을 볼 수 있는데, 이 Query에 대해서 Attacker가 위조된 DNS Response패킷을 보낸다. Attacker는 Victim과 같은 네트워크에 존재하므로 Attacker의 DNS Response가 DNS 서버의 Response보다 먼저 도착하므로 Victim은 Attacker의 DNS Response를 받아들이고 늦게 도착한 DNS 서버의 Response패킷은 버린다. [실습]- 일단 아래와 같은 토폴로지를 구성해준다.- Attacker는 Victim이 www.google.com으로 접속하면 Attacker자신의 Web S..

Buffer Overflow-2

[소스코드 1]- Buffer Overflow공격을 진행하기 전에 우선 아래의 소스코드를 분석해본다.- Callee인 Func함수에서의 스택 구조는 아래와 같다. 0012FB68 BUF[4] 공간 => Test 0012FB6C EBP => sta 0012FB70 RET => ck B 0012FB74 uffe 0012FB78 r Ov 0012FB7C er F 0012FB80 low 0012FB84 0000 0012FB88 0000 ... ...- memcpy함수를 실행하면 EBP는 물론 RET까지 attack배열의 문자열로 덮어 버린다. 즉, memcpy함수는 Buffer Overflow에 취약한 함수임을 알 수 있다. [소스코드 2]- 그렇다면 RET값을 임의의 값으로 변경할 수 있지 않을까? 라는 의문..

Buffer Overflow-1

- 실습은 RedHat에서 진행한다.- 2편으로 넘어가기 전에 공격이 어떤식으로 진행되는지 간단하게 살펴본다. 자세한건 2편부터 소개한다. [실습 1]- 우선 아래와 같은 코드를 bof.c라는 이름으로 작성하여 분석해본다. - 작성한 bof.c파일을 컴파일해준다. (gdb를 사용할 것이기 때문에 꼭 -g옵션을 넣어줘야 한다.) - gdb를 실행한다. (-q 옵션은 gdb를 처음에 실행할때 나오는 문구를 보여주지 않는 옵션이다.) - 브레이크 포인트를 걸기 전에 소스 코드를 한번 확인한다. - strcpy함수가 6번째 줄에 위치해 있으므로 6에 브레이크 포인트를 걸어준다. - AAA인자를 넘겨 실행한다. - argv[1]에 넘겨준 AAA가 잘 들어갔는지 확인한다. - buffer을 확인해보니 아직 strc..

RET값 변조

* 문제)-> 다음 코드에서 RET 값을 적절히 변경하여 첫 번째 printf함수가 아닌 다음 printf함수가 수행되도록 수정해본다. * cdecl 함수호출 규약에서의 풀이- 일단 아래와 같이 코드를 바꿔주면 문제를 해결할 수 있다. - 우선 main함수에서 0040101C가 Func함수, 00401029가 첫 번째 printf함수, 00401036이 두 번째 printf함수라는 것을 확인한다.- 첫 번째 함수를 건너 뛰고 두 번째 함수를 실행시켜야 하기 때문에 RET값을 첫 번째 printf함수를 실행하고 난 뒤의 주소로 바꾸어 줘야 한다. - 포인터 연산으로 RET값을 바꾸기 전에는 아래와 같이 RET값이 정상적으로 들어가져 있다. - 포인터 연산을 한 뒤에는 두 번째 함수를 실행하기 바로 전의 주..

SYN Flooding

* SYN Flooding-> 원리- 3way handshake취약점을 이용하여 Backlog Queue가 초과하도록 만드는 공격이다. 1. Attacker가 SYN 패킷을 보낸 후 SYN+ACK 패킷이 돌아와도 ACK 패킷을 보내지 않아 Victim이 SYN Received 상태로 ACK 패킷을 계속 기다리는 상태로 만든다. (Backlog에 빠지도록 만든다.)2. 이런식으로 계속 SYN 패킷을 보내어 Victim의 Backlog Queue를 초과하도록 만든다. -> 대응책1. Backlog Queue크기를 늘려준다. 2. System 보안 패치를 한다.3. SYN Cookie를 이용한다.4. IDS, IPS에서 정형화된 SYN Flooding 패킷을 탐지한다. -> SYN Cookie- 클라이언트로 ..

Ping of Death

* Ping of Death-> 원리- ICMP Echo Request 패킷의 크기를 정상 크기보다 아주 크게 만들어 공격 네트워크에 도달하는 동안 아주 작은 조각으로 쪼개져 Victim이 쪼개진 조각을 모두 처리하게 하여 부하가 걸리도록 하는 공격이다. -> 대응책1. 반복적으로 들어오는 일정한 수 이상의 ICMP 패킷을 무시하도록 설정한다. (대부분의 시스템에서 이미 설정이 되어있다.)2. System 보안 패치를 한다. [실습]- 실습을 진행하기 전 다음과 같은 토폴로지를 구성한다. - R2에서 MTU를 500으로 설정해준다. - R1에서 R3로 패킷 size를 1000으로 설정하여 ping을 보낸다.- R2에서 MTU을 500으로 설정했으므로 패킷이 쪼개져 도달할 것이다. - 실제로 쪼개져 도달하..

DOS, DDOS, DRDOS

DOS(Denial of Service)공격- 타겟 시스템의 자원을 고갈 시키거나 네트워크 대역폭을 초과시켜 원래 의도된 용도로 사용하지 못하게 하는 공격이다. (가용성을 침해한다.)- DDOS와의 차이점은 Attacker가 직접 공격을 수행한다는 점이다. DOS공격 유형Ping of Death개념- ICMP Echo Request 패킷의 크기를 정상 크기보다 아주 크게 만들어 공격 네트워크에 도달하는 동안 아주 작은 조각으로 쪼개져 Victim이 쪼개진 조각을 모두 처리하게 하여 부하가 걸리도록 하는 공격이다. 대응법1. 반복적으로 들어오는 일정한 수 이상의 ICMP 패킷을 무시하도록 설정한다. (대부분의 시스템에서 이미 설정이 되어있다.)2. System 보안 패치를 한다. - 실습은 http://i..

Switch Jamming

* Switch Jamming(MACOF, Mac Overflow)-> 원리- 스위치에 랜덤한 형태로 생성한 MAC Address를 가진 패킷을 무한대로 보내면, 스위치에 해당 MAC address가 등록이 되어 MAC Table은 자연스럽게 저장용량을 넘게 되어 스위치의 원래 기능을 잃고 더미 허브처럼 작동하게 된다. 즉, 스위치는 Forwarding이 아닌 Broadcast하게 된다.- 허브와 스위치 장비에 대해서는 http://itlearner.tistory.com/262?category=785283

ICMP Redirect

* ICMP Redirect-> 원리- 라우터가 송신 측 호스트에 적합하지 않은 경로로 되어 있으면 해당 호스트에 대한 최적 경로를 다시 지정해주는 ICMP Type이다.- 이를 악용하면 패킷을 가로채는 것이 가능하다. [실습] - 실습 환경 : Victim -> WindowsXP ( IP : 10.10.10.10) - 실습 환경 Attacker -> BackTrack ( IP : 10.10.10.30)- 실습을 진행하기 전에 아래와 GNS3을 이용하여 아래와 같이 토폴로지를 구성한다. - 다음과 같은 명령어를 이용하여 icmpush를 다운받는다. wget http://security.ubuntu.com/ubuntu/pool/universe/i/icmpush/icmpush_2.2-6.1_i386.deb ..