작은 메모장
12. Port Scan과 Spoofing, DDoS 본문
스캔 공격의 종류에 대해서 더 알아보자
TCP Half Open Scan
$nmap -sS [target IP]
TCP Full Open Scan은 세션에 대한 로그가 남는다는 단점이 있다. 이 단점을 해결할 수 있는 것이 TCP Half Open Scan.
공격 대상으로부터 SYN/ACK 패킷을 받으면 공격자는 RST 패킷을 보내 연결을 강제로 끊는다.
즉, 세션 수립의 거이 마지막까지 진행하다가 클라이언트쪽에서 강제로 세션을 끊어 로그를 남기지 않게 하는 것.
Stealth Scan
위의 두 포트스캔과는 다르게, 3 Way Handshaking 연결 기법을 사용하지 않는 스캔.
TCP 헤더를 조작하여 특수한 패킷을 만든 후, 스캔 대상의 시스템에 보내 그 응답으로 포트 활성화 여부를 확인하는 스캔이다.
세션을 성립하지 않고 포트 활성화 여부를 알아내기 때문에, 공격 대상 시스템에 로그를 남지기 않는다는 것이 특징.
또한 대상 시스템 관리자는 어떤 IP를 가진 공격자가 시스템을 스캔하였는지 알 수 없음.
FIN Scan
$nmap -sF [target IP]
스텔스 스캔의 일종으로, TCP 플래그 중에 FIN 스캔만 설정하여 전송한다.
즉, 연결한 적 없는 세션을 끊는다는 메세지를 보낸다는 것.
TCP 통신 특성상, 이상한 패킷이 들어오면 그냥 패킷을 버린다.
단, 닫혀있는 포트로 패킷이 들어오면 포트가 닫혀있다고 친절하게 알려준다. 그 점을 악용한 공격
Xmas Scan
$nmap -sX [target IP]
스텔스 스캔의 일종으로, TCP 헤더 내에서 UGR, PSH, FIN 플래그를 동시에 설정해서 전송하는 스캔.
원리는 FIN scan과 동일하다. 일부로 플래그가 망가진 패킷을 보내 반응을 살핀다는 것.
Null Scan
$nmap -sN [target IP]
스텔스 스캔의 일종으로, TCP 헤더 내에서 어떠한 플래그도 설정하지 않고 전송하는 스캔.
원리는 FIN scan과 동일하다. 일부로 플래그가 망가진 패킷을 보내 반응을 살핀다는 것.
UDP Scan
$nmap -sU [target IP]
TCP의 취약점이 아닌 UDP의 취약점을 이용한 스캔 공격으로, ICMP 메시지의 여부를 보고 열린 포트를 판단한다는 것.
IP 프로토콜의 취약함으로 인해 오류제어를 해주는 ICMP 프로토콜이 따로 동작하고 있음.
브로드캐스트로 패킷을 뿌리는 UDP 특징 상, 그 응답을 기대하기 힘듬, 그리고 그 응답에는 당연히 오류 정보도 포함되어 있다.
이를 백업해주는 것이 ICMP인데, 이 점을 악용 한 공격.
수식측으로 UDP를 날린 후, ICMP Port Unreachable 에러 메시지가 오는지 확인한 후 포트 활성화 유무를 확인한다.
피싱, 스미싱, 파밍
피싱: 위조된 이메일을 발송해 가짜 사이트로 접속을 유도
스미싱: 위조된 문자 메시지를 사용하여 가짜 프로그램 혹은 가짜 사이트로 접속을 유도
파밍: 피싱, 스미싱의 발전형으로, 만들어둔 사이트로 접속을 유도하고, 정상 도메인으로 접속해도 가짜 사이트로 접속을 유도
Sniffing: 도청, 감청이 목적인 공격, 중간자로 정보를 얻어내는 공격이다.
Spoofing: 속이기, 위장하기가 목적인 공격, 중간자로 정보 및 권한까지 얻어내는 공격이다.
ARP Spoofing
#arpspoof -i eth0 -t [target IP] [spoofing IP]
2계층에서 작동하는 공격. 공격 대상이 같은 랜에 있어야 한다는 특징이 있다.
MAC 주소를 속이는 공격으로, 게이트웨이로 가야할 데이터를 공격자에게로 향하게 한 후, 공격자가 그 데이터를 다시 목적지로 보내 감청당한다는 것을 알아차리지 않도록 하게 만드는 공격
근데 MAC 주소를 어떻게 속일 것인가? ARP 테이블의 저장 방식을 악용한다.
공격자는 대상자에게 지속적으로 게이트웨이의 MAC 주소가 변경되었다고 ARP 갱신 트래픽을 전송한다.
이걸 곧이곧대로 믿는 대상자는 자신의 ARP 테이블에 저장된 게이트웨이 주소 MAC 주소를 공격자의 MAC주소로 보낸다.
이 상태에서 대상자가 게이트웨이로 정보를 보내게 된다면, 공격자에게 정보가 전달된다.
실습해보자
칼리리눅스(10.10)에서 setoolkit을 사용해 Facebook이랑 똑같은 사이트를 복제한다. 설정은 1 > 2 > 3 > 2
잘 만들어졌는지 IP로 접속해 확인하면, facebook이랑 똑같은 사이트가 나온다.
즉, 복제된 사이트로 잘 만들어졌음을 확인했다.
공격자의 IP/MAC을 확인해보자
192.168.10.10 / 00:0c:29:bb:21:b7임을 확인할 수 있다.
대상자의 arp 테이블에서도 동일함을 확인할 수 있다. 이제 공격을 시작해보자.
arpspoof를 이용하여 10.10에게 10.2의 MAC주소가 자기라고 속이고 있다.
Opcode 상에서도 2번, 즉 reply라고 일방적인 응답을 계속 보내고 있음을 확인할 수 있다.
대상자에서 arp 테이블을 확인하면, 게이트웨이 주소가 공격자 MAC으로 바뀌어 있는것을 확인할 수 있다.
DNS Spoofing
#vim /dns
192.168.10.10 [target Domain]
#dnsspoof -f /dns
ARP Spoofing이 ARP를 속이는 거였다면, DNS Spoofing은 DNS을 속이는 것이다.
DNS Spoofing은 공격 방법이 상당히 다양한데,
- Target와 같은 LAN 구간에서 DNS 캐시를 조작하여 속인다.
- Host 파일을 조작하여 속인다.
- Target 네트워크 망과 상관없이 위조 DNS 서버를 하나 만들어 속인다. 요즘엔 이걸 많이 쓴다.
ARP Spoofing에 이어 이를 실습해보자
최상위 디랙토리(혹은 찾기 쉬운 디랙토리)에 vim편집기로 dns 파일을 만들어준다.
만든 파일을 실행시킨다. 이제 확인해보자.
대상자 환경에서 www.sks.com의 IP가 공격자의 IP로 바뀐 것을 확인할 수 있다.
인증서 문제가 있긴 하지만, 위조한 도메인으로 접속하면 정해진 html을 불러오는 것을 확인할 수 있다.
dns 테이블 상에서도 공격자의 IP가 적힌것을 확인할 수 있다.
DDoS
Distributed Deny of Service
분산 서비스 거부 공격
DDoS는 DoS의 파생형이다. DoS는 무엇인가?
특정 대상을 대상으로 공격 하나가 대상 하나로 과도한 트래픽 혹은 패킷을 전송하는 공격이다.
아시다시피 DoS공격의 핵심은 물량인데, 보내는 양보다 처리하는 양이 훨씬 상회하기 때문에 별 효과가 없었다.
이에 나온것이 DDoS인 것.
서비스 거부 공격은 알겠는데, 왜 분산이란 말이 들어갈까?
이유는 간단하다, DoS를 날리는 단말을 분산시켜 동시에 DoS를 하는 것
그래서 분산이다.
공격자는 C&C(Command & Control) 서버를 관리하고, 명령을 잘 수행하는 좀비 PC를 양산하여 공격을 수행할 때 여러대의 좀비 PC가 한 대상을 공격하게 만드는 과정이다.
DDoS가 공격을 하는 원리는 간단하다.
전송 매체(LAN Cable 등), 서버 자원(CPU, RAM)등이 수용할 수 있는 성능보다 압도적으로 많은 요청을 날려 처리를 하지 못하게 만드는 것.
10G까지 수용할 수 있는 케이블에 100G짜리 데이터를 계속 날리면 어떻게 될까?
일반적인 서버에 1초에 500만개의 요청을 전송하면 어떻게 될까?
SYN Flooding Attack
$hping3 --rand-source [target IP] -p 80 -S --flood
SYN Flooding, 즉 SYN 요청을 다량으로 전송하여 대상의 HTTP 서비스를 정지시키는 공격
이런 공격은 대충 10초 내에 50만여개의 SYN을 전송하는 다량을 공격이다.
SYN 요청이 들어오면 서버는 요청한 IP에 대해 ACK 응답이 올 지도 모른다는 기대로 SYN-ACK를 보내놓고 기다리게 된다. 문제는 공격자가 보낸 대부분의 IP는 랜덤하게 만들어진 가짜 IP라는 점.
존재하지도 않는 IP에 SYN-ACK를 보냈으니 응답이 있을리가 없고, 설령 존재하더라도 관련없는 요청이 들어왔다고 무시하게 된다.
결국 서버는 응답없는 IP를 위해 작업공간을 계속 내주고 있어야하며, 이것이 계속 쌓이게 된다면 결국 남은 가용공간이 사라져 정지되게 되는 원리다.
이를 실습해보자.
실습 또한 간단하다. 명령어에 맞게 대상 IP 적고 전송하면 끝
10초가량 실행했는데 2500만개 가량의 패킷이 전송된 모습을 볼 수 있다.
Port Scan과의 큰 차이점은 Source IP가 계속 변한다는 것이다.
Port Scan은 정보를 받아야하기 때문에 Source IP가 무조건 공격자로 정해져 있지만, DDoS는 서비스 중지가 목적이기 때문에 Source IP가 계속 변하게 된다.
Fragmentation Flooding Attack
$hping3 --icmp --rand-source [target IP] -d 65000 --flood
Ping of Death라고도 불리는 공격으로, 패킷이 분할되는 단편화(Fragment)의 취약점을 이용한 공격이다.
네트워크 최대 전송단위 MTU를 아득하게 넘긴 데이터 크기의 패킷을 다량으로 전송하여 서버의 가용성을 정지시키는 공격.
네트워크 기기가 전송할 수 있는 최대 전송량은 MTU로 정해져 있으며, 이를 넘기게 되면 자동으로 단편화가 일어나 패킷이 분할되어 전송되게 된다.
그렇다면 이 MTU 수치를 한참 넘긴 데이터를 전송하면, 1개의 패킷 전송으로 수백개의 패킷 전송을 보낸 효과를 얻을 수 있다.
이에 착안하여 만들어진 공격이다.
이를 실습해보자.
너무 크기가 크면 시스템이 다운 될 수 있으므로, 적당히 큰 사이즈로 보내주자
약 5초간 전송했는데, 8500개 가량이 전송된 것을 확인할 수 있다.
Ping of Death의 가장 큰 특징은, 데이터가 58 바이트로만 구성이 되어있다는 것이다.
이를 이용해 방화벽으로 선제적인 방어가 가능하기도 하다.
'실더스 루키즈 교육' 카테고리의 다른 글
14. GoogleDork (0) | 2023.12.14 |
---|---|
13. 보안장비와 NSM (0) | 2023.12.11 |
11. 실습용 Network 구축 (0) | 2023.12.07 |
10. MTU/MSS, ICMP 개요 (0) | 2023.12.06 |
9. TCP/IP (0) | 2023.12.05 |