포트 스캔

타겟의 어느 포트의 서비스를 운영하는지 파악하기 위해 수행

타겟이 특정 서비스를 운영 중이라면 해당 서비스와 관련된 프로그램의 취약점으로 공격 가능


준비 환경

1. CentOS - 타겟, NAT, 192.168.1.100/24

2. Kali Linux - 해커, NAT, 192.168.1.77/24

데비안 계열인 Kali Linux 네트워크 설정법

/etc/network/interfaces 파일 수정

auto eth0

iface eth0 inet static

address 192.168.1.77

netmast 255.255.255.0

gateway 192.168.1.2

dns-nameservers 8.8.8.8


service networking restart

/etc/init.d/networking restart



수동 스캔

telnet [타겟 IP] [포트 번호]

텔넷으로 직접 타겟 IP와 포트 번호로 접근하여 확인



nmap 스캔 툴 이용

Kail Linux에서 CentOS로 포트 스캔하는 과정을 WireShark로 캡쳐 / 22번 포트만 열려 있는 상태


TCP Open Scan

nmap -sT -p [포트번호]-[포트번호] [타겟IP]

nmap -sT -p 1-100 192.168.1.100    // 192.168.1.100의 포트 번호 1~100번까지 TCP Open Scan 명령어

TCP 프로토콜의 3 Way-Handshake 과정

열려있는 포트에 TCP SYN 패킷을 보내면 SYN+ACK가 서버로부터 전달

닫혀있는 포트에 SYN 패킷을 보내면 RST+ACK가 서버로부터 전달, 이를 이용해서 확인하고 싶은 서비스의 포트로 SYN를 보내서 확인 가능

Open Scan의 경우 3 Way Handshake 과정을 전부 수행하기 때문에 타겟에게 해커의 정보가 남게된다


CentOS(192.168.1.100)의 22번 포트를 스캔

TCP의 3-Way HandShake 과정을 모두 거친 것을 확인할 수 있으며

마지막에 Kali(192.168.1.77)가 CentOS(192.168.1.100)에게 응답을 보냄으로써 타겟에게 접근 정보를 남기게 된다



CentOS(192.168.1.100)의 23번 포트를 스캔

TCP의 3-Way HandShake 과정이 실패한 것을 확인할 수 있으며 23번 포트는 닫혔다는 것을 확인할 수 있다



TCP Half Scan

nmap -sS -p [포트번호]-[포트번호] [타겟IP]

nmap -sS -p 1-100 192.168.1.100    // 192.168.1.100의 포트 번호 1~100번까지 TCP Half Scan 명령어

Half Scan의 경우 3 Way-handshake 과정을 전부 수행하지않고 중간에 확인만하고 중단하기 때문에 타겟에게 해커의 정보가 남지 않는다


CentOS(192.168.1.100)의 22번 포트를 스캔

TCP의 3-Way HandShake 과정을 모두 거친 것이 아니라 ACK 패킷을 보내지 않음으로써 일방적으로 끊은 것을 확인할 수 있다



CentOS(192.168.1.100)의 23번 포트를 스캔

TCP의 3-Way HandShake 과정이 실패한 것을 확인할 수 있으며 23번 포트는 닫혔다는 것을 확인할 수 있다


FIN Scan

nmap -sF -p [포트번호]-[포트번호] [타겟IP]

nmap -sF -p 1-100 192.168.1.100    // 192.168.1.100의 포트 번호 1~100번까지 FIN Scan 명령어

열려있는 포트는 FIN 패킷을 받았을 때 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답


CentOS(192.168.1.100)의 22번 포트를 스캔

CentOS(192.168.1.100)에게 FIN 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다



CentOS(192.168.1.100)의 23번 포트를 스캔

CentOS(192.168.1.100)에게 FIN 패킷을 보낸 결과, RST, ACK 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다



X-max Scan

nmap -sX -p [포트번호]-[포트번호] [타겟IP]

nmap -sX -p 1-100 192.168.1.100    // 192.168.1.100의 포트 번호 1~100번까지 X-mas Scan 명령어

FIN+PSH+URG 플래그를 이용하여 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답


CentOS(192.168.1.100)의 22번 포트를 스캔

CentOS(192.168.1.100)에게 FIN+PSH+URG 플래그를 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다



CentOS(192.168.1.100)의 23번 포트를 스캔

CentOS(192.168.1.100)에게 FIN+PSH+URG 플래그를 보낸 결과, RST, ACK 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다



NULL Scan

nmap -sN -p [포트번호]-[포트번호] [타겟IP]

namp -sN -p 1-100 192.168.1.100    // 192.168.1.100의 포트 번호 1~100번까지 NULL Scan 명령어

아무 플래그도 사용하지 않으며 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답


CentOS(192.168.1.100)의 22번 포트를 스캔

CentOS(192.168.1.100)에게 플래그 없이 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다



CentOS(192.168.1.100)의 23번 포트를 스캔

CentOS(192.168.1.100)에게 플래그 없이 패킷을 보낸 결과, RST, ACK 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다



UDP Scan

nmap -sU -p [포트번호]-[포트번호] [타겟IP]

namp -sU -p 1-100 192.168.1.100    // 192.168.1.100의 포트 번호 1~100번까지 UDP Scan 명령어

UDP를 이용하여 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 ICMP Port Unreachable 패킷으로 응답


CentOS(192.168.1.100)의 22번 포트를 스캔

CentOS(192.168.1.100)에게 UDP 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다



CentOS(192.168.1.100)의 23번 포트를 스캔

CentOS(192.168.1.100)에게 UDP 패킷을 보낸 결과, Destination unreachable 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다




Decoy Scan

nmap -sT -p [포트번호]-[포트번호] -D [임의 IP],[임의 IP],.. [타겟IP]

nmap -sT -p 1-100 -D 1.1.1.1, 2.2.2.2 192.168.1.100

스캔할 때 설정한 IP를 출발지 IP로 설정해서 실제 해커의 IP와 섞어서 보내는 공격


CentOS(192.168.1.100)의 22번 포트를 스캔

CentOS(192.168.1.100)에게 X-mas Scan과 동일하게 FIN+PSH+URG 플래그를 보내지만 Kali Linux를 포함하여

설정한 IP주소(1.1.1.1, 2.2.2.2)도 포함하여 패킷을 보냈고 응답이 없는 것으로 보아 22번 포트는 열려 있다는 것을 확인할 수 있다



CentOS(192.168.1.100)의 23번 포트를 스캔

CentOS(192.168.1.100)에게 X-mas Scan과 동일하게 FIN+PSH+URG 플래그를 설정한 IP주소(1.1.1.1, 2.2.2.2)를 포함하여 보낸 결과,

RST, ACK 응답을 보냈고 23번 포트가 닫혀 있다는 것을 확인할 수 있다




IDLE Scan

nmap -sI [도메인] -p [포트번호]-[포트번호] [타겟IP]

다른 IP로 위장해서 스캔 공격



'IT > Network' 카테고리의 다른 글

네트워크 보안  (0) 2018.10.23

Network Security


준비물 : Kali Linux(우분투 리눅스 기반 OS, 여러 종류의 해킹 및 보안 관련 프로그램이 설치되어 있는 OS)


일반적인 해킹 과정

정보 수집 -> 취약점 확인 -> 관리자 권한 획득

(정보 : OS 버전, 응용 프록램, IP주소, 도메인 등)



정보 수집

구글 검색

intilte:[검색어] - 탭 제목에 포함된 내용으로 검색

filetype:[검색어] - 특정 파일 확장자로 검색

site:[검색어] - 특정 도메인 주소 검색

inurl:[검색어] - URL에 포함된 문자 검색


정보 수집 사이트

news.netcraft.com : Internet Data Mining -> Hosting Provider -> Analysis -> 오른쪽에 정보를 수집하고 싶은 도메인 입력

(서버의 OS정보, 웹 서버 정보 , IP 등 확인 가능)

archive.org : 특정 도메인의 업데이트 내역 기록

zone-h.org : 취약점이 존재하는 홈페이지 기록



네트워크 패킷을 이용한 해킹

포트스캔을 이용한 정보수집

타겟이 서비스 중인 서비스를 파악하기 위해 수행(ex. 포트번호 80번은 웹, 53번은 DNS 등 해당 서비스가 서비스 중인지 확인)

타겟이 특정 서비스를 실행 중이면 해당하는 서비스와 관련된 프로그램의 취약점으로 공격 가능


TCP Open Scan

TCP 프로토콜의 3 Way-Handshake 과정으로 열려있는 포트에 TCP SYN 패킷을 보내면 SYN+ACK가 서버로부터 전달

닫혀있는 포트에 SYN 패킷을 보내면 RST+ACK가 서버로부터 전달된다 이를 이용해서 확인하고 싶은 서비스의 포트로 SYN를 보내서 확인 가능

Open Scan의 경우 3 Way Handshake 과정을 전부 수행하기 때문에 타겟에게 해커의 정보가 남게된다

nmap -sT -p [포트번호]-[포트번호] [타겟IP]


TCP Half Scan

Half Scan의 경우 3 Way-handshake 과정을 전부 수행하지않고 중간에 확인만하고 중단하기 때문에 타겟에게 해커의 정보가 남지 않는다

nmap -sS -p [포트번호]-[포트번호] [타겟IP]


FIN Scan

열려있는 포트는 FIN 패킷을 받았을 때 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답

nmap -sF -p [포트번호]-[포트번호] [타겟IP]


X-mas Scan

FIN+PSH+URG 플래그를 이용하여 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답

nmap -sX -p [포트번호]-[포트번호] [타겟IP]


NULL Scan

아무 플래그도 사용하지 않으며 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답

nmap -sN -p [포트번호]-[포트번호] [타겟IP]


UDP Scan

UDP를 이용하여 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 ICMP Port Unreachable 패킷으로 응답

nmap -sU -p [포트번호]-[포트번호] [타겟IP]


Decoy Scan

스캔할 때 설정한 IP를 출발지 IP로 설정해서 실제 해커의 IP와 섞어서 보내는 공격

nmap -sT -p [포트번호]-[포트번호] -D [임의 IP],[임의 IP],.. [타겟IP]


IDLE Scan

다른 IP로 위장해서 스캔 공격

nmap -sI [도메인-p [포트번호]-[포트번호] [타겟IP]


스니핑과 스푸핑

스니핑 : sniff에서 유래되어 상대 네트워크 패킷을 훔쳐보는 공격(소극적)

스푸핑 : spoof에서 유래되어 무언가를 조작해서 속이는 공격(적극적)


ARP 스푸핑을 이용한 스니핑

ARP 프로토콜은 IP주소를 이용해서 MAC주소를 알아오는 프로토콜

ARP 요청 패킷을 브로드캐스트로 보내고 상대방에게 ARP 응답 패킷을 받으면 해당 내용을 ARP 테이블에 등록

이 때 응답 패킷을 받는 시스템에서는 어떠한 확인 절차 없이 응답 패킷의 내용을 등록

만약 해커가 ARP 응답 프로토콜을 출발지 IP주소를 GW 주소로 설정하고, 출발지 MAC주소를 해커의 MAC주소로 변경한 후

응답 패킷을 보내면 해당 패킷을 받는 시스템은 GW와 통신할 때 해커에게 모든 패킷을 전달


보안

방화벽, 공유기의 설정에서 ARP 보안 설정, ARP 테이블을 Static으로 설정


사이드 재킹

MITM 공격을 수행 중일 때 사용자의 인터넷 이용 기록(쿠키)을 기록하는 공격


promiscuous모드를 이용한 스니핑

promisc모드는 자신이 목적지가 아닌 패킷도 전부 받아들이는 것


리눅스 네트워크 장치의 기능을 이용하는 방법

ifconfig [네트워크 장치명] promisc    //설정

ifconfig [네트워크 장치명] promisc    //해제


Wireshark의 기능을 이용하는 방법

Wireshark 패킷 캡처 전 설정에서 promiscuous모드 체크


ICMP Redirect를 이용한 스니핑

ICMP의 Type 5번 패킷을 이용한 타겟의 라우팅 테이블의 특정 라우팅 정보를 수정 또는 추가


hping3 -1 --icmptype 5 -- icmpcode 1 -a [GW IP] --icmp-ipdst [타겟->목적IP] -- icmp-gw [해커IP] --icmp-ipsrc [타겟IP] [타겟IP]

(개행없이 한 줄 코드)



dsniff 도구

각종 스니핑 기법들을 위한 자동화 도구, 단순한 도구가 아닌 스니핑을 했을 때 필요한 추가적인 툴을 가지고 있다

filesnarf : NFS를 이용해서 파일을 접근 또는 저장할 때 해당 파일을 해커 디스크에 저장

urlsnarf : HTTP의 모든 URL을 기록

mailsnarf : SMTP, POP3 프로토콜로 통신하는 메일 송수신 내용을 기록

arpspoof : ARP 스푸핑 공격

dnsspoof : DNS 스푸핑 공격

'IT > Network' 카테고리의 다른 글

네트워크 보안 : 포트 스캔 실습  (0) 2018.10.31

+ Recent posts