MALTEGO信息收集工具
MALTEGO来了解一下~ 启动界面:
打开以后:
🔍使用Shodan暗黑谷歌搜索引擎
搜索地址:https://shodan.io 使用方法:例如: 搜索网络监控 输入:webcam 搜索IP 输入:net:[IP] 搜索端口号 输入:port:[端口] 搜索特定城市 输入:city[城市信息]
📚三、主动信息收集
📡协议了解
OSI扫描,主要是在二三四层进行探测发现
协议
基于OSI模型进行扫描的优缺点
二层扫描的优缺点 优点:扫描速度快、可靠 缺点:不可路由
三层扫描的优缺点 优点:可路由,速度较快 缺点:速度比二层慢,经常被边界防火墙过滤使用IP、icmp 协议
四层扫描的优缺点 优点:可路由且结果可靠不太可能被防火墙过滤、可以发现所有端口都被过滤的主机 缺点:基于状态过滤的防火墙可能过滤扫描、全端口扫描速度慢
📲路由跟踪
traceroute [域名]
查看局域网内的IP是否有冲突,或者是查看IP对应的MAC地址,使用arping命令
ARP协议工作原理:IP<==>MAC
arping [选项] [IP地址]
-C # 指定Ping的次数
| grep "要筛选的项目名" # 筛选
| cut -d # 截取命令
🐕扫描、嗅探局域网中存活的主机
netdiscover -i [网卡名] -r [网段]/24 # 主动发数据包的嗅探
netdiscover -p # 不主动发数据包的嗅探
PS:主动方式容易被抓
💥压力测试,DOS攻击
hping3 [参数] [域名]
-c 发送次数 # 例子:1000
-d 数据包大小,单位字节 # 例子:120
-S 这个是大写的S只发送SYN数据表包
-w 指定TCP窗口的大小=流量 # 例子:64
-p 指定端口 # 例子:80
--flood 洪水攻击,加速发包 # 属于UDP行为,只管发,不管你收没收到
--rand-source 局域网内伪造地址
检测网段内存活的主机
fping -g [网段]/24 [参数]
-c 一个地址只ping几次才跳过
> xxx.txt 输出的结果到一个文件中
🕵️Nmap网络扫描
nmap [参数] [网段]/24
-sn 只进行Ping扫描,不进行端口扫描
nmap扫描有两种模式
TCP全连接扫描,三次握手完成,且会留记录
TCP半连接扫描,两次握手完成就断开,不会被记录
nmap [IP] [参数]
-sS 加了这个参数就是半连接扫描,不加就是全连接扫描
-p 端口 # 输入格式:80,81,82,83,84 或者是:80-84
🩺nc端口监听与扫描
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单可靠的网络工具 nc的作用:
实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
端口的扫描,nc可以作为client发起TCP或UDP连接
机器之间传输文件
机器之间网络测速
nc [参数] [IP地址] [端口,或者是端口范围]
-nv 表示我们扫描的目标是个IP地址不做域名解析
-w 表示超时时间
-z 表示进行端口扫描
查看端口被哪个进程使用
lsof -i:[端口号]
用ps命令来查看这个进程的PID所对应的文件
ps -aux | grep [PID]
用shich命令来查看这个进程的PID所对应的文件
which [进程名]
📡检测到达目标地址的路由设备
apt install mtr # 默认没有,要安装一下
mtr [域名/IP地址]
🐱👤Scapy工具概述
Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具还可以查看目标MAC地址。输入scapy命令即可启动
查看Scapy里面的ARP协议
>>> ARP().display()
###[ ARP ]###
hwtype= 0x1 # 硬件类型
ptype= IPv4 # 协议类型
hwlen= None # 硬件地址长度(MAC)
plen= None # 协议地址长度(IP)
op= who-has # who-has查询
hwsrc= 00:0c:29:3d:6c:5d # 源MAC地址
psrc= 192.168.0.53 # 源IP地址
hwdst= 00:00:00:00:00:00
pdst= 0.0.0.0 # 向谁发送请求,目标
发ARP包格式
sr1(ARP(pdst="IP地址"))
查看Scapy里面的IP协议
>>> IP().display()
###[ IP ]###
version= 4 # 版本,即IPV4
ihl= None # 首部长度
tos= 0x0 # 服务
len= None # 总长度
id= 1 # 标识
flags=
frag= 0 # 标志
ttl= 64 # 生存时间
proto= hopopt # 传输控制协议 IPV6逐跳选项
chksum= None # 首部效验和
src= 127.0.0.1 # 源地址
dst= 127.0.0.1 # 目标地址
\options\
查看Scapy里面的ICMP协议
>>> ICMP().display()
###[ ICMP ]###
type= echo-request # 类型,标识ICMPB报文的类型
code= 0 # 代码
chksum= None # 效验和
id= 0x0 # 标识
seq= 0x0
Scapy定制Ping包
sr1(IP(dst="IP地址")/ICMP(),timeout=1)
查看Scapy里面的TCP协议
>>> TCP().display()
###[ TCP ]###
sport= ftp_data # TCP源端口
dport= http # TCP目的端口
seq= 0 # 32位序号
ack= 0 # 32位确认序号
dataofs= None # 4位首部长度
reserved= 0 # 保留6位
flags= S # 标志域,紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN
window= 8192 # 窗口大小
chksum= None # 16位效验和
urgptr= 0 # 优先指针
options= [] # 选项
Scapy定制TCP协议SYN请求,这种是基于半连接扫描,更隐蔽
sr1(IP(dst="192.168.0.1")/TCP(flags="S",dport=80),timeout=1)
最后使用exec()命令退出Scapy。
☠️四、僵尸扫描
僵尸扫描有极高的隐蔽特性,能够伪造IP,但实施条件苛刻。 僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。但是僵尸扫描中的僵尸主机指得是一个闲置的操作系统(这里的闲置是指主机不会主动和任何人通信),且此系统中IP数据包中IPID是递增的。
🐱👤使用Scapy进行僵尸扫描
1、端口开放状态的扫描原理: TCP三次握手发包过程中,SYN/ACK是第二次包
这里最后看僵尸机(Zombie)返回的IPID+2,即是目标服务器(Target)端口开放
# 图1、黑客直接向僵尸机发送了第二次握手的包,僵尸机直接发回了拒绝的包,但是这个里面含有了这个拒绝包的IPID=x
rz1=sr1(IP(dst="僵尸主机的IP")/TCP(dport=445,flags="SA")
# 图2、黑客伪装成了这个僵尸服务器的IP向目标服务器发送第一次握手的请求,当目标服务器的这个端口开放的情况下,肯定会回第二次握手,但是这个第二次握手的包却发在了僵尸服务器里,僵尸服务器依然会发拒绝包拒绝此请求,但是IPID值在第一次的拒绝上面加一IPID=x+1
rt=sr1(IP(src="僵尸主机的IP,dst="目标服务器的IP")/TCP(dport=22),timeout=1)
# 图3、黑客再次向僵尸机发送了第二次握手的包,僵尸机又直接发回了拒绝的包,但是这个里面含有的这个拒绝包的IPID值在上一次的拒绝上面再次加一IPID=x+1+1
rz2=sr1(IP(dst="僵尸主机的IP")/TCP(dport=445,flags="SA")
# 最后使用`rz1.display()`和`rz2.display()`来查看僵尸机返回的IPID值是否与我们想象的变化相符
2、端口关闭状态的扫描原理:
# 图1、黑客直接向僵尸机发送了第二次握手的包,僵尸机直接发回了拒绝的包,但是这个里面含有了这个拒绝包的IPID=x
rz1=sr1(IP(dst="僵尸主机的IP")/TCP(dport=445,flags="SA")
# 图2、黑客伪装成了这个僵尸服务器的IP向目标服务器发送第一次握手的请求,当目标服务器的这个端口关闭的情况下,直接向真实的僵尸机发了拒绝包,僵尸机这次不再发IPID不变IPID=1
rt=sr1(IP(src="僵尸主机的IP,dst="目标服务器的IP")/TCP(dport=22),timeout=1)
# 图3、黑客再次向僵尸机发送了第二次握手的包,僵尸机又直接发回了拒绝的包,但是这个里面含有的这个拒绝包的IPID值在第一次的拒绝上面再次加一IPID=x+1
rz2=sr1(IP(dst="僵尸主机的IP")/TCP(dport=445,flags="SA")
# 最后使用`rz1.display()`和`rz2.display()`来查看僵尸机返回的IPID值是否与我们想象的变化相符
⛔PS:此三步的使用命令一定要很快的执行,防止僵尸主机在输入命令的时间里,发送了其他的数据包使得IPID数据不正确。同时这也证实了僵尸机施条件苛刻。
🕵️使用nmap来找僵尸主机
在网段里面找
nmap [网段]/24 [参数]
-p 端口 # 输入格式:80,81,82,83,84 或者是:80-84
--script=ipidseq.nse # 寻找僵尸主机
测试单台能作为僵尸主机
nmap [黑客的主机IP] -sI [被扫描的僵尸机IP] [参数]
-p 端口 # 输入格式:80,81,82,83,84 或者是:80-84
返回的结果
|_ipidseq: All zeros # 不可以作为僵尸主机
|_ipidseq: Incremental! # 可以作为僵尸主机
Class: Incremental! # 可以作为僵尸主机
🗃️五、WireShark
🕵️♂️WireShark使用技巧
确定Wireshark的物理位置。如果没有一个正确的位置,启动Wireshark后会花费很长的时间捕获一些与自己无关的数据。
选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。
重组数据。当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用重组数据的方法来抓取完整的数据。Wireshark的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片或文件。
📳抓包模式
混杂模式:抓经过网卡是所有数据包
普通模式:只抓取流向网卡的数据包
从混杂模式到普通模式的设置
🗑️过滤器的使用
过滤UDP包:输入udp或者dns
过滤目的IP:输入ip.addr==IP地址
ip.src_host==IP地址这个是本地的IP ip.dst_host==IP地址这个是目的主机的IP
多条件筛选可也以用or或者是and来连接 or是两个条件都成立,and是两个条件只成立一个就行
🙈对常用协议进行抓包
要换成普通模式,再抓包,可避免一些干扰的数据包存在
ARP包详解
用抓包信息来看
192.168.1.53向局域网发ARP包说:谁有网关(1.1)的MAC地址发给我? 网关(1.1)向局域网发ARP包回复说:网关(我)的MAC是xx:xx:xx:xx
ARP包中数据详细内容如下
Address Resolution Protocol (reply) # ARP地址解析协议reply表示回复包
Hardware type: Ethernet (1) # 硬件类型
Protocol type: lPv4 ( ox0800 ) # 协议类型
Hardware size: 6 # 硬件地址
Protocol size:4 # 协议长度
opcode:_ reply ( 2 ) # 操作码,该值为2表示ARP回复包
Sender MAC address: xXXXXXXXXXXX (a4:56:02:3b:4b:03) # 源MAC地址
Sender IP address: 网关IP地址 # 源IP地址
Target MAC address: 厂商_00:00:00 (00:0c:29:8b:2b:b8) # 目标MAC地址
Target lP address: IP地址 # 目标IP地址
ICMP协议
用抓包信息来看
requst:问包 reply: 答包
TCP协议
因为HTTP协议是在TCP协议之上的,所以在过滤TCP协议的数据包的时候会也会包含HTTP数据包
1.14向1.53建立SSH连接,用抓包信息来看:三次握手建立连接
可进入流量图来查看:统计==>流量图
断开连接时的四次握手
第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1状态 第二次挥手:客户端收到FIN后,知道不会再有数据从服务端传来,发送 ACK进行确认,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),客户端进入CLOSE_WAIT状态。 第三次挥手:客户端发送[FIN+ACK]给对方,表示自己没有数据要发送了,客户端进入LAST_ACK状态,然后直接断开TCP会话的连接,释放相应的资源。 第四次挥手:服务户端收到了客户端的FIN信令后,进入TIMED_WAIT状态,并发送 ACK确认消息。服务端在TIMED WAIT状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK并正确关闭了进入CLOSE状态,自己也断开了TCP连接,释放所有资源。当客户端收到服务端的ACK回应后,会进入CLOSE状态并关闭本端的会话接口,释放相应资源。
HTTP协议
抓包的时候先进入一个网页
curl -I erhe.group # -I获取网页头部请求
用抓包信息来看
第一步:我们我们发送了一个HTTP的HEAD请求。 第二步:服务器收到我们的请求返回了一个Seq/ACK进行确认。 第三步:服务器将HTTP的头部信息返回给我们客户端状态码为200表示页面正常第四步:客户端收到服务器返回的头部信息向服务器发送Seq/ACK进行确认。发送完成之后客户端就会发送FIN/ACK来进行关闭链接的请求。
📡WireShark抓包解决服务器被黑上不了网
场景:服务器主机TTL值被恶意修改成1,导致可以Ping通网关,但是不能上网。
TTL:数据报文的生存周期 默认Linux操作系统值:64,每经过一个路由节点,TTL值减1,当TTL值为0时,说明目标地址不可达并返回:Time to live exceeded。作用:防止数据包,无限制在公网中转发。
修改TTL值
vim /proc/sys/net/ipv4/ip_default_ttl # 默认64
思路:通过抓混杂模式来进行局域网内部状况的观测,查到哪个IP地址发的包异常,导致的局域网异常,来进一步的进行处理。
————————————————
版权声明:本文为CSDN博主「开摆工作室」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_57690774/article/details/119892499