728x90

NMAP

 

/ nmap
- 리눅스용 nmap
- 윈도우용 nmap -> zenmap
- 고든 라이온 이라는 사람이 만든었다.
- 스캐닝
- 방화벽에 막혀서 못하는 경우도 있다.
- '-f' 옵션을 쓰면 방화벽을 뚫고 들어갈 수도 있다.
- nmap 스캔 결과로 운영체제도 알 수 있고, 구동 서비스(포트로 추정), 버전 등도 알 수 있다.
- 네트워크 카드도 확인 가능 하다.

/ 스텔스 스캔
- 상대방을 스캐닝 했는데 상대방은 모르는 것
- 종류 알아보기
- 상대방의 포트가 opened 되어 있을 때의 결과와 closed되어 있을 때의 결과가 다르다.
- 그 결과를 메시지로 받아보거나 패킷 분석(tcpdump, wireshark)을 할 수 있다.
- 세션을 완전히 성립하지 않고, 공격 대상 시스템의 포트 활성화 여부를 알아낸다.

/ 설치 전 확인
# rpm -qa nmap
# rpm -qa | grep nmap
# yum list nmap

 

/ 설치
# yum -y install nmap
- 실행할 때만 실행하는 애라서 ps -ef나 netstat으로 확인하지는 않는다.

/ 실행
# nmap localhost

- localhost로 보는거랑 컴퓨터 아이피로 보는것이랑 결과가 조금 다른것을 볼 수 있다. 

- 이번엔 클라이언트 리눅스를 확인해본다.
# nmap 192.168.111.128



- 이번에는 클라이언트 리눅스의 방화벽을 내리고 다시 nmap을 던져본다.
클라이언트 # systemctl stop firewalld
서버 # nmap 192.168.111.128

 

- 이번에는 클라이언트에서 80 포트를 nc서버로 띄워본다.
클라이언트 # nc -lk 80
서버 # nmap 192.168.111.128



/ 포트 스캐닝
- 능동 공격에 해당 된다. (Active Attack)
- 수동 공격(Passive attack)은 nslookup, whois등이 있다.
- 공격 전에 도둑님이 이런저런 정보를 모으는것을 '풋프린팅'이라고 한다.
- 도둑님이 들어가서 데이터를 유출하거나 가져오는것을 '핑거프린팅'이라고 한다.
- 포트 스캐닝은 풋프린팅과 핑거프린팅 사이에 있다.

/ nmap 사용방법
# nmap 옵션 대상

 

/ 스캔 종류
- 오픈 스캔(일반)
    > nmap -sT 상대방ip
    > 포트가 열려있으면 정보가 확인된다. (open)
    > 포트가 닫혀있으면 'RST+ACK'가 확인된다.
    > 닫혀있으면 목적지에서 '리셋+ACK'가 날라오기 때문이다.(3-way-핸드쉐이킹에서)

- 하프 오픈 스캔(Half-open scan)
    > TCP SYN open scan
    > nmap -sS 상대방ip
    > 3-way-핸드쉐이킹에서 마지막에 ack를 보내지 않는다. 목적지에서는 마지막에 ack가 오지 않아서 포트가 열리지 않는다.
    > 목적지의 가용성을 떨어트린다. (목적지가 ack를 기다려서..)
    > 악의적의 의도로 사용하게 되면 디도스의 공격으로 사용되게 된다.
    > 포트가 열려있으면 SYN+ACK응답이 온다.
    > 포트가 닫혀있으면 'RST+ACK'가 확인된다.
    > 닫혀있으면 목적지에서 '리셋+ACK'가 날라오기 때문이다.(3-way-핸드쉐이킹에서)

- 스텔스 스캔
    > 상대방에게 정체를 들키지 않고 스캔하는 것
    > 하프 오픈도 범위를 크게 가져가면 스텔스에 들어간다.
    > 스텔스 스캔 중 열려있을때 응답이 오는 것은 '하프 오픈 스캔'밖에 없다.

/ 스텔스 스캔
- FIN Scan
    > 다짜고짜 FIN를 보내는 것
    > opened 상태에서는 응답이 없다.
    > closed 상태에서는 RST+ACK를 응답한다.
    > 000001을 보낸다. 그럼 010100(RST+ACK)이 온다.
    > nmap -sF 상대방ip
- Xmas Scan
    > 스캔을 보낼때 헤더에 데이터를 넣는데 6개의 항목중에 어디에는 넣고 어디에는 안 넣고 하는 것
    > opened 상태에서는 응답이 없다.
    > closed 상태에서는 RST+ACK를 응답한다.
    > 보낼때 101001(반짝반짝)을 보낸다. 그럼 010100(RST+ACK)이 온다.
    > nmap -sX 상대방ip
- Null Scan
    > 신호가 아무것도 없는 상태로 스캐닝을 보낸다.
    > opened 상태에서는 응답이 없다.
    > closed 상태에서는 RST+ACK를 응답한다.
    > 000000을 보낸다. 그럼 010100(RST+ACK)이 온다.
    > nmap -sN 상대방ip

/ TCP ACK 스캔
- nmap -sA 상대방ip
- 상대방 포트를 스캐닝 하는것이 아니라 방화벽 필터링 정책을 스캐닝하는것이 목적이다.
- 상태기반 방화벽인지, 포트필터링(패킷필터링)
- ACK와 목표로 하는 포트번호를 계속 보낸다.
- 만약 방화벽 필터링이 살아있을 경우 응답없음이나 ICMP 에러메시지가 발생된다.
- 필터링이 닫혀있으면 RST+ACK가 확인된다.

/ UDP 포트 스캔(udp 신호를 보내서 udp포트 오픈/닫힘)
- nmap -sU 상대방ip
- opened : udp 응답 또는 응답없음
- Closed : icmp 에러 메시지

/ Decoy 스캔
- nmap -sS 목적지ip -D
- 공격자가 누군지 모르게 스캔

/ TCP 헤더 6개
- '우압알스프'로 외우자..ㅋㅋ 우와 배고프다 알스프가 먹고싶다.
- Urgent : 
- Ack : 
- Push : 
- Reset : 
- Syn : 맨처음에 syn을 보내야 하니까 여기에 플래그가 꽂힌다.
- Fin : 여기에만 신호가 들어가 있으면 finish신호이다.

Urgent  Ack Push Reset  Syn Fin

ex ) 000001 이후에 010100이면 무엇일까? Fin scan이다.

/ 그 외 스캔
- 상대방 os를 파악하는 것 : nmap -O 상대방ip
- 지정된 포트를 스캔할대 : nmap -p 포트번호 상대방ip
    ex) nmap -p 22,80,8080 상대방ip
- UDP 포트 스캔 : nmap -sU 상대방ip
- 방화벽 통과 시도시에는 -f 옵션을 사용  : nmap -f -sS 상대방ip
- 스캔 결과에 대한 자세한 세부사항을 보고 싶을때는 -v 옵션을 사용(verbose) : nmap -v -sS 상대방ip

728x90

+ Recent posts