포트 스캐닝 방법은 무엇입니까?

王林
풀어 주다: 2020-08-10 17:19:55
앞으로
13401명이 탐색했습니다.

포트 스캐닝 방법은 무엇입니까?

사건의 원래 원인

(추천 튜토리얼:웹 서버 보안)

저자는 침투 테스트 중에 수집해야 할 정보를 자동으로 수집하기 위해 스크립트를 사용하는 작은 도구를 작성하고 있습니다. 이 모듈에는 포트 배너 정보 수집이라는 어려운 부분이 있습니다. 처음에는 python+nmap+multi-thread 스캐닝을 사용하여 20개 이상의 IP를 스캔하려고 시도했는데 대기 시간이 지쳤습니다. . . 저자의 목표는 200개 이상의 IP를 검색하는 것입니다. 다음으로 포트 스캐닝 기술을 분석해 보겠습니다.

1. nmap 감지 포트

nmap은 여러 호스트를 스캔할 때 --min-hostgroup 매개변수를 설정할 수 있습니다. 이 매개변수를 설정하면 여러 호스트를 병렬로 스캔하고 이러한 호스트를 그룹으로 나눈 다음 한 번에 하나의 그룹을 스캔할 수 있습니다.

예:

--min-hostgroup 50 nmap은 50개의 호스트를 그룹으로 사용하며 50개의 호스트를 스캔할 때까지 결과가 표시되지 않습니다.

#coding=utf-8 import nmap from queue import Queue from threading import Thread def portscan(ip): portlist = [] nm = nmap.PortScannerYield() for r in nm.scan(ip,ports='1-10000',arguments='-sS --min-hostgroup'): m = r[1]['scan'][ip]['tcp'] for p in m: temp = str(p) + "----" +m[p]['state'] portlist.append(temp) print(portlist) class Consumer(Thread): def __init__(self, q): Thread.__init__(self) self.q = q def run(self): while not self.q.empty(): ip = self.q.get() try: portscan(ip) except Exception as e: print(e) continue def producer(ip_list): num = 10 threads = [] q = Queue() for i in ip_list: print(i) q.put(i) threads = [Consumer(q) for i in range(0,int(num))] for t in threads: t.start() for t in threads: t.join() ip_list =['120.78.207.76', '120.78.207.231', '120.78.207.18', '120.78.207.233', '120.78.207.165', '120.78.207.48', '120.78.207.112', '120.78.207.27', '120.78.207.51', '120.78.207.8'] producer(ip_list)
로그인 후 복사

포트 스캐닝 방법은 무엇입니까?

사진과 같이 10개의 IP를 실행하는데 318s가 소요됩니다.

2. Masscan 감지 포트

(1) Python Masscan 호출

기본적으로 Masscan은 syn 데이터 패킷을 보냅니다. 대상 호스트가 ack+syn을 반환하면 포트가 열려 있다는 의미입니다. 구체적인 프로세스는 다음과 같습니다

A:192.168.70.142

B:192.168.0.143 오픈 포트 3306

(1)A->B syn

(2)B->A syn+ack

( 3)A ->B RST

포트 스캐닝 방법은 무엇입니까?

열리지 않은 포트 감지

A->B syn

B->A rst

포트 스캐닝 방법은 무엇입니까?

예:

def portscan(ip): mas = masscan.PortScanner() mas.scan(ip,ports='1-65535') print(mas.scan_result)
로그인 후 복사

시스템 명령을 사용하여 감지

사용법

扫描扫描443端口的B类子网 Masscan 10.11.0.0/16 -p443 扫描80或443端口的B类子网 Masscan 10.11.0.0/16 -p80,443 扫描100个常见端口的B类子网,每秒100,000个数据包 Masscan 10.11.0.0/16 --top-ports 100 -rate 100000 结果输出 -oX filename:输出到filename的XML。 -oG filename:输出到filename在的grepable格式。 -oJ filename:输出到filename在JSON格式。
로그인 후 복사

3. 소켓 감지 포트

소켓 감지 포트는 다음과 같이 불완전한 3방향 핸드셰이크 패킷을 보냅니다.

A:192.168.70.142

B:192.168.0.143 오픈 포트 3306

A가 수신합니다. B 및 반환 syn+ack 패킷 후에 A는 데이터를 삭제합니다.

포트 스캐닝 방법은 무엇입니까?

열리지 않은 포트 감지

A는 syn을 보내고, B는 포트 33을 열지 않으므로 RST 패킷이 반환됩니다.

포트 스캐닝 방법은 무엇입니까?

def portscan(ip,port): try: s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.settimeout(0.2) status = s.connect_ex((ip,port)) if status == 0: temp_str = str(ip) + "---" + str(port) + "---open" port_list.append(temp_str) else: pass except Exception as e: pass finally: s.close()
로그인 후 복사

포트 스캐닝 방법은 무엇입니까?

IP 10개를 탐지하는데 26.3초, 거의 2.6초가 걸렸습니다.

4. 텔넷 감지 포트

텔넷 감지 포트는 완전한 3방향 핸드셰이크 연결을 사용합니다. 텔넷 IP 포트 명령을 사용합니다. 패킷 전송 프로세스는 다음과 같습니다

A:192.168.70.142

B:192.168.0.143 포트 3306

telnet 192.168.0.143 3306

과정은 다음과 같습니다:

TCP 3방향 핸드셰이크를 사용하여 연결 설정: SYN ->

포트 스캐닝 방법은 무엇입니까?

探测不存在端口,发送SYN数据包,然后RST包丢弃。

포트 스캐닝 방법은 무엇입니까?

如果有返回值,则说明端口开放,否则则端口关闭。

def portscan(ip,port): try: t = telnetlib.Telnet(ip,port=port,timeout=0.2) if t: temp_str = str(ip) + '---' + str(port) port_list.append(temp_str) except Exception as e: print(e) pass
로그인 후 복사

포트 스캐닝 방법은 무엇입니까?

探测10个ip花费了27.8s差不多一个2.7s。

5、nc探测端口

nc探测端口采用完整的三次握手连接,使用命令 nc -v -w 1 -z ip port,发包过程和telent 探测一样。

探测开放端口的数据包

포트 스캐닝 방법은 무엇입니까?

探测未开放端口的数据包

포트 스캐닝 방법은 무엇입니까?

端口开放,返回值为0,可以依此作为判断依据。

def portscan(ip,port): command = 'nc -v -w 1 -z {0} {1}'.format(ip,port) m = os.system(command) if m == 0: temp_str = str(ip) + "---" + str(port) port_list.append(temp_str) else: pass
로그인 후 복사

포트 스캐닝 방법은 무엇입니까?

备注:比如你想探测某个指定的端口开放情况,推荐使用nc。

总结

nmap 作为扫描端口的神器,扫描出的结果比其他几种方式要详细。如果追求效率的话,建议采用socket。相比于nmap,socket会存在漏报情况,笔者在测试某主机时,nmap扫出了8888端口,但是socket没有。

위 내용은 포트 스캐닝 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:secpulse.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!