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

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

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

我最近正在研究一个使用?#29992;躎oken(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;躎oken不像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;躎okenAPI都会进行一些初始化,以便将静态和动态库绑定到特定的?#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亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中
        西游争霸决战天下程序 hostel佛罗伦萨 大航海时代免费试玩 北京pk开奖 排球比分直播大赢家 新疆25选7微信群 im体育结算太慢了 传奇电子大奖截图 微乐宁夏麻将ISO 福彩3d画谜