当前位置: 首页 > 新闻中心 > 技术分享 > 【美亚技术分享】第四十二期:神技能之渗透攻防“Meterpreter”达人是怎样炼成的?

【美亚技术分享】第四十二期:神技能之渗透攻防“Meterpreter”达人是怎样炼成的?

【美亚技术分享】第四十二期:神技能之渗透攻防“Meterpreter”达人是怎样炼成的?


编者按:本期感谢美亚柏科控股子公司安胜技术专家的分享,熟悉Metasploit的人应该对Meterpreter不陌生,作为后渗透阶段的利器,其强大的功能不言而喻;本期安胜的技术专家刘老师对Meterpreter的技术优势、实战操作及常用命令等进行深度解读,带大家全面掌握Meterpreter,揭开其神秘面纱。如果您也对这方面的消息感兴趣,欢迎加入我们的讨论!


在Metasploit v4之后的新版本中,Meterpreter作为后渗透攻击模块的实施通道,可以根据渗透测试目标需求进行灵活扩展,极大地丰富了攻击方式。其涉及范围包括信息搜集、口令获取、权限提升、内网拓展等。


一、Meterpreter技术优势


1、平台通用性提供了各种主流操作系统和平台上的meterpreter版本,包括windows、linux、BSD,并同时支持x86和x64平台。另外还提供基于java和php语言的实现,以应对各种不同环境。


2、纯内存工作模式工作时直接装载meterpreter的动态链接库到目标进程空间,而不是先上传到磁盘,再调用loadlibrary加载动态链接库启动。这样启动隐蔽,很难被杀毒软件检测到,也不会再目标主机磁盘留下任何痕迹。


3、灵活且加密的通信协议 采用TLV(type length value)数据封装格式;通信数据经过XOR加密,然后调用OpenSSL库进行SSL封装传输,保证传输的保密和隐蔽性。

4、易于扩展 Meterpreter的插件以动态链接库文件的形式存在,可以选择你喜欢的编程语言按照Meterpreter的接口形式编写你需要的功能,然后编译成动态链接库,拷贝至相应目录即可。


二、实战作业


1.首先用msfvenom命令生成一meterpreter shell ;


msfvenom命令行选项如下:   




图1

Options: -p, --payload    <payload>       指定需要使用的payload(攻击荷载)。 -l, --list       [module_type]   列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all  -n, --nopsled    <length>        为payload预先指定一个NOP滑动长度  -f, --format     <format>        指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)  -e, --encoder    [encoder]       指定需要使用的encoder(编码器)  -a, --arch       <architecture>  指定payload的目标架构  --platform   <platform>      指定payload的目标平台 -s, --space      <length>        设定有效攻击荷载的最大长度  -b, --bad-chars  <list>          设定规避字符集 -i, --iterations <count>         指定payload的编码次数  -c, --add-code   <path>          指定一个附加的win32 shellcode文件  -x, --template   <path>          指定一个自定义的可执行文件作为模板  -k, --keep                       保护模板程序的动作,注入的payload作为一个新的进程运行  --payload-options            列举payload的标准选项  -o, --out   <path>               保存payload -v, --var-name <name>            指定一个自定义的变量,以确定输出格式  --shellest                   最小化生成payload -h, --help                       查看帮助选项  --help-formats               查看msf支持的输出格式列表


msfvenom命令中用-p指定payload(用msfvenom -l payloads命令查看可用的payload列表),用-e指定编码器(msfvenom -l encoders命令查看可用的编码器),用-f指定输出格式(用msfvenom --help-formats命令查看支持的格式),当输出为raw时可以使用多个编码器。



图2



图3

2.在kali上监听两个端口

图4


3.在Kali打开metasploit


可以写个rc脚本指定payload跟参数,用msfconsole -r 直接调用



图5

用run命令执行payload

图6

这时就连接上了其中一个端口,等待meterpreter shell上线

图7


4.上传meterpreter shell到目标执行后收到目标反弹回的meterpreter shell



图8


5.隐藏meterpreter shell


刚建立起shell的时候在目标上是能看到test进程的



图9

这时可以在shell里运行ps命令查看目标上的所有进程

图10

在meterpreter里面先用sysinfo看到目标系统是64位的,但是meterpreter是32位的,然后用getsystem提权到管理员,最后用migrate把meterpreter进程转移到其他32位进程中

图11


这时目标上就没有test进程了

图12


三、常用命令


1、基本命令(包含meterpreter和msf终端、ruby接口、目标shell交互的命令)

background(进程隐藏至后台)

sessions(查看已经成功获取的会话,-i 恢复会话)

quit(关闭当前会话)

shell (获取系统控制台shell,如果目标系统命令行可执行程序不存在或禁止访问, 则shell命令会出错)

irb(与Ruby终端交互,调用metasploit封装好的函数;在irb中还可以添加metasploit附加组件railgun,直接与windows本地API进行交互)

2、文件系统命令(与目标文件系统交互,包括查看、上传下载、搜索、编辑)

cat(目标系统文件交互)

getwd(获取目标机当前工作目录,getlwd本地当前工作工作目录)

upload(上传文件或文件夹到目标机 -r 递归)

download(从目标机下载文件或文件夹 -r 递归)

edit(调用vi编辑器,对目标上的文件进行编辑) search(对目标机的文件进行搜索)

3、网络命令(查看目标网络状况、连接信息,进行端口转发等)

ipconfig(获取目标主机上的网络接口信息)

portfwd(端口转发:将目标主机开放但不允许访问的端口进行转发)

route(显示目标主机路由信息)

4、系统命令(查看目标系统信息、对系统进行基本操作等)

ps(查看目标机正在运行的进程信息)

migrate(将meterpreter会话进程迁移到另一个进程内存空间)

execute(在目标机上执行文件)

getpid(当前会话所在进程的pid值)

kill(终结指定的pid程序)

getuid(获取当前会话用户名)

sysinfo(获取系统信息)

shutdown(关闭目标主机)
 

5、用户接口命令

screenshot(截获被控主机当前桌面)