Syn————syn/ack————rst
借用Scapy给目标发送一个syn包,目标回一个syn/ack包,我们不回syn包确认,回一个RST包跟目标机器断开握手,但是操作系统内核它由于不识别我们这个包,内核会自动回一个RST包断开握手。(这是操作系统替我们完成了。)
//操作系统会回一个RST表示断开连接,不进行三次握手
Scapy工具举例:
a=sr1(IP(dst="192.168.1.1")/TCP(flags="S",dport=22),timeout=1,verbose=0)
//操作系统会回一个RST表示断开连接,不进行三次握手
a=srl(IP(dst="192.168.1.1")/TCP(dport=80),timeout=1,verbose=1)
./syn_scan.py
脚本:
=======================
- !/usr/bin/python
- import logging
- logging.getlogging("scapy.runtime").setLevel(logging.ERROR)
- from scapy.all import*
- import sys
-
- if len(sys.argv)!=4
- print "Usage - ./syn_scan.py [Target.IP] [First Port] [Last Port]"
- print "Example - ./Syn_scan.py 1.1.1.1 100"
- print "Example will TCP SYN scan ports 1 through 100 on 1.1.1.1"
- sys.exit()
-
- ip=sys.argv[1]
- start=int(sys.argv[2])
- end=int(sys.argv[3])
-
- for port in range(start,end)
- a=sr1(IP(dst="ip")/TCP(dport=port),timeout=1,verbose=0)
- if a==None;
- pass
- else:
- if int(a[TCP].flags)==18
- print port
- else
- pass
=======================
隐蔽端口扫描实例:Nmap、hping3
- 如:
- nmap -sS 1.1.1.1 --selector-tag">p 80,21,25,110,443
- nmap -sS 1.1.1.1 -p1-65535 --open
- nmap -sS 1.1.1.1 --selector-tag">p- --open
- nmap -sS -iL iplist.txt --selector-tag">p 80,21,22,23
- 如:
- hping3
- hping3 1.1.1.1 --scan 80 -S
- hping3 1.1.1.1 --scan 80,21,25,445 -S
- hping3 1.1.1.1 --scan 0-65535 -S
- hping3 -c 10 -S --spoof 1.1.1.2 --selector-tag">p ++1 1.1.1.3 //spoof后面加欺骗IP地址(假IP),--selector-tag">p接目标IP ----当然回包也给了假IP
想要知道结果,只能有权登录假IP的电脑,在上面抓包(肉鸡)——————————或者控制网关,镜像流量也可以查看
》》》》》》弊端是这个,优点就是隐蔽
Scapy:
1、syn扫描不需要raw packets
2、内核认为syn/ack是非法包,直接发rst中断连接
3、全连接扫描对scapy比较困难
- 例:
- -selector-tag">sr1(IP(dst="1.1.1.1")/TCP(dport=22,flags='S'))
./tcp_scan1.py
==============
- !/usr/bin/python
- import logging
- logging.getlogger("scapy.runtime").setLevel(logging.ERROR)
- from scapy.all import*
-
- response=sr1(IP(dst="1.1.1.1")/TCP(dport=80,flags='S'))
- reply=sr1(IP(dst="1.1.1.1")/TCP(dport=80,flags='A',ack=(response[TCP].seq+1)))
==============./tcp_scan2.py
===============
- !/usr/bin/python
- import logging
- logging.getlogger("scapy.runtime").setLevel(logging.ERROR)
- from scapy.all import*
-
- SYN=IP(dst="1.1.1.1")/TCP(dport=444,flags='S')
-
- print "-- SENT --"
- SYN.display()
-
- print "\n\n-- RECEIVED --"
- response=sr1(SYN.timeout=1,verbose=0)
- response.display()
-
- if int(response(TCP).flags)==18;
- print "\n\n-- SENT --"
- A=IP(dst="1.1.1.1")/TCP(dport=444,flags='A',ack=(response[TCP].seq+1))
- A.display()
- print "\n\n-- RECEIVED --"
- response2=sr1(A.timeout=1,verbose=0)
- response2.display()
- else
- print "SYN.ACK not returned"
===============
- iptables --selector-tag">A OUTPUT --selector-tag">p tcp --tcp-flags RST RST -d 1.1.1.1 -j DROP //建立三次握手
-
- iptables -L //查看规则
全连接扫描——————nmap
- nmap -sT 1.1.1.1 --selector-tag">p 80
- nmap -sT 1.1.1.1 --selector-tag">p 80,21,25
- nmap -sT 1.1.1.1 --selector-tag">p 80-2000
- nmap -sT -iLiplist.txt --selector-tag">p 80
- 默认1000个常用端口
全连接端口扫描————dmitry
- dmitry -p 1.1.1.1
- dmitry -p 1.1.1.1 -o output
- 功能简单,但使用简便
- 默认150个最常用的端口
全连接端口扫描
- nc -nv -w 1 -z 1.1.1.1 1-100 //-nv详细内容+跟IP地址不做域名解析,-w超时时间
- //不是说端口显示什么服务就是什么服务,这些服务我们可以自己去该
- for x in $(seq 20 30);do nc -nv -w 1 -z 1.1.1.1 -variable">$x;done | grep open
- for x in $(seq 1 254);do nc -nv -w 1 -z 1.1.1.-variable">$x 80;done
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!