内容导读:导航目录:1、渗透测试利器【CobaltStrike】CDN隐匿2、内网渗透-远控类软件利用3、内网渗透--对不出网目标的打法4、内网渗透-常用工具免杀5、cobaltstrike使用跳板进行内网渗透渗透测...……
导航目录:
- 1、渗透测试利器【Cobalt Strike】CDN隐匿
- 2、内网渗透-远控类软件利用
- 3、内网渗透--对不出网目标的打法
- 4、内网渗透-常用工具免杀
- 5、cobalt strike使用跳板进行内网渗透
渗透测试利器【Cobalt Strike】CDN隐匿
Cobalt Strike是一款漂亮国Red Team开发的渗透测试神器,常被业界人称为CS。成为了渗透测试中不可缺少的利器。其拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket *** ,office攻击,文件捆绑,钓鱼等功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具并且可以作为团队服务使用,因此广受 *** 安全人员喜爱。
虽然Cobalt Strike在渗透测试使用过程中非常的方便和强大,但其默认的特征信息使得CS服务端也会很容易被态势感知等监测设备所识别到,并且服务器开启默认端口后也会被情报网站标记为攻击服务器,且如果teamserver密码简单也会被反爆破。
因此就需要对Cobalt Strike的流量、特征等进行隐匿。本文章采用的是CDN+修改特征隐匿的 *** 。
这里使用 平台进行注册,需要登陆,因此提前准备好一个邮箱,国内外邮箱都行。
tips:
1、在选择好域名并注册后,需要登录平台,然后填写相关信息以用于注册(当前ip所处的地址这里必须一致、邮编、手机号等可采用漂亮的虚拟信息);
2、后续要使用cdn平台,因此需要在这个域名平台里面绑定cdn平台的ns记录。
域名注册完成后先不要急着解析,进行第二步的CDN平台配置。
CDN平台建议使用cloudflare
先注册个账号登陆一波,使用邮箱注册,方便起见可以和freenom平台用同一个邮箱。
进入cloudflare平台后,点击左侧的网站,然后添加一个域名,这里添加的域名就是freenom注册的。
站点添加完成后,点击站点进去,在左侧DNS中添加记录。
在添加完成后如果上面出现这样的告警,就代表在freenom平台中还没有修改ns记录,需要去将ns记录修改为cdn平台的。
进入freenom平台修改ns记录,先登录,进入到域名管理处,修改ns名称。这里要填写的ns名称是CDN平台给分配的,参见上面一张图,ns前缀基本都是随机分配的,因此以CDN平台上的为准。
freenom改好ns记录后,再到CDN平台上点击上上图的“检查名称服务器”即可更新完成。此时再去解析域名、ping域名,都会成功返回到CDN的ip地址。
在CDN平台左侧的SSL/TLS-----概述中,将右边的加密模式选择为灵活。
在左侧源服务器中,点击创建证书。源服务器私钥类型选择ECC,密钥格式选择PEM。 一定要将源证书和私钥复制下来!后续要用到。
CDN默认开启缓存,可能会影响后续主机上线、shell命令回显等。因此这里有两种关闭缓存的 *** 建议都开启。
在CDN平台-缓存-配置-开发者模式-开启。
规则-创建页面规则中创建两条规则。以下规则中的域名不需要填写A记录名。
1、 .your dmoain/ ;
2、your dmoain/*;
3、将规则设置为-缓存级别-绕过。
2.生成新的cobaltstrike证书。如果原先的cobaltstrike文件夹内有默认的.store证书,需要先删除掉默认的。使用以下命令生成:
ps:这里的pass密码需要修改,改为复杂的密码,不要使用123456。
ps:这里的所有密码都要和上面的一致。
6.1 修改teamserver默认端口
编辑teamserver配置文件,将CobaltStrike默认的50050端口改成其它端口。
6.2 修改teamserver默认指纹信息
编辑teamserver配置文件,默认的是cobalt strike信息或Microsoft信息。
可将指纹信息改为其它的内容。
启动teamserver的命令需要微调下:
./teamserver 服务器公网IP 密码 C2.profile
连接上teamserver后,创建个监听器和马子。注意监听器的地址要填写CDN绑定的域名,而不是IP地址了
PS:在创建监听器时,建议使用https模式。并且监听器的https上线端口不要使用默认的443,否则可能会无法正常上线。建议监听端口使用CDN支持的其它端口。
先在虚拟机里面打开个wireshark开启抓包模式,然后将马子丢到虚拟机里面执行。
此时在CS里面主机已经上线。然后看wireshark中的数据包,过滤服务器真实地址发现一条都没有,均是和CDN地址的交互数据。
下图筛选服务器地址:
下图筛选CDN地址:
至此CDN隐匿完成。
内网渗透-远控类软件利用
对渗透中遇到的远控类软件的利用方式整理。
操作系统:windows server 2012
中间件:tomcat
杀软:卫士+杀毒
默认权限:administrator
实战中经常遇到的一款远控软件,用户数量高。
可以通过ID和密码进行无人值守访问。
进程信息:
利用场景:拿到webshell权限,想上线cs,发现主机存在杀软,bypass失败。
通过查看进程信息发现存在Teamviewer。
管理员在线。
利用获取到的密码成功连接到目标主机的桌面。
TeamViewer QuickSupport版
首次运行需要同意协议。
实战使用需要把首次运行同意协议步骤进行绕过,然后上传到目标主机运行,然后抓取密码连接,感兴趣的可以研究下。
利用场景:查看进程发现存在向日葵,寻找配置文件,破解本机验证码,连接向日葵。
进程信息:
向日葵在最近的更新中加强了加密机制,删除了config.ini中的encry_pwd(本机验证码)。
v11.1.2.38529之前的版本,连接信息保存在配置文件中,可进行解密。
向日葵默认配置文件路径:
解密脚本
pip3 install unicorn
利用场景:
1、杀软白名单策略,常规免杀 *** 无法绕过。
2、存在流量设备,常规frp,nps,cs,reGeorg等被ban,无法带入内网。
向日葵首次运行提示是否安装。
需要鼠标点击以绿色版运行
使用bypass *** 绕过,上传SunloginClient.exe到靶机服务器运行。
查看绿色版配置文件
C:\ProgramData\Oray\SunloginClient\config.ini
使用脚本破解encry_pwd
识别码为:165034706
密码为:LlOa4Z
连接成功。
北京金万维科技有限公司开发的一款产品,分为 *** 端和客户端。
可以通过设置连接密码进行无人值守访问。
进程信息:
配置文件默认路径
uniqueid 为连接的id
connect_password= 为设置的连接密码加密hash
random_password= 为明文连接密码
2个密码都可以连接使用
默认安装后未设置连接密码,不支持无人值守访问。
特点:运行过程中动态加载配置文件
利用方式:直接在配置文件中添加连接密码,进行无人值守访问。
1、设置random_password=666666
重新连接,输入设置的密码信息。
连接成功。
2、设置random_password
本地搭建客户端,设置连接密码999999。
查看本地配置文件中加密后的hash为
connect_password=5eec351934af7678a852ade9efc74133
特点:只在开始运行时加载配置文件
无random_password只能通过修改connect_password连接。
利用方式:结束进程,修改配置文件,重新运行。
1、结束进程
2、修改配置文件内容
connect_password为5eec351934af7678a852ade9efc74133(999999)
3、重新启动即可用密码连接。
1、uac
非server服务器运行向日葵需要bypass uac
2、用户不在线的情况,需要密码登录。
这个点导致利用起来比较鸡肋,适用于隧道流量无法绕过等一些极端情况,可以选择免杀读密码/免杀加用户然后登录。
整理了最近遇到的几个内网远控存在利用的点,利用相对鸡肋,适用于某些极端情况下使用。
内网渗透--对不出网目标的打法
配置 ***
在VM虚拟机中按照下边的 *** 拓扑进行配置 *** 。 *** 拓扑图如下:
win7具有双网卡,其中外网ip是192.168.8.133,内网网段是52。三台机器彼此互通,但是win server 2008和win2003不通外网。用我mac作为攻击机,来对这个靶场环境进行渗透测试。
外网打点
在win7这台靶机上,使用PHPStudy让网站可以运行起来。在攻击机上,访问 可以看到是一个phpStudy 探针。对这网站进行渗透,因为本文主要写在内网渗透过程中对不出网主机的渗透,所以此处外网打点就不写的很详细了。
针对此靶场进行外网渗透拿权限大致有这几种 *** :
通过phpmyadmin弱口令,进入phpmyadmin后台。然后知识点就变成了,通过phpmyadmin进行getshell,这个点又分为,得到网站绝对路径后,使用select into outfile的方式写shell和利用日志写shell。在此处,我是使用日志写shell的 *** 拿到权限。因为secure_file_priv配置为null,禁止修改目录下的文件,也就不能使用into outfile的方式写入shell。
通过目录扫描可以扫出beifen.rar,备份文件。在源码中可以找到登陆后台的账号密码:admin/123456和登陆路径/index.php?r=admin,在前台模板文件中添加一句话木马连接也可获取shell。
获得webshell的信息收集
通过外网打点获得的webshell,可以进行一波信息收集,摸清我是谁?我在哪?有没有内网环境?有没有杀软?通过拿到webshell后的信息收集的结果来评估一下有没有必要继续深入或者初步了解继续深入的话需要哪些手段。
我是谁?
蚁剑已经给出基础信息
我在哪?
使用ipconfig /all 看一下 *** 信息
目标有两个网卡,并且存在域环境,那么就有打它内网的必要了。
有没有杀软?
tasklist查看一下进程信息
根据进程查一下是否有杀软
目标没有使用杀软,还有域环境那么让它直接cs上线。
内网渗透
cs上线
内网信息收集
信息收集每个人都有自己的习惯,信息收集的顺序和信息收集的项目也都不太一样,只要根据自己的习惯和嗅觉,针对目标具体情况进行收集,以求尽快的拿下目标就好。信息收集的越全面突破口也就会越多,考虑到篇幅和文章内容匹配度等因素,此处并没有写出大量信息收集 *** 。
使用cs自带的net view查看域信息。
使用cs自带功能进行端口扫描,分别对8和52两个网段进行扫描进行完这两个步骤以后,cs会把扫到的目标列出来。
因为拿到的是管理员权限,可以先抓一波密码。用 cs 的 hashdump 读内存密码,用 mimikatz 读注册表密码:logonpasswords。
此处打码的地方是因为配置靶机登陆时靶机提示重置密码,我给靶机改了个包含个人信息的密码。蠢哭。拿到密码后,目标主机没有开启防火墙,可以使用cs自带的psexec做一波横向,因为抓到很多域中机器密码,域控密码也抓到了。
内网横向(通过登录凭证)
这个靶机设置的比较简单,抓到密码后,因为抓到了域控登陆的凭证,那么使用psexec即可横向内网所有机器。因为,另外两台内网的机器不出网,那么就到了本文着重练习的点了,打不出网的机器。
不出网机器上线一般有以下几种方式:
使用 *** b beacon
配置listener通过HTTP *** 上线
使用pystinger搭建socks4 ***
这几种方式之前有师傅也在先知写过 《不出网主机上线 *** 》 。此处我采用的 *** B beacon这个 *** 。
*** B Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在 *** B协议中,所以 *** B beacon相对隐蔽。 *** B beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线。
首先得到内网中一台主机的beacon,抓取密码后进行 *** b喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用Smb beacon使目标主机上线
使用条件
具有 *** B Beacon 的主机必须接受 445 端口上的连接。
只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
利用这种beacon横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。
使用 *** :
1.建立 *** b的listener
2.在cs中使用psexec进行横向移动,选择现有的beacon作为跳板,这里凭据必须是administrator ,即拥有目标主机管理员权限
3.连接成功,可以看到 *** b beacon上线的主机右侧有∞∞标识
使用这种 *** 上线的机器,主要是通过出网机作为一个中间人,不出网主机成功上线后,如果出网机一断开,这个不出网主机也会断。
内网横向(通过ms-17010)
在拿下win7的时候,可以给它传一个fscan,给win7做一个内网大保健。上传fscan后,运行扫一下内网。
发现存在ms17010。
ms17010常见的几种打法:
msf
ladon/ladon_ms17010
从msf分离出的exe
nessus里的exe
cs插件
这几种打法,我在这个环境中都做过尝试。过程就不一一叙述了,直接说我测试的结果。msf是最稳定的,但是打起来有稍许的麻烦因为要设置监听模块和选择攻击模块等配置。ladon_ms17010方便但是不太稳有时候会打不成功。cs插件也不稳,并且在这种不出网 *** 不稳定的情况下成功率会变的更低。
这个图片的ip可能跟上边配置符不起来,因为我在测试过程中,网断过几次,ip就变了。所以,在打的时候,如果ladon和分离出的exe没有打成,不要轻易放弃,用msf在打打试试,毕竟工具就是工具,不能过分依赖某个工具。
在这种不出网的情况下,可以优先考虑使用从msf分离出的exe和ladon_ms17010来打,打成功会直接通过自定义的dll新建一个用户并加入管理员组,开启3389端口。根据实际情况,可考虑在合适的时间段和条件下直接远程登入,翻一下敏感数据,往往会因为运维人员的很多“好习惯”而给渗透带来很多便利,比如说“密码本.txt”。
msf打不出网机器的ms17010
msf在单兵作战的时候还是很稳定很香的。首先,让出网机器先在msf上线,可以用cs直接传递会话,或者生成个msf马直接运行一下。在这的 *** 就很多了。win7在msf上线后,因为我们已经提前知道了,存在52这个不出网的段,那么就需要在msf中添加路由。
查看路由
run get_local_subnets
添加路由
run autoroute -s 192.168.52.0/24
查看添加的路由
run autoroute -p
把shell切换到后台,然后使用ms17010模块进行漏洞利用,监听时使用正向监听,即可
小贴士:
漏洞检测 *** :
use auxiliary/scanner/ *** b/ *** b_ms17_010
之后设置一下目标ip和线程即可,这里因为已经扫出存在漏洞的机器了,也就不在叙述。
漏洞利用常使用的是:
auxiliary/admin/ *** b/ms17_010_command
exploit/windows/ *** b/ms17_010_eternalblue
exploit/windows/ *** b/ms17_010_psexec
这里的之一个和第三个模块需要目标开启命名管道,并且比较稳定。第二个模块只要存在漏洞即可,但是会有概率把目标打蓝屏,而且杀软拦截也会比较严格,如果有杀软就基本可以放弃这个模块了。
在打ms17010的时候,不妨使用auxiliary/admin/ *** b/ms17_010_command模块探测一下是否可以使用命名管道。
use auxiliary/admin/ *** b/ms17_010_commandsetrhosts192.168.164.156192.168.164.161setcommandtasklistshow optionsrun
如果命令执行成功的话就可以优先考虑
auxiliary/admin/ *** b/ms17_010_commandexploit/windows/ *** b/ms17_010_psexec
这两个模块进行利用。
我在上边打得时候因为目标机器没有杀软就直接使用exploit/windows/ *** b/ms17_010_eternalblue来打了,期间为了测试打过多次,确实出现了把目标机器打重启的情况。
总结
这个靶场设计的技能点比较基础,外网打点获得shell后,直接可以通过cs上线,在管理员权限下,抓取密码,新建一个 *** b beacon然后使用psexec对内网两台不出网的机器进行横向。
内网渗透-常用工具免杀
Mimikatz其实并不只有抓取口令这个功能,它还能够创建票证、票证传递、hash传递、甚至伪造域管理凭证令牌等诸多功能。由于mimikatz的使用说明网上资料很多,这里就不多加介绍了,随着这两年hw行动越来越多,企事业单位也都开始注重内网安全,有预算的会上 *** 的终端安全、企业版杀软或者EDR,就算没有预算的也会装个360全家桶或者主机卫士之类的,这也导致很多时候你的mimikatz可能都没法拷贝过去或者没有加载执行,拿了台服务器却横向移不动就尴尬了。因为这款工具特别出名所以被查杀的机率很大, 我们可以通过 github 上的开源代码对其进行源码免杀从而 bypass 反病毒软件。
Mimikatz 源代码下载
免杀步骤
替换 mimikatz 关键字 shenghuo
mimikatz 下的文件全部改为 shenghu
把项目里所有的文件注释去掉
/_ Benjamin DELPY gentilkiwi benjamin@gentilkiwi.com Licence : _/
打开红色框框内的内容,替换图标文件
出现 无法找到 v140 的生成工具(平台工具集 =“v140”),要选择自己安装的平台工具集
重新生成
生成的程序能够正确运行
成功过360
PrintSpoofer做免杀
printspoofer提权工具目前主流的提权工具之一,360 安全会自动查杀,其他杀毒软件并不会查杀。
源码下载地址:
将PrintSpoofer.cpp 里面的输出帮助文档全部清空
导入图标
重新生成,程序生成成功
成功过360
metasploit 是一款开源的安全漏洞检测工具,同时Metasploit 是免费的工具,因此安全工作人员常用 Metasploit 工具来检测系统的安全性。Metasploit Framework (MSF) 在 2003 年以开放源码方式发布,是可以自由获取的开发框架。 它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、 shellcode 编写和漏洞研究提供了一个可靠平台。其中攻击载荷模块(Payload) , 在红队中是个香饽饽,使用这个模块生成的后门,不仅支持多种平台,而且 Metasploit 还有编码器模块(Encoders),生成后门前,对其进行编码转换,可以混 淆绕过一部分杀毒软件。
工具 Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup 下载地址
metasploit源码下载:metasploit-loader/master/src/main.c
选择:文件-新建项目-consoleApplication-c 项目
把winsock2.h 移动到windows.h 上 不然编译会出错。
将这四处的数字改为其他数字
设置攻击载荷,执行后成功上线
成功过360
生成python64位的shellcode
添加生成的shellcode
编译成程序
pyinstaller -F test.py —noconsole
此时还要做的就是更改图标,这里介绍一种 ***
首先右击它,选择“添加到压缩文件”
在弹出来的一个“压缩文件名和参数”框中设置压缩文件格式为“ZIP”,压缩方式为“存储”,压缩选项为“创建自解压格式压缩文件”。
随后选择“高级”选项卡。选择了“高级”选项卡以后直接点击“自解压选项”
在设置选项卡中解压后运行对应程序
在模式选项卡中选择解压临时文件夹和全部隐藏
随后再选择“更新”选项卡,在覆盖方式中选择“覆盖所有文件”
最后选择“文本和图标”选项卡,在自定义自解压文件徽标和图标中选择“从文件加载自解压文件图标”,点击“浏览”,找到自己想要加载的图标文件后并打开
然后就点击确定(两次)就可以生成一个新的exe程序了。图标已经改变了,再运行测试一下
上传去目标主机,这里更改了程序名称
在线查杀
是很流行的编程语言,也可以用它来做一个加载器运行cobaltstrike的 shellcode,生成出来的 文件特别的小,可以很好地投递传输。
项目地址 用 vs2017 打开 sln 项目文件
选择 xorkryptor 生成编码器 用 cobalt strike生成 raw 二进制文件
encrypt.bin 就是经过编码后的文件
项目里面存有 Rsources 和 encrypt.bin 文件 事实上项目是没有这个文件夹和文 件所以在当前目录新建文件夹和将生成好的shellcode文件 encrypt.bin 复制到文 件夹里。右键选择编译文件即可。
此时文件正常
重新编译,成功生成后门程序
成功过360
成功上线
cobalt strike使用跳板进行内网渗透
Pivoting ,在本手册中,指的是「将一个受害机器转为其他攻击和工具的跳板」。Cobalt Strike 的Beacon 提供了多种 pivoting 选项。前提是 Beacon 处于交互模式。交互模式意味着一个 Beacon 每 秒内多次连接到团队服务器。使用 sleep 0 命令来使你的 Beacon 进入交互模式。
通过 [beacon] → Pivoting → SOCKS Server 来在你的团队服务器上设置一个 SOCKS4a *** 服务 器。或者使用 socks 8080 命令来在端口 8080 上设置一个 SOCKS4a *** 服务器(或者任何其他你想 选择的端口)。
所有经过这些 SOCKS 服务器的连接都将被转变为让相关联 Beacon 执行的连接、读写和关闭任务。你 可以通过任何类型的 Beacon 经由 SOCKS 隧道传输(甚至是一个 *** B Beacon)。
Beacon 的 HTTP 数据通道是响应速度最快的 pivoting *** 。如果你想通过 DNS 中继流量,使用DNS TXT 记录的通信模式。
要查看当前已经配置的 SOCKS 服务器,通过 View → Proxy Pivots 。 使用 socks stop 命令来停用 SOCKS *** 服务器。
proxychains 工具将强制外部程序使用你指定的 SOCKS *** 服务器。你可以使用 proxychains 强制第 三方工具经过 Cobalt Strike 的 SOCKS 服务器。要了解有关 proxychains 的更多信息,请访问:
安装proxychains,配置文件修改如下
pre class="dd95-6642-8dc8-c094 cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"--- snippet --- [ProxyList] # add proxy here ... # meanwile # defaults set to "tor" socks4 127.0.0.1 8973/pre
过执行 *** 工具 proxychains,对内网主机 ip 地址为192.168.237.127进行端口探测。执行指令如下所示:
pre class="6642-8dc8-c094-809e cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);" proxychains nmap -sT -Pn 192.168.237.129/pre
然后可以通过 *** 使用其他的安全工具进行下一步的渗透,如果说有些工具是不支持 *** ip的,那么还有 ***
Proxifier:
当使用没有 *** 功能的工具对目标内网进行渗透时,可以使用Proxifier工具能够将程序通过socks *** 对内网进行渗透。详细的使用过程如下所示:
打开Proxifier软件,单击Profile-Proxy Server-add 添加本地主机的 *** 端口。协议选择socks5类型,可以点击check进行测试当前 *** 是否成功。
这样的配置会让当前所有软件走全局的 *** 。可以让一些不支持 *** 功能的软件走 *** 。
首先,用cs新建一个外部的监听:我这里选用外部http链接。
开启msf,使用exploit/multi/handler模块,设置payload为windows/meterpreter/reverse_http,然后show options 查看需要设置的参数。
注意:payload必须是和cs上设置的监听模块一致。
然后在cs的beacon控制台中直接输入
pre class="8dc8-c094-809e-8fd4 cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"spawn msf/pre
过了几秒,msf中就会得到会话
这部分是在msf获取到会话之后,把会话上传到CS上。
首先在CS上新建一个内部监听。
然后在msf中进行配置
首先在msf上面查看要上传·会话的id:(我这里是2)
使用这个exp:exploit/windows/local/payload_inject
设置好参数之后,检查参数时候设置完全和正确。
exploit执行
cs上就会上线了
这两天出文章的速度慢了,是因为我一直在持续的开发和优化知识库,现在知识库上线新的功能GitHub索引,地址是: ,不过现在只能是pc端访问,移动端访问样式会乱掉,因为我前端技术实在是渣渣
首页整理了github上最新流行的趋势。下图是中文趋势
下图是全网趋势