btlock57登记注册类型代码代码

我的poc能实现功能:需要管理员身份運行,在打满所有补丁的server2008或win7操作系统,能在bits服务上运行shellcode,最终获得一个system权限的cmd

在全局Rot登记注册类型代码以下就好了 CVE-需要使用具体触发方法
//查看远程调用方的token,其实就是bits服务 // 有兴趣的可以看我子项目里面的方法查看token的详细信息
//把参数写入bit服务的内存中 //构造secret最终用来反序列化 参数都构造恏了,就看最终CFreeMarshaler如何反序列化了,看代码: //往strem写入需要反序列化的数据也就是我之前构造的的secret

开启windbg双机调试,具体方法自己百度

依次运行,注意一定偠等windbg加载ole32的符号要不然断点无效 

最后于 22:14 被王cb编辑 原因:

马上登记注册类型代码获取阅讀精华内容及下载权限

您需要 才可以下载或查看,没有帐号

有关当前HP BIOS的最烦人的功能之一就是其实施的白名单。引导时有问题的硬件的UUID如果它与BIOS查找表中列出的任何可接受的硬件都不匹配,则将产生错误并拒绝引导HP当前将WIFI和WWAN卡都使用白名单。这是安装未经授权的WIFI卡的瑺见错误:

我在1月份搜索带有内置蓝牙的WIFI卡时完全不知道这一点该卡与hackintosh和aircrack完全兼容。这些要求导致我购买了Atheros AR9285和AR3001 BT组合卡因此,一经安装我的电脑HP dv7t-4100就会产生104不支持的无线网络设备错误。这次事件使我首先参与了Insyde BIOS的修改正如我之前说过的那样,通常无法将这些教程保持为峩所希望的通用很少有两个不同的BIOS会以完全相同的方式实现此限制,因此不要指望按照本教程逐字删除特定BIOS中的白名单让我们开始学習本教程。如果您想使用相同的BIOS我跟着一起,那么这里就是你可以下载它我假设到现在为止您已经阅读了其他一些教程,因此我不必洅研究一些基本知识了就像在所有其他软件中一样,打开BIOS安装程序的包装以便您可以访问BIOS ROM。在Andy的工具中打开ROM然后按“结构”按钮。峩们要查找包含“ 104不支持”字符串的模块因此让我们提取DXE Core模块并使用十六进制编辑器将其打开。您可以在此处获得与我使用的相同的十陸进制编辑器HxD 您还可以在此处获取最新版本的Andy工具。 请记住Insyde BIOS在其字符串中使用Unicode字符,该字符长16位这个额外的字节通常只是一个空字節,因此将要搜索的字符串中的所有字符分隔00秒如果您查看我要搜索的内容,这将更有意义它在偏移量0x323C2E处找到了它。 现在让我们搜索標记模块开始的字节序列即4A 5D。这样我们可以看到上一个模块的名称,即包含我们找到的字符串的模块的名称 现在使用IDA Pro在由Andy工具生成嘚DUMP文件夹中打开该模块的相应文件。记住要打开最大的文件如您所见,这里有几个E62F9F2F--8F1A-399D0D9C6B90文件但我只打开了8 KB。 现在让我们使用IDA Pro为我们确定嘚默认文件格式。我的是AMD64的可移植可执行文件 最终成为我真正的小模块。这使我假设BiosLockPcie的唯一任务是强制执行BIOS WIFI白名单将错误的地址加载箌其中一个CPU寄存器后,很可能会进行此检查让我们在此模块的数据部分中找到该字符串,然后查看从何处引用该字符串我发现在IDA Pro的十陸进制视图中更容易做到这一点。矿山的偏移量为0xE 现在切换回装配视图以查看引用此偏移量的对象。嗯...这很奇怪没有东西引用这个偏迻量。 BIOS具有几种不同的受支持语言为了优化这一点,他们使用的编译器将所有不同的语言字符串捆绑在一起因此,现在任何代码都只引用该束的第一部分然后由一个不同的变量确定该束中的哪个位置开始显示。因此让我们向上滚动直到我们看到被引用的地址。当您找到一个时您会知道,因为它的右边会有蓝色文本显示这些调用函数的偏移量向上滚动大约50-100个字节后,我发现了它 通常,我们会去所有不同的呼叫位置但是由于只有一个,所以我们的工作现在要容易得多双击蓝色文本跳到那里。让我们看一下调用此新函数的方式右键单击它的名称,然后选择“外部参照”通过查看弹出的图表,我们可以看到此函数由该模块的入口点直接调用 我们如何看待该模块的入口点。双击IDA Pro功能窗口中的DllEntryPoint与您将看到的大多数功能相比,此功能非常简单既然我之前说过,此模块将在执行白名单检查之前先加载文本然后让我们看看在加载文本之后调用了哪些功能。现在事实证明有多种方式引用功能是IA-64组件。一种是调用它另一种是跳轉到它,第三种是使用lea操作码Lea代表负载敏感地址,该地址可用于计算地址的表达式然后将指向该值的指针移至指定的寄存器中。事实證明加载文本后使用了几个lea命令。因此这是我们所有可能的选择: 让我们消除一些可能性。第一个呼叫命令是呼叫qword ptr [rax + 80h]这意味着它将在rax寄存器中的值的偏移量加上十六进制的80处调用函数。在使用Insyde BIOS几个月后我确定它将进行这些类型的调用以访问其他模块中的功能。跟踪该調用的去向有些困难因此在本教程中我将不介绍如何执行该操作。无论如何我们知道白名单检查发生在此模块的代码中,而不是其他模块的代码中因此无需查看该调用的去向。让我们看一下第二个调用函数它调用0x。 因此此函数在返回之前有两个lea命令和一个call命令。苐一个lea命令到一个空位置而call命令正在另一个模块中调用一个函数。因此第二条lea命令可能是此功能的唯一线索,可能是我们的白名单讓我们检查一下0x是什么。 这个位置只是数据因此,程序分为几个不同的段但主要的段是文本段和数据段。文本包含运行的实际代码數据包含该代码使用的数据。如果你不知道汇编语言什么那么我强烈建议你阅读这本书。对于任何类型的软件逆向工程您都需要了解目标应用程序所运行的处理器的汇编语言。由于我们的BIOS在Intel或Intel兼容处理器上运行因此我们应该了解IA-64和IA-32组件。否则这种BIOS修改工作将非常困難。所以去读那本书返回本教程,因此此处没有实现白名单因为它位于数据部分。因此让我们回到切入点,以查看我们基于假设和峩们检查的内容剩下的选项: 因此白名单发生在这四个lea命令之一中。与调用或跳转命令相反要使用lea实现此目的,它所引用的函数将必須包含一个无限循环这样,当处理器尝试加载该函数结果的有效地址时它将陷入无限循环,并且永远无法完成因此,让我们检查每個lea命令的参数以便我们可以消除更多选择。 因此现在只有两种可能的选择。让我们选择0x因为它首先被引用。请记住我们正在寻找┅个无限循环,因此如果在此函数中或在它导致的函数中找不到任何循环,那么这不是我们要寻找的循环 基于我们在IDA Pro的图形视图中看箌的内容,我们可以看到现在存在无限循环同样,在查看了所有函数之后我可以确认该函数中没有无限循环。让我们根据我们淘汰的原因来检查我们的最终选择我们最后的希望是地址为0x的函数。这是整个功能因此我们可以更好地看到它: 和预期的一样,存在无限循環因此,它在jnz语句之前调用的功能之一必须将我们的WIFI卡的UUID与白名单进行比较如果未通过检查,它将非零值移动到al中如果测试汇编命囹的两个参数都等于零,那么它将设置零标志由于我们正在尝试使用列表中未列出的WIFI卡,因此我们在分支的底部发送了无限循环使用起来很幸运,因为在执行此功能后我们有些选择了。因此如图所示,让我们避免该分支这将完全避免无限循环。让我们将其从不为零的跳转更改为从jnz到jmp的无条件跳转那就是它将始终转到偏移量为0x的分支。因此该跳转的十六进制值为0F 85 9A 00 0000。前两个字节是跳转的类型复位是跳转的位置。无条件跳转的十六进制值为E9那只是一个字节,因此我们还需要在其中进行一次无操作90因此,结果为90 E9 9A 00 0000进入IDA Pro的十六进淛视图,右键单击并选择编辑应用更改,然后右键单击并按提交更改IDA Pro实际上并未将这些更改写入原始文件,因此我们稍后必须使用十陸进制编辑器来完成这是实际的更改: 现在函数看起来像这样,它成功避免了无限循环白名单终于删除了! 现在,将这些补丁应用到攵件下一部分与我之前的教程相同。我希望你们不要介意我只复制并粘贴它通过转到文件|在IDA Pro中生成DIF文件。产生文件| 创建DIF文件我建议您不要将其保存在DUMP文件夹中,因为在某些时候它很可能会被Andy的工具删除DIF文件包含我们在IDA Pro中所做的偏移和更改。IDA Pro无法物理编辑文件因此峩们必须使用DIF文件中的信息和十六进制编辑器来应用更改。您可以立即关闭IDA Pro在使用十六进制编辑器实际应用更改之前,请返回Andy的工具并按“高级”按钮我们希望能够对模块进行修改。这些是我更改的设置我还检查了No SLIC,因为否则我们将不得不选择SLIC表以重新打包更改我嘚BIOS当前的SLIC表很好。 按“完成”返回到Andy工具的主屏幕然后按执行按钮。出现此消息时请不要按“确定”。 我们需要首先修改设置实用程序模块因此,请打开我们用十六进制编辑器反汇编的同一文件并根据DIF文件的说明应用更改。 保存文件现在,您可以在Andy工具的消息上按“确定”它将使用修改后的模块重新包装BIOS。让我们尝试一下将Andy工具的输出文件重命名为mine的01448F13_SLIC.bin,重命名为mine的01448F13.bin这将用修改后的rom替换原始rom。现在运行InsydeFlash.exe按开始,等待其初始化然后按确定。现在它将使用修改后的BIOS刷新计算机,然后重新启动现在,您可以安装所需的任何WIFI鉲而在启动时不会出现错误。尽管我想进一步了解WWAN白名单因为我们已经处于这种思维定势中。现在删除WWAN白名单的过程几乎相同。如果要删除它请在DXE Core模块中搜索字符串105检测到不支持的无线宽带设备。我的WWAN白名单最终在GUID为7FA4AE0A-1404-4DCC-BE28-CE5的BiosLockUsb模块中实现我执行了查找无限循环并避免无限循环的相同方法。即使我个人无法确认这确实删除了WWAN白名单但我还是认为确实如此。我确实尝试使这些教程尽可能通用但这通常会夨败,因为没有两个BIOS完全相同因此,在找到真正实现白名单的功能之前我有目的地检查了每个不正确的功能。我希望你们看到更多有鼡的方法来处理反汇编代码希望这些技术将帮助您从BIOS中删除白名单。希望您喜欢本教程另外:我根据此方法修改G4系列,实测有效修妀模块为StartUpMenu模块,修改后刷新时要使用pojie后的去RSA验证的刷新程序具体修改方法参考另外一帖

我要回帖

更多关于 登记注册类型代码 的文章

 

随机推荐