현재 포트스캔을 진행하기 위해 Nmap을 사용했으며, 추가로 스캔 진행하는 IP를 숨기기 위해 Tor, proxychains을 사용함
proxychains nmap -sS -n -Pn -sV --open -O -r -max-rate 32 --max-rtt-timeout 1 -T5 -p 1-65535 -oX [대상IP].xml
# DNS 서비스 확인 스크립트
curl ifconfig.me dig {} / nslookup {} / ping {} / tracert {} |
# Nmap 시스템 콜 스크립트
nmap -sS -n -Pn -sV --open -O -r -max-rate 32 --max-rtt-timeout 1 -T5 -p 1-65535 -oX [대상IP].xml nmap -sT -PN -n -sV -max-rate 32 --max-rtt-timeout 1 -r -T5 -p {}-{} {} nmap -sS -PN -n -sV -max-rate 32 --max-rtt-timeout 1 -r -T5 -p 1-65535 --scan-delay 3 127.0.0.1 |
# tcpdump 스크립트
tcpdump -i eth0 dst {목적지IP} tcpdump -i eth0 -w {}.log |
※ 진행은 EC2 인스턴스에 SSH로 연결 후 스캔을 시도했으며, 다수 URL대상으로 정보수집을 진행하였음.
>>Troubleshooting
Q. Library error name of the lib...'libproxychains.so.3'
->snap을 이용해 관리중인 명령어를 직접 exported(환경변수설정)으로 해결
ex) export PATH=$PATH:/bin/nmap
->또한, nmap재설치하기도 했음
Q. Elastic IP address could not be associated
->할당이 가능한 외부 주소를 인스턴스와 매핑하여 해결
Q. /etc/proxychain.conf Error
->실제 존재하는 프록시를 거치는지 확인하여 해결
Q.특정 옵션이 안됨(-sT, -sS)
->apt remove nmap;apt install nmap으로 해결
Q. timeout / socket confused
->timeout은 호스트 아이피에 대해 응답 수신이 어려웠기 때문에 고정IP로 해결함
->confused는 권한 상관없이 거절되는 문제로 아직 해결중
Q. segmentation fault (core dump)
->해결중이긴한데, 접근해서는 안되는 메모리 영역을 참조해서 발생한다고 나오긴하는데
현재까지 판단되는것은 array크기 보다 큰 index를 엑세스해서 그런거 같음.
어디서? 응답 데이터를 받을때 *(어퍼스트로피)값으로 할당하는것을 ?(물음표)로 대체하여 길이를 지정해보자
sed -i bak '/(?:(?!\\r/ s/^/#/' nmap-service-probes
(NULL영역을 건들거나, 할당받은 메모리영역을 해제할때 발생한건가?)
Q. looks like an IPv6 target specification
-> nmap옵션 중 -6가 있음. 이걸로 해결
1. 스캐닝 방법
스캔 | 옵션 | 설명 |
TCP SYN 스텔스 | -sS | * 프로토콜(TCP) 포트를 스캔하는데 가장 빠른 방법으로 지금까지 단연 인기 있는 스캔 방법이다. 이 스캔은 연결 스캔보다 더 비밀스러우며 모든 기능적인 TCP 스택에 대해 잘 작동한다. |
TCP 연결 | -sT | * 연결 스캔은 대부분의 다른 방법처럼 로우 패킷에 의존하기 보다는 장치를 스캔하는데 같은 이름의 시스템 콜을 사용한다. 이 스캔은 대부분 권한이 없는 유닉스 사용자들이 사용하며 그런 경우 SYN 스캔이 작동하지 않기 때문에 IPv6를 대상으로 사용된다. |
UDP | -sU | * UDP포트 스캔이다. |
TCP FIN, Xmas, Null | -sF, | * 특정 목적 스캔 방법으로 방화벽 뒤에 있는 시스템을 탐험하기 위해 방화벽을 몰래 지나치는 데 사용한다. 불행히도 이 스캔들은 일부 시스템이 보여주지 않는 대상 시스템의 행동에 의존한다. |
TCP ACK | -sA | * ack스캔은 보통 방화벽 규칙 세트를 정밀하게 표시하기 위해 사용한다. |
TCP Window | -sW | * 윈도우 스캔은 ack스캔과 같은데 특정 장치에 대해서는 열린 포트와 닫힌 포트를 구별할 수 있다는 점에서 다르다. |
TCP Maimon | -sM | * 이 모호한 방화벽-침투 스캔 방법은 fin 스캔과 유사한데 ack 플래그도 포함한다. |
TCP Idle | -sI | * Idle 스캔은 모든 방법 중 가장 비밀스러운 스캔방법이며 때로는 신뢰성 있는 Ip 주소 관계조차도 탐험한다. 불행히도 이 스캔 역시 느리고 복잡하다. |
IP 프로토콜 | -sO | * 프로토콜 스캔은 어느 ip 프로토콜이 대상 장치에 의해 지원되는지를 결정한다. |
TCP FTP 바운스 | -b | * tcp FTP 바운스 스캔 종류는 FTP서버를 속여 프록시로 포트 스캔을 수행하게 한다. 대부분의 FTP 서버는 이제 이 스캔을 방지하게 패치됐다. |
2. 포트선택
옵션 | 설명 |
-p <포트> | * -p 인수를 통해 해당 포트를 지정합니다. <포트명 대신 해당 서비스가 매치될 수도 있습니다(예 : -p ssh) |
-p 22, 25, 80 | * 다수의 포트 선택은 ,로 구분지어 사용할 수 있습니다. |
-p 20-25,443,5900-5950 | * 포트의 범위를 –를 이용하여 확장할 수 있습니다. |
-p- | * 전체 포트범위(1~65535)를 스캔합니다. |
-p http* | * 와일드카드(*)는 포트와 이와 유사한 이름을 매치시키는데 사용할 수 있습니다. |
3. 스캔 성능 옵션
옵션 | 설명 |
-T[0~5] | * 타이밍 템플릿은 많은 변수에 영향을 주는데 전체 Nmap 속도를 아주 느리게(-T0)부터 아주 공격적(빠르게)으로(-T5)까지 옵션을 통해 설정할 수 있다. |
--min-rtt-timeout | * 포트 스캔 프로브가 응답하기를 기다릴 최소, 최대, 시작 시간을 지정한다. |
--host-timeout | * Nmap 이 주어진 시간보다 더 많이 걸리는 스캔은 포기하게 한다. |
--min-rate, --max-rate | * Nmap 이 초마다 보내는 프로브 패킷 숫자의 하한과 상한을 지정한다. |
--max-retries | * 하나의 포트에 전해지는 포트 스캔 프로브 재전송의 최대 숫자를 지정한다. |
--min-hostgroup | * Nmap 이 병렬로 포트 스캔할 호스트의 최소 개수와 최대 개수를 지정한다. |
--min-parellelism, --max-parallelism | * 포트 스캔 프로브의 최소와 최대 숫자를 한정 짓는다. |
--scan-delay, --max-scan-delay | * 프로브를 어느 개인 호스트에 보내는 사이에 적어도 주어진 시간동안 기다리게 한다. 스캔 지연은 패킷 손실을 탐지하면 할수록 더 커지며 최대는 –max-scan-delay로 지정할 수 있다. |
4. 출력 옵션
옵션 | 설명 |
-v | * 출력 형식을 다양하게 해 Nmap 진행 중 스캔에 대한 더 많은정보를 출력하게 한다. 열린 포트는 발견 됐다고 보여지며 Nmap 이 몇 분보다 더 많이 걸릴 거라고 생각하면 추정 완료 시간을 제공한다. |
-d | * 디버깅 레벨을 증가시켜 Nmap 이 버그를 추적하는데 유용할 수 있는 옵션에 대한 상세한 사항을 출력하게 하거나 간단히 어떻게 작동하는지에 대한 내용을 출력하게 한다. 충분한 정보를 볼 수 없다면 –d5처럼 원하는 레벨을 붙여 더 높은 레벨을 시도해 볼만 하다. |
--packet-trace | * Nmap 이 보내지거나 받은 모든 패킷의 요약을 출력한다. Nmap 이 수면 아래에서 무엇을 하는지 이해할 수 있는데 귀중한 방법이 되기도 한다. |
-oN <파일명> | * <파일명>으로 지정한 파일에 Nmap 의 일반적인 결과를 저장한다. 이 형식은 대부분 런타임으로 Nmap 에 의해 출력되는 표준 상호작용 출력과 같다. |
-Ox <파일명> | * <파일명>으로 지정한 파일에 XML 형식으로 Nmap 출력 결과를 저장한다. 이는 Nmap 결과를 처리하는 스크립트와 프로그램에 의한 사용형식에 선호된다. |
-oG <파일명> | * <파일명>으로 지정한 파일에 Nmap 의 grepable 형식으로 출력 결과를 지정한다. 이 형식은 다른 데이터로 grep,awk,sed하기 용이하다. |
-oA <파일명> | * 이 형식은 위의 3가지 출력 결과를 모두 각각의 파일명으로 출력한다. |
--open | * Nmap 의 포트 테이블 중에서 열린 포트만 보여준다. |
5. 핑 스캔
옵션 | 설명 |
-sP | * 핑 스캔(ICMP)사용, 내부단은 ARP 요청이 대신함 |
-sL | * 목록 스캔(서버가 살았는지 죽었는지 확인하는 좋은 방법) |
-PS | * TCP SYN 패킷을 보낸다.(SYN ->SYN,ACK -> RST) |
-PA | * TCP ACK 패킷을 보낸다. (위의 –PS와 비슷하지만 방화벽을 우회하기 위해 ACK를 보낸다) |
-PU | * UDP핑. 빈 UDP패킷을 해당 포트로 보낸다. TCP필터링을 피해간다. |
-PE, -PP, -PM | * ICMP 패킷용 스캔 |
-PO | * IP 프로토콜 핑. ICMP, IGMP, IP 패킷을 이용한 스캔 |
-PR | * ARP스캔 |
6. 기타 옵션
옵션 | 설명 |
-6 | * Nmap 이 IPv6프로토콜을 사용해서 대상을 스캔한다. |
-r | * Nmap 의 탐지를 더 어렵기 하기 위해서 포트 스캔 순서를 랜덤화 해서 수행한다. |
-PN | * 핑 테스트를 건너뛴다. (시간과 은닉의 장점을 추구한다.) |
--reason | * Nmap 의 포트 구별방식을 설명한다. |
>>Nmap 옵션 참고사이트
https://nmap.org/book/man-briefoptions.html
http://jsoohouse.blogspot.com/2015/03/nmap-network-scanning.html
https://4lugin.tistory.com/136
https://www.solanara.net/solanara/nmap
>>Nmap 수상한 트래픽 탐지
>>Nmap 오류(Connection refused)
>>Nmap 오류(operation already in progress)
'프로그램언어+ > ┗ Network' 카테고리의 다른 글
KISA 주요정보통신기반시설 정리 (0) | 2020.04.07 |
---|---|
오픈소스 기반 네트워크 보안 솔루션 구축 (0) | 2019.11.18 |
How to Scaning of host and port (0) | 2019.02.02 |
다양한 웹스캐너 제작기(whois, nmap, robotx등) (0) | 2019.01.14 |