手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

商用硬件Token设备软件实现中的Envelope漏洞分析

来源£º本站整理 作者£º佚名 时间£º2019-04-29 TAG£º 我要投稿

我最近正在研究一个使用?#29992;ÜToken(USB?#29992;?#29399;)的不知名Windows软件£¬其中可执行文件本身经过某?#20013;?#24335;的预处理£¬并被封装和?#29992;Ü£?#20197;阻止在没有?#29992;?#29399;的情况下使用¡£目前£¬该软件不再适用于Windows 10(可能是由于Envelope保护逻辑中的某些漏洞)¡£
实际上£¬该软件使用这些Envelope是为了防止?#29992;?#29399;代码被删除£¬如下所示£º
if(!dongle_present()){exit();}
即使被删除£¬也很容易被修复¡£
另外£¬使用这些Envelope还有作用¡£
1.隐藏硬编码的秘密£»
2.隐藏未发布的功能£»
3.阻止或使软件复制复杂化£»
过去今年£¬我已经研究了几个辅助封装的硬件的二进制文件£¬其中并没有很多变体¡£考虑到封装代码已经成了一个不怎么被关注的技术£¬没有很多变体也是可以理解的¡£另外£¬添加至少需要通过HID进行通信的硬件组件£¬会使任何封装器模型复杂化£¬并显著增加攻击面¡£
?#27426;ø£?#26412;文所讲的样本则非常有趣£¬因为它似乎不是普通的AKS/HASP SRMEnvelope或VMPEnvelope£¬而是来自深思洛克(SenseLock) 的更便宜的产品¡£
硬件

Senselock LC也被称为Clave 2£¬这个预算级别的硬件?#29992;ÜToken不像Elite EL型号那样华而不实¡£它没有强大的API£¬无法执行用户创建的自定义固件£¬它绝对是“入门级”的Token设备¡£
配置如下£º
1.内置2KB闪存£»
2.通过API和“更新包”远程更新此内存区域£»
3. AES128位?#29992;Ü£?#24102;有不可配置的硬件密钥£»
4.每次调用最多16个字节的输入数据£»
5.HID(Driverless)支持Windows/Mac/Linux 32/64位£»
另一个值得吹捧的特性(仅适用于Windows 32位)是一个Envelope实用程序£¬它可以用?#29992;?#29399;?#29992;?#21644;封装现有的¡¢预编译的可执行文件£¬并提供一些额外的安全选项£¬比如自定义漏洞消息或将特定的封装可执行文件绑定到特定的?#29992;?#29399;¡£
供应商提供的软件
?#20197;?#30340;是£¬这个?#29992;?#29399;的API可以在Senselock站点上免费获得£¬包括用于封装的实用程序¡£应该注意的是£¬虽然其他产品£¨如HASP£©会混淆客户端API库和封装实用程序£¬但这并非总是如此¡£
你可以很容易地从API zip中轻松抓取一个静态库文件并解压缩它:

可以看出它们没有被删除£¬以后会有用的¡£

Envelope实用程序本身是一个相?#34987;?#26412;的GUI£¬它会扩展到使用LC库静态编译的exe¡£
API本身也是相当简单的£¬使用Clave 2£¬你可以进行如下操作£º
1.打开具有给定索引的句柄£»
2.使用密码登录£¬密码有三个 £¬分别是admin (read – write)¡¢general (read/encrypt/decrypt)和auth£»
3.做你想做的£»
应该注意的是£¬这种API流程的工作方式意味着在大多数情况下£¬通用密码至少可能是硬编码的¡£因此£¬如果有人知道所需的密码£¬那么使用这个公开可用的API并使用适用于其他软件的?#29992;?#29399;创建软件就很简单了¡£
注: 大多数?#29992;ÜTokenAPI都会进行一些初始化£¬以便将静态和动态库绑定到特定的?#29992;?#29399;或?#29992;?#29399;系列£¬这是为了防止人们通过公共可用库与特定?#29992;?#29399;交互¡£
漏洞寻找
1.一开始我们对目标应用程序了解得不?#27426;à£?#25152;以更好的方法是封装一个超级基础应用程序¡£这样£¬我们就将同时拥有代码和原始二进制文件£¬并将其用于我们的测试¡£
2.我们可能会使用API库来标记供应商代码£¬并尝试更快地?#33539;?#25972;个过程的工作方式¡£
3.我们的目的是?#33539;?#23553;装器是如何工作的£¬或者使用调试器生成一个运行转储¡£
4.如果我们真的想要额外的点£¬这是可能的£¬我们可以静态地重构原始的exe£¬而不需要实际运行程序¡£
4.1该封装器是否采用了额外的进程¡¢nanomites……£»
4.2如果封装器使用被盗字节£¬那么静态构建将更加困难£»
测?#26434;?#29992;程序
一个相?#34987;?#30784;的C语言程序将非常适合测试£º
#include #include int main() {
 HMODULE h = LoadLibraryA("user32.dll"); printf("This is a test program: %p\n", h);
 HANDLE hfile = CreateFileA("C:\\test.txt",
  GENERIC_READ,
  FILE_SHARE_READ,  NULL,
  OPEN_EXISTING,
  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,  NULL); CloseHandle(hfile); return 0;
}
编译后的结果大约是9KB (JFC Visual Studio)£¬用Envelope处理它会得到一个后缀为“_shell”的exe£¨大小> 100KB£©

将它加载到IDA中分解IAT£¬这样我们的可执行文件中有一个新部分:

毫无疑问£¬这也是我们新的测试点¡£
首先要做的是打开我们的静态库£¬寻?#39029;?#37327;和各种类似的函数£¬并检查xreferences£¬以尝试标记其中的一些内容¡£
结果如下:

现在£¬在原始入口点之后输入一些二级函数£¬这样我们将开始看到一些熟悉的内容£¬例如£º

[1] [2] [3] [4]  下一页

¡¾声明¡¿:黑吧安全网(http://www.rliwo.live)登载此文出于传递更多信息之目的£¬并不代表本站赞同其观点和对其真实性负责£¬仅适于网络安全技术爱好者学习研究使用£¬学习中请遵循国家相关法律法规¡£如?#24418;?#39064;请联系我们£¬联系邮箱[email protected]£¬我们会在最短的时间内进行处理¡£
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载
        ¹ºÂò²ÊƱȨÍþÍøÖ·
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中