spora分析过程的产生的部分笔记
更详细的报告见360的分析:http://bobao.360.cn/learning/detail/3453.html
注:好坑爹,截了一堆图,貌似太多,传不上去。。。。。
只能放文字了。。
一、获取系统版本信息
1 通过GetFIleVersionInfoSizeW(),GetFileVersionInfo(),VerQueryValuew()配合使用
获取文件属性的信息。主要由VerQueryValuew()第二个人参数设置取出
关于第二个参数:
样本所指定参数为"//"
所以取出VS_FIXEDFILEINFO结构
二、获取卷标信息,保存备以后作为加密秘钥使用
通过GetVolumeInfomationw
三、GetProAddress()获取RtlComputeCrc32和memset,memcpy三个函数的地址
四、获取命令行,判断是否携带"/u"启动,判断是否创建互斥量,如果存在则结束。如果不存在则创建
五、如果带参数/u 启动则执行系列工作
1 利用wmic删除卷副影像,禁用开机自动修复
命令解释:
cmd.exe /c vssadmin.exe delete shadows /all /quiet
以上命令执行后系统所有还原点清除
bcdedit.exe /set {" "default} recoveryenabled no
bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures\"
以上命令禁止开机启动修复
2. 删除注册表键值IsShortcut,使普通应用程序和数据文件快捷方式的小箭头不显示
isShortcut使用说明
六、 CreateStreamOnHGlobal函数从指定内存创建流对象。创建成功后获取驱动器个数,遍历驱动器
使用GetLogicalDrives(),获取系统存在的逻辑盘符,这个结构中的二进制位标志着存在哪些驱动器。
其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推。
GetDriveTypew()获取逻辑盘类型,下图为类型说明。
获取得到的驱动器类型作为下一个函数的第二个参数传入
判断如果驱动器类型值为2或3则进行下一步操作,即移动存储硬盘和不可移动存储介质。
七、过滤目录和指定文件夹
指定过滤的文件夹windows,progra files ,program files (x86),games
八、过滤需要加密的文件类型
涉及的文件格式有22种
九、CryptAcquireContextW()获取csp容器,全局存放地址;405EB0,获取成功则解密一个key:00405EA8
并导入了解密的key
十、加密文件
十一、通过删除:Zone.Identifier文件,清理网络第三方下载的元数据标记。防止被系统不信任文件作出警告。
遍历磁盘文件
利用硬盘序列号计算CRC32值
获取卷盘序列号
生成系统文件夹快捷方式
/c explorer.exe \"%s\" & type \"%s\" > \"%%tmp%%\\%s\" & start \"%s\" \"%%tmp%%\\%s\""
利用WNetOpenEnumW,WNetEnumResourcew横向移动。遍历网络资源。
使用SHChangeNotiy通知系统更新文件关联信息。
退出程序
http://blog.csdn.net/wowolook/article/details/8263001
WINSHELLAPI void WINAPI SHChangeNotify(
LONG wEventID, //指定事件类型
UINT uFlags, //确定dwItem1和dwItem2作的标志
LPCVOID dwItem1,
LPCVOID dwItem2
);
1.wEventId的取值如下:
SHCNE_ASSOCCHANGED:修改文件关联
SHCNE_ATTRIBUTES:改变文件属性
SHCNE_CREATE:创建新文件
SHCNE_DELETE:删除文件
SHCNE_DRIVEADD:增加网络驱动器
SHCNE_DRIVEADDGUI:通过GUI增加网络驱动器
SHCNE_DRIVEREMOVED:卸载网络驱动器
SHCNE_INTERRUPT:将事件作为系统中断执行。
SHCNE_MEDIAINSERTED:安装可卸载媒体,如CD-ROM
SHCNE_MEDIAREMOVED:卸载可卸载媒体,如CD-ROM
SHCNE_MKDIR:新建目录
SHCNE_NETSHARE:网络上共享资源
SHCNE_NETUNSHARE:网络上停止共享资源
SHCNE_RENAMEFOLDER:文件夹改名
SHCNE_RENAMEITEM:文件夹中某项改名
SHCNE_RMDIR:删除目录
SHCNE_SERVERDISCONNECT:与网络服务器断开链接
SHCNE_UPDATEDIR:更新目录信息
SHCNE_UPDATEIMAGE:改变系统全局图像列表中的一个图像
SHCNE_UPDATEITEM:改变打印机或文件的列表
3.该函数没有返回值。
2.uFlags的取值如下:
SHCNF_DWORD: dwItem1和dwItem2是DWORD类型值。
SHCNF_FLUSH:清空系统事件缓冲区,系统处理完给定的事件后才返回
SHCNF_FLUSHNOWAIT:清空系统事件缓冲区,立即返回
SHCNF_IDLIST:dwItem1和dwItem2为项目标识符列表的地址
SHCNF_PATH:dwItem1和dwItem2为路径地址
SHCNF_PRINTER:dwItem1和dwItem2为友好打印机名
无命令行启动下。
1 获取句柄和CSP容器,解密硬编码数据其中AESkey
2 将key写入文件
3 查找文件,网络资源
4 打开勒索网页
5 获取权限删除卷副影像和快捷方式图标,权限不够时,使用cmd rundas
6 生成HTML文件copy到其他目录
0012FEE8 0018F078 UNICODE "\CH04F-A3AHT-XFTZT-OTFFT-HAYYY.HTML"
在许多应用中,一个CSIDL可以与下面的标识之一进行组合使用:
CSIDL_FLAG_CREATE($8000)
windows 2000:如果这个CSIDL所引用的文件夹不存在,则创建这个文件夹!.
CSIDL_FLAG_DONT_VERIFY($4000)
WINDOWS 2000: 无论这个CSIDL所引用的文件夹是否存在都使用它!
CSIDL_ADMINTOOLS($30)
表示当前用户的"管理工具"系统文件夹
CSIDL_ALTSTARTUP($h2D)
不详
CSIDL_APPDATA($1A)
表示当前用户的特定的应用程序数据存储文件夹,例如:C:\Documents and Settings\username\Application Data
CSIDL_BITBUCKET($A)
表示回收站
CSIDL_COMMON_ADMINTOOLS($2F)
表示所有用户的"管理工具"系统文件夹
CSIDL_COMMON_ALTSTARTUP($1D)
表示所有用户的 (只支持WINDOWS NT 系统)
CSIDL_COMMON_APPDATA($23)
表示所有用户的特定的应用程序数据存储文件夹,例如:C:\Documents and Settings\All Users\Application Data
CSIDL_COMMON_DESKTOPDIRECTORY($19)
表示所有用户的"桌面"文件夹,例如:C:\Documents and Settings\All Users\Desktop。
CSIDL_COMMON_DOCUMENTS($2E)
表示所有用户的"我的文档"文件夹,例如:C:\Documents and Settings\All Users\Documents
CSIDL_COMMON_FAVORITES($1F)
表示所有用户的"我的收藏夹"文件夹。
CSIDL_COMMON_PROGRAMS($17)
表示所有用户的"程序"文件夹,例如:C:\Documents and Settings\All Users\Start Menu\Programs
CSIDL_COMMON_STARTMENU($16)
表示所有用户的"开始菜单"文件夹,例如:C:\Documents and Settings\All Users\Start Menu
CSIDL_COMMON_STARTUP($18)
表示所有用户的"启动"文件夹,例如:C:\Documents and Settings\All Users\Start Menu\Programs\Startup
CSIDL_COMMON_TEMPLATES($2D)
表示所有用户的"模块"文件夹,例如:C:\Documents and Settings\All Users\Templates
CSIDL_CONTROLS($3)
表示"控制面板"文件夹
CSIDL_COOKIES($21)
表示当前用户Internet Explorer的cookie 文件夹,例如:C:\Documents and Settings\username\Cookies
CSIDL_DESKTOP($0)
表示"桌面"虚拟文件夹,包含了计算机中的所有内容
CSIDL_DESKTOPDIRECTORY($10)
表示当前用户的"桌面"文件夹,例如:C:\Documents and Settings\username\Desktop
CSIDL_DRIVES($11)
表示"我的电脑"虚拟文件夹,包含了计算机中所有的驱动器
CSIDL_FAVORITES($6)
表示当前用户的"收藏夹"文件夹,例如:C:\Documents and Settings\username\Favorites
CSIDL_FONTS($14)
表示"系统字体"文件夹,例如:C:\WINNT\Fonts
CSIDL_HISTORY($22)
表示Inernet Explorer的"历史记录"文件夹
CSIDL_INTERNET($1)
表示Internet的这个虚拟文件夹
CSIDL_INTERNET_CACHE($20)
表示当前用户的Internet Explorer的"Cache"文件夹,例如:C:\Documents and Settings\username\Temporary Internet Files
CSIDL_LOCAL_APPDATA($1C)
表示当前用户的应用程序数据文件夹,例如:C:\Documents and Settings\username\Local Settings\Application Data
CSIDL_MYMUSIC
表示当前用户存储音乐文件的文件夹,例如:C:\Documents and Settings\User\My Documents\My Music
CSIDL_MYPICTURES($27)
表示当前用户存储图像文件的文件夹,例如:C:\Documents and Settings\username\My Documents\My Pictures
CSIDL_NETHOOD($13)
表示当前用户存在的网络连接的文件夹,例如:C:\Documents and Settings\username\NetHood
CSIDL_NETWORK($12)
表示"网上邻居"这个虚拟文件夹
CSIDL_PERSONAL($5)
表示当前用户的"我的文档"文件夹,例如:C:\Documents and Settings\username\My Documents
CSIDL_PRINTERS($4)
指向"打印机"这个虚拟文件夹
CSIDL_PRINTHOOD($1B)
表示当前用户存在的网络打印机的虚拟文件夹,例如:C:\Documents and Settings\username\PrintHood
CSIDL_PROFILE($28)
表示当前用用户配置文件的文件夹
CSIDL_PROGRAM_FILES($26)
表示程序文件的文件夹,例如:C:\Program Files
CSIDL_PROGRAM_FILES_COMMON($2B)
表示系统程序共用组件文件夹,例如:C:\Program Files\Common
CSIDL_PROGRAMS($2)
表示当前用户的"程序"菜单文件夹,例如:C:\Documents and Settings\username\Start Menu\Programs
CSIDL_RECENT($8)
表示当前用户的"文档"菜单文件夹,例如:C:\Documents and Settings\username\Start Menu\Programs
CSIDL_SENDTO($9)
表示当前用户的"发送到"文件夹,例如:C:\Documents and Settings\username\SendTo
CSIDL_STARTMENU($B)
表示当前用户的"开始"菜单文件夹,例如:C:\Documents and Settings\username\Start Menu
CSIDL_STARTUP($7)
表示当前用户的"启动"菜单文件夹,例如:C:\Documents and Settings\username\Start Menu\Programs\Startup
CSIDL_SYSTEM($25)
表示WINDOWS系统的系统文件夹,例如:C:\WINNT\SYSTEM32
CSIDL_TEMPLATES($15)
表示的是系统中存储文档模块的文件夹
CSIDL_WINDOWS($24)
表示的是系统中Windows目录的文件珍,例如:C:\WINNT