请输入您要查询的百科知识:

 

词条 Worm.Win32. RavMon
释义

该病毒属蠕虫类,病毒作者通过python2exe来编译的病毒,python2exe使用python的modualfinder来调入要运行的scripts寻找并运行它所需要的所有python模块和扩展模块。病毒运行后会复制原病毒体到%windir%\\RavMon.exe,而后调用注册表相关函数,将该病毒副本添加到启动项,达到随系统启动的目的。

概述

病毒名称:Worm.Win32. RavMon

病毒类型:蠕虫

危害等级:中

文件长度:3,513,806 字节

文件MD5:5D8CC0712927E07A1BAB416493F43036

公开范围:完全公开

感染系统:windows 98 及以上版本

开发工具:python

病毒描述

病毒还会尝试收集感染主机的信息,如:感染的主机名,当前windows版本等。如果当前系统为xp,则病毒还会通过运行“netsh firewall delete portopening TCP”来删除防火墙端口配置协议中的传输控制协议,进而降低系统的安全性。病毒尝试连接网络,获取一个shell,通过运行rundll32.exe并加载shdocvw.dll来打开一个URL地址。病毒还具有结束进程功能。此病毒通过U盘和移动设备来进行传播。

行为分析

1、HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\RavAV

键值: 字串: "C:\\WINNT\\RavMon.exe"

2、病毒尝试连接网络,尝试连接下地址:

3、开启本机一个随机端口并发送获得的计算机信息。如:计算机名、端口、版本信息等。

4、猜测该病毒的某些功能对应的python模块文件名:

终止进程对应的python模块名为:killProcName.pyo

url地址对应的python模块名为: urllib.pyo、urlparse.pyo

获取目标主机信息对应的python模块名为:os.pyo

http相关的python模块名为:httplib.pyo

删除cookiess对应的python模块名为:cookiess.pyo

base64/quopri编码功能对应的python模块名为:base64.pyo

cmd功能对应的python模块名为:cmd.pyo

修改注册表对应的python模块名为:copy_reg.pyo

ftp相关的python模块名为:ftplib.pyo

调用socket相关的python模块名为:socket.pyo

usb相关的python模块名为:usb.pyo

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

代码分析

python2exe使用python的modualfinder来调入要运行的scripts并且寻找运行它所需要的所有python模块和扩展模块。

纯python的模块在临时目录里被编译成.pyc(debug)和.pyo(optimized)的文件。编译后的扩展模块pyd文件也能找到。

最后生成一个与zip兼容的包,包含一个dependency目录和你的script,这个包最后提供给一个py2exe自带的python解释器。

运行生成的程序,将建立一个重要的关联,这样在script开始运行的时候,必要的模块可以从包中的正确地import。

由于扩展模块不能从zip包中包含或import,它们以被单读提供。放在dist\\myscript目录下。

解码的过程:

main, winmain调用start函数。

start:

(1) 获得目录名和文件名(GetModuleFileName)

(2) 取出执行文件的数据(MapExistingFile)

(3) 获得script的信息(GetScriptInfo)

(4) 用_putenv设置用户的环境变量(PYTHONHOME,PYTHONPATH,PYTHONOPTIMIZE,PYTHONDEBUG等)

(5) 将scriptinfo种的信息来设置python内部变量(Py_NoSiteFlag, Py_VerboseFlag等)

(6) Py_Initialize()

(7) PySys_SetArgv(argc, argv)

(8) 调用BuildToc获得toc(dict对象)

(9) 调用PyRun_SimpleString执行"import sys; sys.path=[r'%s']"

(10)调用Load_Module调入imputil模块,调用PyRun_SimpleString执行"import imputil"

(11)Py_InitModule("__main__", methods);

(12)解出Scripts\\\\并运行它

(13)解出Scripts\\\\__main__.py并运行它(这里的__main__.py就是要打包的python文件,被重命名为__main__.py)

source\\start.c:

1. MapExistingFile:用文件映像的方法打开文件,读处理里面的内容。

2. GetScriptInfo: 从archive.h中定义的(central directory record)格式的数据中取出script info(optimize, verbose, tag)到全局变量p_script_info中。

3. BuildToc:构造一个新的dict对象,在arch文件中做一个循环,取出所有的name放入dict中(PyDict_SetItem),其中调用了fixpath来解决"\\"和"/"的统一问题,并将dict返回(注意,name好像是不带后缀的)。

4. extract_data: 使用zlib.h中定义的zstream结构,从archive结构中获得指定的长度的数据 5. GetContentsFromOffset:计算位置,调用extract获得数据。

6. GetContents:利用PyDict_GetItemString从toc中得到指定的名字的文件的位置,调用GetContentsFromOffset获得数据。

7. Load_Module:检查p_script_info->optimize,判断文件名的后缀是".pyo"还是".pyc",调用GetContents从数据中调出这个文件。

8. get_code:指定名字,获得这个文件的内容:GetContents + PyString_FromString。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 10:39:46