渗透阶段安装了 Mimikatz 和 ProcDump,并使用 ProcDump 工具转储 LSASS 进程的内存以劫持受感染系统的凭据
窃取 NirSoft 的 WebBrowserPassView 和网络浏览器信息
可以提取并显示保存在 Google Chrome、Firefox 和 Internet Explorer 中的帐户和历史记录信息
窃取 NirSoft 的 WebBrowserPassView 和网络浏览器信息
可以提取并显示保存在 Google Chrome、Firefox 和 Internet Explorer 中的帐户和历史记录信息
内网渗透之中间人欺骗攻击
ARP全称为Address Resolution Protocol,即地址解析协议,它是一个根据IP地址获取物理地址的TCP/IP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
ARP地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存,故而攻击者可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗
ARP全称为Address Resolution Protocol,即地址解析协议,它是一个根据IP地址获取物理地址的TCP/IP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
ARP地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存,故而攻击者可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗
从数据包可以看出来,对登录的手机号进行了加密。我们到浏览器找一下使用的加密算法
通过关键词搜索直接定位到其代码逻辑
可以编写编写一个加解密的代码:
from Crypto.Cipher import AES
import base64
def aes_encrypt(plaintext, key, iv):
# 将明文转换为字节串
plaintext = plaintext.encode('utf-8')
# 创建AES加密对象,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC, iv)
# 计算需要填充的字节数
padding_length = AES.block_size - len(plaintext) % AES.block_size
# 进行填充
padding = bytes([padding_length] * padding_length)
plaintext = plaintext + padding
# 进行加密
ciphertext = cipher.encrypt(plaintext)
# 将加密结果进行base64编码并返回
return base64.b64encode(ciphertext).decode('utf-8')
def aes_encrypt2(plaintext):
key = b'60427a4badf685bd'
iv = b'0c67da205a1f6f57'
return aes_encrypt(plaintext, key, iv)
def aes_decrypt(ciphertext, key, iv):
# 对密文进行base64解码
ciphertext = base64.b64decode(ciphertext)
# 创建AES解密对象
通过关键词搜索直接定位到其代码逻辑
可以编写编写一个加解密的代码:
from Crypto.Cipher import AES
import base64
def aes_encrypt(plaintext, key, iv):
# 将明文转换为字节串
plaintext = plaintext.encode('utf-8')
# 创建AES加密对象,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC, iv)
# 计算需要填充的字节数
padding_length = AES.block_size - len(plaintext) % AES.block_size
# 进行填充
padding = bytes([padding_length] * padding_length)
plaintext = plaintext + padding
# 进行加密
ciphertext = cipher.encrypt(plaintext)
# 将加密结果进行base64编码并返回
return base64.b64encode(ciphertext).decode('utf-8')
def aes_encrypt2(plaintext):
key = b'60427a4badf685bd'
iv = b'0c67da205a1f6f57'
return aes_encrypt(plaintext, key, iv)
def aes_decrypt(ciphertext, key, iv):
# 对密文进行base64解码
ciphertext = base64.b64decode(ciphertext)
# 创建AES解密对象
❤1
二层内网渗透(bind)
生成msf木马msfvenom -p windows/meterpreter/bind_tcp lport=xxx -f exe -o 文件名,因为内网不能直接连外网的原因,reverse版木马无法使用,但是我们有代理可以连内网。上传
同理,生成了木马本地就需要有msf进程监听。use exploit/multi/handler,然后set payload windows/meterpreter/bind_tcp,payload和msf木马所用payload一致,设置参数lport和rhost.(这里开监听是在边界服务器开,也就是之前msf的边界服务器终端,lport当然也是边界机的端口,相当于本机msf对靶机边界机 的渗透变为了==靶机边界机对内网二层机==)
在二层内网机提权运行msf木马拿到shell后,run autoroute -s 另一内网网段添加路由
扫描,老样子,那几个扫描用啥都行,run arp_scanner -r 网段进行arp扫描
如果非要用reverse的连接方式呢,今天我皮痒,或者有防火墙只能出。
很简单,用到端口转发。如果将边界机监听reverse的端口转发到本地端口,二层内网机reverse到边界机的端口就相当于直接和本地通信
lcx被检测概率太大,用frp
生成msf木马msfvenom -p windows/meterpreter/bind_tcp lport=xxx -f exe -o 文件名,因为内网不能直接连外网的原因,reverse版木马无法使用,但是我们有代理可以连内网。上传
同理,生成了木马本地就需要有msf进程监听。use exploit/multi/handler,然后set payload windows/meterpreter/bind_tcp,payload和msf木马所用payload一致,设置参数lport和rhost.(这里开监听是在边界服务器开,也就是之前msf的边界服务器终端,lport当然也是边界机的端口,相当于本机msf对靶机边界机 的渗透变为了==靶机边界机对内网二层机==)
在二层内网机提权运行msf木马拿到shell后,run autoroute -s 另一内网网段添加路由
扫描,老样子,那几个扫描用啥都行,run arp_scanner -r 网段进行arp扫描
如果非要用reverse的连接方式呢,今天我皮痒,或者有防火墙只能出。
很简单,用到端口转发。如果将边界机监听reverse的端口转发到本地端口,二层内网机reverse到边界机的端口就相当于直接和本地通信
lcx被检测概率太大,用frp
内网渗透
打靶过程
如下为本人自己搭建的练习靶场
拿下web2
1.nmap扫描
192.168.157.131 :81 --->web2 (nginx)
Nday getshell-web2
访问192.168.157.131:81可以得到使用了Laravel框架信息
站点存在Laravel Debug mode RCE漏洞(CVE-2021-3129)利用工具laravel-CVE-2021-3129-EXP-main 搭配v2.96-godzilla拿下shell(docker)
在docker中提权-web2
打靶过程
如下为本人自己搭建的练习靶场
拿下web2
1.nmap扫描
192.168.157.131 :81 --->web2 (nginx)
Nday getshell-web2
访问192.168.157.131:81可以得到使用了Laravel框架信息
站点存在Laravel Debug mode RCE漏洞(CVE-2021-3129)利用工具laravel-CVE-2021-3129-EXP-main 搭配v2.96-godzilla拿下shell(docker)
在docker中提权-web2
内网渗透之内网权限维持
DSRM(Directory Services Restore Mode,目录服务恢复模式)是Window域环境中域控制器的安全模式启动选项,每个域控制器都有一个本地管理员账户(也就是DSRM账户)。
DSRM的用途是允许管理员在域环境中出现故障或崩溃时还原、恢复、重建活动目录数据库,使域环境的运行恢复正常,DSRM的密码需要在安装DC时设置且很少会被重置,修改DSRM密码最基本的方法是在DC上运行ntdsutil命令行工具。
在渗透测试中,我们可以使用DSRM账号对域环境进行持久化操作,如果域控制器的系统版本为WIndow Server 2008,需要安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步,在WIndow Server 2008之后的版本系统不需要安装此补丁,如果域控制器的系统版本为Windows Server 2003,则不能使用该方法进行持久化控制。
每个域控制器都有一个本地管理员账户和密码(与域管理员账户和密码不同),而此处的DSRM账户和密码亦可以作为一个域控制器的本地管理员用户,之后通过网络连接域控制器,进而控制域控制器
DSRM(Directory Services Restore Mode,目录服务恢复模式)是Window域环境中域控制器的安全模式启动选项,每个域控制器都有一个本地管理员账户(也就是DSRM账户)。
DSRM的用途是允许管理员在域环境中出现故障或崩溃时还原、恢复、重建活动目录数据库,使域环境的运行恢复正常,DSRM的密码需要在安装DC时设置且很少会被重置,修改DSRM密码最基本的方法是在DC上运行ntdsutil命令行工具。
在渗透测试中,我们可以使用DSRM账号对域环境进行持久化操作,如果域控制器的系统版本为WIndow Server 2008,需要安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步,在WIndow Server 2008之后的版本系统不需要安装此补丁,如果域控制器的系统版本为Windows Server 2003,则不能使用该方法进行持久化控制。
每个域控制器都有一个本地管理员账户和密码(与域管理员账户和密码不同),而此处的DSRM账户和密码亦可以作为一个域控制器的本地管理员用户,之后通过网络连接域控制器,进而控制域控制器
数据均使用UDP协议传输,在应用层使用ACK和重传机制确保数据的可靠传输,指令数据包的内容使用JSON格式的Key-Value格式,并且APP和摄像头间的指令和数据均使用明文传输
进一步分析发现每一条指令都会带上密码字段,如果‘pwd’(密码)正确,摄像头执行‘GetDevStream’指令,然后返回实时视频流给APP;如果‘pwd’错误,摄像头拒绝执行指令,丢弃该数据包或返回错误信息,但是实际上发现该系统的鉴权由APP客户端完成,并且只有在连接摄像头时会验证密码。
在APP连接摄像头时,发送一条‘LoginDev’的指令摄像头验证指令中的‘pwd’密码是否正确,如果正确返回的结果中‘result’为0,如果错误返回的结果中‘result’为-1
进一步分析发现每一条指令都会带上密码字段,如果‘pwd’(密码)正确,摄像头执行‘GetDevStream’指令,然后返回实时视频流给APP;如果‘pwd’错误,摄像头拒绝执行指令,丢弃该数据包或返回错误信息,但是实际上发现该系统的鉴权由APP客户端完成,并且只有在连接摄像头时会验证密码。
在APP连接摄像头时,发送一条‘LoginDev’的指令摄像头验证指令中的‘pwd’密码是否正确,如果正确返回的结果中‘result’为0,如果错误返回的结果中‘result’为-1
内网渗透之NTLM中继劫持
NTLM是"NTLAN Manager"的缩写,NTLM是Windows NT早期版本的标准安全协议,Windows 2000支持NTLM是为了保持向后兼容,NTLM是Windows 2000内置三种基本安全协议之一,同时也是为用户提供认证、完整性和机密性的一种网络协议,NTLM协议有NTLM v1,NTLM v2,NTLM Session v2三种版本
NTLM是"NTLAN Manager"的缩写,NTLM是Windows NT早期版本的标准安全协议,Windows 2000支持NTLM是为了保持向后兼容,NTLM是Windows 2000内置三种基本安全协议之一,同时也是为用户提供认证、完整性和机密性的一种网络协议,NTLM协议有NTLM v1,NTLM v2,NTLM Session v2三种版本
内网渗透
本机信息
包括操作系统,当前用户权限,内网ip段,杀毒软件,端口开放情况,系统打的补丁,网络状况,共享文件夹等,如果是域内的主机的话,操作系统、补丁、运行的服务、杀软等一般是域管批量用脚本安装
查询操作系统及版本信息,补丁信息等等:systeminfo
查询系统体系架构:echo %PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息:wmic product get name,version
本机信息
包括操作系统,当前用户权限,内网ip段,杀毒软件,端口开放情况,系统打的补丁,网络状况,共享文件夹等,如果是域内的主机的话,操作系统、补丁、运行的服务、杀软等一般是域管批量用脚本安装
查询操作系统及版本信息,补丁信息等等:systeminfo
查询系统体系架构:echo %PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息:wmic product get name,version
数据包分析
使用浏览器开发者工具或第三方抓包工具(如 Wireshark、Fiddler)捕获网络数据包后,可通过分析请求 URL、方法和请求头筛选出与目标资源相关的 HTTP 请求,重点关注 XHR 数据包,其中通常包含以 JSON 格式传递的关键数据(如资源 URL)
开启F12后在点击音乐播放就可以发现很多的数据包,由于这种音乐格式的数据包大部分都是通过json格式的数据中藏有mp4链接来传递数据,所以首先就是选中XHR这里的数据包进行分析!
筛选数据包:在捕获的数据包中,筛选出与目标资源相关的HTTP请求。这通常可以通过分析请求URL、请求方法(如GET、POST等)以及请求头中的信息来实现。
分析XHR数据包:由于Ajax请求通常通过XHR(XMLHttpRequest)对象发送,因此应重点关注XHR数据包。这些数据包中可能包含以JSON格式传递的关键数据,如资源URL
使用浏览器开发者工具或第三方抓包工具(如 Wireshark、Fiddler)捕获网络数据包后,可通过分析请求 URL、方法和请求头筛选出与目标资源相关的 HTTP 请求,重点关注 XHR 数据包,其中通常包含以 JSON 格式传递的关键数据(如资源 URL)
开启F12后在点击音乐播放就可以发现很多的数据包,由于这种音乐格式的数据包大部分都是通过json格式的数据中藏有mp4链接来传递数据,所以首先就是选中XHR这里的数据包进行分析!
筛选数据包:在捕获的数据包中,筛选出与目标资源相关的HTTP请求。这通常可以通过分析请求URL、请求方法(如GET、POST等)以及请求头中的信息来实现。
分析XHR数据包:由于Ajax请求通常通过XHR(XMLHttpRequest)对象发送,因此应重点关注XHR数据包。这些数据包中可能包含以JSON格式传递的关键数据,如资源URL