IP层扫描
端口层扫描
服务层扫描
OSI 7层协议
ARP协议不可路由
arping 1.1.1.1 -c 1 //-c规定发包数
IP层扫描
端口层扫描
服务层扫描
OSI 7层协议
ARP协议不可路由
arping 1.1.1.1 -c 1 //-c规定发包数
arping 192.168.1.103(可以直接加地址 然后可以获得反馈)
后面不加参数的话 会一直ping 可以通过
Arping 192.168.1.103 -c 1 (只发一个 arp包)
如果 没有反应 则代表主机不存在
root@kal:~# cat hping_tcp_udp_scan.sh
#!/bin/bash
if [ $# -ne 1 ];then
echo -e "\033[31;31m Input Error \033[0m"
echo -e "\033[31;31m Format Example: ./hping3 10.10.10.0/24\033[0m"
exit
fi
prefix=$(echo $1|cut -d"." -f 1-3)
echo "**********1. udp scan"
echo "**********2. tcp scan"
read choice
case $choice in
1)
touch result.txt
for i in $(seq 1 254);do
{
ip=$prefix.$i
hping3 --udp $ip -c 1 >> result.txt
}&
done
grep "Unreachable" result.txt | cut -d" " -f 5 | cut -d"=" -f 2 >> ip_alive.txt
rm -f result.txt
;;
2)
touch result.txt
for i in $(seq 1 254);do
{
ip=$prefix.$i
hping3 --udp $ip -c 1 >> result.txt
}&
done
grep "Unreachable" result.txt | cut -d" " -f 5 | cut -d"=" -f 2 >> ip_alive.txt
rm -f result.txt
;;
esac
#!/usr/bin/python
#!coding=utf-8
import sys
from scapy.all import *
if len(sys.argv)!=2:
print "./ack_ping prefix"
print "Example ./ack_ping 192.168.10"
sys.exit()
prefix = str(sys.argv[1])
try:
for index in range(1,254):
response = sr1(IP(dst=str(prefix)+'.'+str(index))/TCP(flags='A',dport=80),timeout=0.3,verbose=0)
try:
if(response):
print prefix+'.'+str(index)
except KeyboardInterrupt:
print
break
except KeyboardInterrupt:
print
arping +IP
判断主机是否存活
arping +IP -c count
ping的次数
优点:扫描速度快、可靠
缺点:不可路由
Arp协议:抓包
作为python库进行调用
也可作为单独的工具使用
抓包、分析、创建、修改、注入网络流量
UDP
ACK——TCP port——RST
识别开放端口上运行的应用
识别目标操作系统
提高攻击效率
软件开发商
软件名称
服务类型
版本号(直接发现已知的漏洞和弱点)
种类繁多
好产品采用多种技术组合
信息的金矿
经常被错误配置
smtp-user-enum
HTTP-Lodbalancing
版权声明: https://
import subprocess //导入可以调用系统指令的模块
import logging //导入日志模块
python中判断的是命令+参数 在一块计算
sys.argv[]调用系统
shell中只判断参数 只计算参数的个数
sr1(ARP(pdst="192.168.1.11"),timeout=1,verbose=1)
timeout 超时信息,后面跟的数字就是超时时间
verbose 报错信息是否显示出来,1显示 0不显示
chmod u+x arp1.py赋予python脚本的执行权限
一般在渗透测试的时候,拿下一台机器之后,不要就此结束,尽量去深的渗透,使用二层发现工具进行scan 尽量多的去发现内网中的机器,尽量多的去拿下较多的PC,让企业充分认识到,安全的危害
netdiscover
专用于二层发现
可用于无线和交换网络环境
主动和被动探测
主动(和apring差不多 都是向目标地址发送arp数据包 如果目标地址返回数据包【信息】那么就可以判断目标主机是存活的,是在这个网络里面的)
netdiscover -i eth0 -r 1.1.1.0/24
netdiscover -l iplist.txt
被动
netdiscover -p
主动arp容易触发报警
Scapy
作为python库进行调用
也可以作为单独的工具使用
抓包、分析、创建、修改、注入网络流量
apt-get install python-gnuplot
Scapy
ARP().display()
Sr1() //发送数据包
python脚本
Arp1.py
Arp2.py
ARP().display()
hwtype=0x1 //硬件类型
ptype = 0x800 //协议类型
hwlen = 6 //硬件地址长度
plen = 4 //协议地址长度
op = who- has //操作 查询
hwsrc = 08:00:27:a7:ce:cd //源MAC地址
psrc = 192.168.1.132 //源IP地址
hwdst = 00:00:00:00:00:00 //目标MAC地址
pdst = 0.0.0.0 //目标IP地址
nmap -sn ip地址[或者ip地址段] 只做ping scan, disable port scan 只做二层发现
nmap -iL ip地址文件 -sn
并不是严格意义上的arping scan 除了发送arp数据包之外 还会进行DNS的解析
NMAP四层扫描
nmap 1.1.1.1-254 -PU53 -sn
//UDP扫描
nmap 1.1.1.1-254 -PA80 –sn
//ACK TCP扫描 RST包
nmap -iL iplist.txt -PA80 -sn
//批量扫描
hping3 --udp 1.1.1.1 -c 1
hping3 1.1.1.1 -c 1 (TCP)
Hping3 1.1.1.1
./TCP_hping.sh
Flag 0 —— ACK̵RST
u = UDP()
u.dport= 33333
r = (i/u)
a = sr1(r,timeout=1,verbose=1)
A.display()
ICMP
UDP_Ping.py
四层发现
scapy
Scapy
i = IP()
i.dst="1.1.1.1"
t = TCP()
t.flags='A'
r = (i/t)
a = sr1(r)
a.display()
a = sr1(IP(dst="1.1.1.1")/TCP(dport=80,flags='A') ,timeout=1))
ACK_Ping.p
四层发现
可路由 精确
TCP UDP
TCP
未经请求ACK-RST
UDP
如果没有开端口会返回ICMP端口不可达、一去不复返
三层发现
ip层 ,icmp协议
可跨路由
速度没有二层快
三层容易被边界防火墙过滤
ping 1.1.1.1 -c 2
ping -R 1.1.1.1 /traceroute 1.1.1.1
ping 1.1.1.1 -c 1 | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1
ttl值每经过
二层发现 进行内网渗透 发现内网信息
二层发现
Netdiscover
主动发现
netdiscover -i eth0 -r 1.1.1.0/24
netdiscover -l iplist.txt
指定IP列表扫描
被动发现
主动容易触发ARP警报
默默的侦听 网卡开混杂模式
抓取别人发的包
不会被入侵检测发现
netdiscover -p
scapy
apt-get install python-gnuplot
scapy回车
ARP() .display()
arp=ARP()
arp.display()
arp.pdst=""
sr1(arp)
answer=sr1(arp)
answer.display()
二层发现 nmap
nmap 1.1.1.1-254 -sn
nmap -sn 1.1.1.1-254
ping 然后再扫描
扫描出主机状态 和一些信息
不是一个严格的arp扫描
nmap -iL addr -sn
arping 1.1.1.1 -d //发现重复的相应,发现重复的MAC,两MAC用一个Ip,有人ARP欺骗
arping -c 1 1.1.1.1 | grep "bytes from" | cut -d" " -f 5 | cut -d "(" -f 2 | cut -d")" -f 1
进行筛选 只显示ip
噪声掩盖真实扫描
扫描判断目标状态
arp层发现主机
可靠快准确
arping
arping 1.1.1.1 -c 1 //发一个包进行判断
端口说明和扫描规则
-p 只扫描指定的端口
--exclude-ports 不对此端口进行扫描
-F 快速模式,扫描比默认端口数量更少的端口
-r 有序地扫描端口而不是随机地扫描
--top-ports <number> 扫描排名指定的数字前几位的最常用的端口
--port-ratio <ratio> 扫描比输入的比例更常用的端口
-sV:探测开启的端口来获取服务、版本信息
--version-intensity <level>:设置探测服务、版本信息的强度
--version-light:强度为2的探测强度
--version-all:强度为9的探测强度
--version-trace:将扫描的具体过程显示出来
-sC:等同于--script=default
--script=<Lua scripts>:指定使用Lua脚本进行扫描
--script-args=<n1=v1,[n2=v2,...]>:指定脚本的参数
--script-args-file=filename:指定提供脚本参数的文件
--script-trace:显示全部发送和收到的数据
--script-updatedb:更新脚本的数据库
--script-help=<Lua scripts>:显示脚本的相关信息
-O:进行系统探测
--osscan-limit:限制系统探测的目标,如只探测Linux系统
--osscan-guess:更侵略性地猜测系统
-T<0-5>:设置时序模块,越高越快
--min-hostgroup/max-hostgroup <size>:指定最小、最大的并行主机扫描组大小
--min-parallelism/max-parallelism <numprobes>:指定最小、最大并行探测数量
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>:指定最小、最大的扫描往返时间
--max-retries <tries>:指定最大的重发扫描包的次数
--host-timeout <time>:指定超时时间
--scan-delay/--max-scan-delay <time>:指定每次探测延迟多长时间,即两次探测之间间隔多少时间
--min-rate <number>:最小的发包速率
--max-rate <number>:最大的发包速率
-f; --mtu <val>:设置MTU最大传输单元
-D <decoy1,decoy2[,ME],...>:伪造多个IP地址和源地址一同发送包,从而隐藏在众多的IP地址中而不易被发现
-S <IP_Address>:伪造源地址
-e <iface>:使用指定的接口
-g/--source-port <portnum>:使用指定的源端口
--proxies <url1,[url2],...>:指定代理服务器进行扫描
--data <hex string>:在发送包的数据字段中追加自定义的十六进制字符串
--data-string <string>:在发送包的数据字段中追加自定义的ASCII字符串
--data-length <num>:在发送包的数据字段中追加随机的数据
--ip-options <options>:使用指定的IP选项发送包
--ttl <val>:设置TTL值
--spoof-mac <mac address/prefix/vendor name>:伪造源Mac地址
--badsum:发送伪造TCP/UDP/SCTP校验和Checksum的数据包
-oN/-oX/-oS/-oG <file>:分别输出正常、XML、s|<rIpt kIddi3、grepable格式的扫描结果到指定的文件
-oA <basename>:一次性以三种格式输出
-v:增加的详细程度(使用VV更详细)
-d:提高调试水平(使用DD更高)
--reason:显示端口处于特定状态的原因
--open:仅显示打开(或可能打开)端口
--packet-trace:显示发送和接收的所有数据包
--iflist:输出主机接口和路由(为了调试)
--append-output:附加到指定的输出文件,而不是乱码
--resume <filename>:从指定的文件中恢复终止的扫描
--stylesheet <path/URL>:将指定路径的URL的XSL样式表转换为XML输出为HTML格式
--webxml:获取更多便捷的XML参考样式
--no-stylesheet:防止将XSL样式表的W /XML输出
-6:扫描IPv6的地址
-A:一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描
--datadir <dirname>:指定自定义的nmap数据文件位置
--send-eth/--send-ip:使用原始以太网帧或IP数据包发送
--privileged:假设用户有全部权限
--unprivileged:假设用户缺少原始套接字权限
-V:输出版本号
-h:输出帮助信息