首页
社区
课程
招聘
[翻译]自启动方式 No.94 No.95(大意)
2019-3-17 16:41 5708

[翻译]自启动方式 No.94 No.95(大意)

2019-3-17 16:41
5708

声明:本文及其软件仅用于学习交流,请勿用于商业用途和违法行为,使用产生的后果由使用者承担,本作者不承担任何法律责任和风险。如需转载请注明一下出处,谢谢~。


---------- ---------- ---------- ---------- ---------- No.94 ---------- ---------- ---------- ---------- ----------


原文:http://www.hexacorn.com/blog/2018/11/25/beyond-good-ol-run-key-part-94/

这是一篇关于Windows 10新功能的短文,有一些用户在网上抱怨这个新功能。

当你使用这个系统一段时间,并且在某个时候需要重启系统时,你可能会注意到,有时在重启系统之前运行的应用程序会在你登录系统之后重新启动。

Regedit就是一个很好的例子。如果你打开它,然后重启系统,Regedit将会自启动。

Windows 10如何知道系统重启后自启哪些进程?

在重启系统之前,填充RunOnce键,以如下形式添加项目列表:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Application Restart #N=<Application Path>

N是一个数字(代码在winsrvext.dll)。

所以,如果你遇到这样的条目,至少我们可以猜出它们来自哪里。

那么,操作系统是如何知道要自启哪些程序的呢?

如果你使用过OSX,你可能熟悉一个很酷的功能——重启系统后自启之前打开的应用程序。Windows 10会遵循这条路径吗?事实证明,真相要无趣得多。这实际上根本就不是类似Mac osx的功能。操作系统只是获取在运行时调用RegisterApplicationRestart API的程序列表,并且只将这些程序添加到RunOnce键中。

最后,我完全不知道为什么Regedit也调用这个API。


---------- ---------- ---------- ---------- ---------- No.95 ---------- ---------- ---------- ---------- ---------- 


原文:http://www.hexacorn.com/blog/2018/12/02/beyond-good-ol-run-key-part-95/

最近我阅读了关于Turla的ESET研究报告。
我在阅读的时候发现了对Turla持久性驻留机制的描述,该机制需要在被感染系统中用到Bat!程序。虽然Eset的报告声称Turla不再使用这个技巧,但我认为在本系列中对它进行描述将是一个好主意。另外,我还增加了一个技巧作为奖励。
对于那些不知道的人而言,Bat!是一个非常流行的电子邮件客户端。它是持续开发的,仍然有很多用户可能因为这个程序的插件框架而成为恶意软件攻击的目标。
根据ESET的文件叙述:
为了注册成为Bat!的一个插件,恶意软件修改文件%appdata%\The Bat!\Mail\TBPlugin.INI。这是注册Bat!插件的合法方法。一些插件也依赖该法,如反垃圾邮件插件。
TBPlugin.INI的结构非常简单——它是一个标准的Windows .ini文件:
...
[Plugins]
Count=<number>
Plugin #1=<file name>
Plugin #2=<file name>
...
.ini文件可能包含其他部分,如:[Plugin Data]和[AntiSpam]。
插件是一个标准的DLL模块。为了正常工作,它需要导出一些或全部api,如下所示:
TBP_Initialize
TBP_Finalize
TBP_GetName – 必须导出,插件才能正常工作。
TBP_GetVersion
TBP_GetStatus – 必须导出,插件才能正常工作。
TBP_GetInfo
TBP_NeedConfig
TBP_Setup
TBP_SetConfigData
TBP_GetConfigData
TBP_NeedCOM
TBP_GetSpamScore
TBP_FeedSpam
TBP_GetMacroList
TBP_ExecMacro
TBP_SetLibEntryPoints
TBP_NeedResave
TBP_SetCoreBridge
关于如何开发Bat!的插件的更多信息(包括示例插件),点击:https://www.ritlabs.com/en/products/thebat/plugin.php
在我的测试中,我成功地执行了一个测试DLL,而不导出任何必需的api。当我试图手动添加插件时,程序确实加载了DLL并执行了它的DllMain函数,只不过提示它不是一个能正常工作的插件。
这是意料之中的。依赖于dll的大多数插件框架都是通过调用LoadLibrary(调用DllMain)来加载的,然后是一系列GetProcAddress调用来获得插件接口指针(导出API)。
这种通过程序首选项(Preferences)对话框对TBPlugin.INI进行的手动配置更改和更新的“损坏”的插件DLL无法使用,而且会立即弹窗提示用户。
但是!
它仍然有效,这是一个很好的机会。
查看开发人员的帮助文档,并检查程序的首选项(Preferences),我注意到除了“标准”插件之外,Bat!还支持另一种插件:支持反病毒功能的插件,用来扫描电子邮件客户端操作的文件。
我之前贴出的网站链接提供了ClamAV插件的一个示例(F-Prot插件链接已失效)。
你可以通过首选项(Preferences)对话框添加AV插件:
或者直接编辑%appdata%\The Bat!\Mail\AVConfig.INI文件的内容。这个.ini文件“专用”于杀毒插件的主机配置。它的内容是这样的:
...
[Checkers]
Count=<number>
Checker #1=<name>.<path>
Checker #2=<name>.<path>
...
杀毒插件使用文件扩展名.bav,需要导出一些API,如下所示:
BAV_Initialize
BAV_Uninitialize
BAV_ComNeeded
BAV_GetName
BAV_GetVersion
BAV_ConfigNeeded
BAV_Setup
BAV_SetCfgData
BAV_GetCfgData
BAV_GetStatus – 必须导出,插件才能正常工作。
BAV_MemoryChecking
BAV_FileChecking
BAV_StreamChecking – 必须导出,插件才能正常工作。
BAV_CheckFile
BAV_CureFile
BAV_CheckMemory
BAV_CureMemory
BAV_CheckStream
BAV_CureStream
BAV_CheckStreamEx – 必须导出,插件才能正常工作。
BAV_CureStreamEx – 必须导出,插件才能正常工作。
我们有更多的依据来判断Bat!是否已经安装在被分析系统上:
%appdata%\The Bat!\Mail\TBPlugin.INI 文件
%appdata%\The Bat!\Mail\AVConfig.INI 文件
*.tbp 文件
*.bav 文件
为什么还要查看.tbp和.bav文件呢?聪明的攻击者可以修补现有的插件(以病毒式的方式)。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回