mimikatz可谓获取windows明文密码神器,新版本更是加上了64位支持。用过一个小型获取明文密码程序,只有一个可执行文件ReadPSW.EXE,通过逆向写出了源代码,稍微改改可能也可以支持64位。分享一下逆向过程和工作原理。
了解mimikatz
只要借用一下电脑,便可轻松拿到密码……“女神,借用电脑一看可否?”
大神们都知道的东西吧,渗透测试常用工具。法国一个牛B的人写的轻量级调试器,可以帮助安全测试人员抓取Windows密码。
mimikatz 最近发布了它的2.0版本,抓密码命令更加简单了,估计作者也看到了对它这个神器最多的研究就是直接抓密码,为神马不发布一个直接一键版,哈哈哈哈哈。新功能还包括能够通过获取的kerberos登录凭据,绕过支持RestrictedAdmin模式的win8或win2012svr的远程终端(RDP) 的登陆认证。建议默认禁止RestrictedAdmin模式登录。更多内容点我
逆向过程
我喜欢先用IDA看大致流程,遇到难以静态看出来的函数再用OD或者windbg。IDA F5 main函数,一段一段的看。
变量名大多是修改过的,通过分析子函数的功能做相应的改变,看起来方便一些。
首先提权,比较简单:
接着main函数流程:
上面工作主要是:获取lsass.exe进程句柄、根据不同版本赋值两个偏移量。可以看出支持xp和2003,之后版本vista、win7等使用同一偏移量。
这个GetFunctionAddr是我重命名的,跟进去看一下实现就知道了:
是一个跳转,接着跟进:
是用特征码查找函数地址的,想知道是什么函数最好用windbg跟一下,发现找到了lsasrv.dll的LsaUnprotectMemory 函数,这里我也对变量名进行了重命名。该函数用于解密LsaProtectMemory加密内存,这两个函数在LSA中用得非常多。
这两个函数挺关键,需要结合OD动态调试,先看第一个,中间有个类似上面的跳转,直接看实现函数:
首先加载wdigest.dll模块,这里有详细的介绍。然后获取SpInstanceInit的地址,接着是一个查找函数的循环,根据特征码在SpInstanceInit地址低位查找某个地址,使用windbg可以看到要找的东西:

0:000> ln eax
(742ec29c) +0xc29c
这并不是一个函数,具体的作用现在还不知道。后面会用到。
看下面的函数,这个函数实际上是用来产生DES的密钥:
根据最初得到的偏移,读取进程地址空间,获取DES的密钥。了解了这两个函数内容接着回归main函数:
加载secur32.dll,然后获取几个函数的地址,枚举登陆会话和获取登陆会话数据。接着调用LsaEnumerateLogonSessions得到当前登录的会话个数以及所有会话组成的列表。MSDN上说明了这个函数,会返回会话的LUID。
后面是一些释放dll和内存的工作,不再赘述。程序和IDA数据库右键图片可以得到。
电脑中的DLL文件是怎么产生的
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。 可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。 在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的 EXE 程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。 一般来说,DLL 是一种磁盘文件,以、、、 和许多以 为扩展名的系统文件都可以是 DLL。 它由全局数据、服务函数和资源组成,在运行时被系统加载到调用进程的虚拟空间中,成为调用进程的一部分。 如果与其它 DLL 之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。 DLL 模块中包含各种导出函数,用于向外界提供服务。 DLL 可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个 DLL 在内存中只有一个实例;DLL 实现了代码封装性;DLL 的编制与具体的编程语言及编译器无关。 在 Win32 环境中,每个进程都复制了自己的读/写全局变量。 如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段。 DLL 模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。 Windows 在加载 DLL 模块时将进程函数调用与 DLL 文件的导出函数相匹配。 Windows 操作系统对 DLL 的操作仅仅是把 DLL 映射到需要它的进程的虚拟地址空间里去。 DLL 函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有如果你不知道他是不是病毒还是系统文件 你可以行为的话可以看路径、名称、创建时间等信息。 反汇编的话可以看该DLL的功能是什么,如果插入中的话很有可能就是病毒。 反汇编也称做逆向分析,通过反汇编来分析该程序的各功能模块。 所以需要掌握相应的基础知道,如:汇编语言、程序设计思想、系统环境以及系统原理等。 对DLL反汇编的主要工具有:OD、IDA、softICE等。 动态反汇编工具可以直观的了解很多值及操作。 静态反汇编工具则需要你计算相应的寄存器值。
硬盘的坏道一般是怎么产生的?
运行中突然断电对硬盘来说是最致命的!会产生坏道,坏道是会扩散的,不过,硬盘坏道分逻辑坏道和物理坏道,关于如何检测和修复坏道,请看下面。 如何检测和修复硬盘坏道?首先需要先确认硬盘的坏道是逻辑坏道还是物理坏道。 方法很简单,在电脑刚启动时按“F8”键,选择“Command Prompt only”进入DOS模式。 这种方法的操作系统必须为Windows95/98,若为Windows2000/XP/2003,请使用DOS启动盘启动。 然后执行“Scandisk X:”(X为怀疑有故障的盘符),Scandisk便会检查硬盘,对产生的逻辑坏道会自行弹出对话框,选择“Fix it”对逻辑坏道进行初级修复。 如扫描程序在某一进度停滞不前,那么硬盘就有了物理坏道。 对于已进行初级修复的仍有逻辑坏道的硬盘,正常启动后回到Windows下,进入“我的电脑”中,选择有逻辑坏道的分区,单击鼠标右键,选择“属性”、“工具”、“开始检查”,就弹出“磁盘扫描程序”,选中“完全”,并将“自动修复错误”打上勾,单击“开始”,就开始对该分区进行扫描和修复。 而对于有物理坏道的硬盘,上述方法就没用了。 对于这样的故障,如果硬盘还没过质保期,就去找销售商更换或维修。 但如果过了质保期,可以自己动手修理了,推荐使用原厂的DM工具,对硬盘进行“清零”处理,很多小问题用DM都能解决,而且经上面处理过后,再使用其它软件,硬盘修复的时间能大为缩短。 然后再使用HDDREG、MHDD、FB这些软件进行处理。 这几款软件功能类似,使用上各有特色。 HDDREG可以通过磁性逆转方式来达到修复坏道的目的,据称可以修复大约60%的受损硬盘,在修复坏道的同时又不影响硬盘原有的数据信息,而这是低级格式化程序所做不到的。 当然还可以用Partition Magic手工处理,达到隐藏坏道的目的。 具体的做法是:首先启动Partition Magic,选中“Operation”菜单下的“Check”命令,对硬盘进行直接扫描,标记坏簇后,选中“Operation”菜单下的“Advanced”、“bad sector retset”,最后把坏簇分成一个独立的分区,再通过“Hide partiton”命令将分区隐藏即可。 如果电脑启动时出现信息:“TRACK 0 BAD,DISK UNUSABLE”,那么修复起来就比较麻烦,因为此信息说明硬盘的零磁道损坏了,一般出现这种情况,大多数人就把硬盘做报废处理。 但绝非不能修复,原理很简单,只要用1扇区代替0扇区就行了,在这里向大家推荐“DiskMan”,它是一款比较常用的硬盘工具。 下载后在纯DOS下运行,方法如下:在“硬盘”菜单中选中要修复的盘(一般为C盘),然后依次进入“工具”、“参数修改”将“起始柱面”的值由“0”改为“1”,确定后保存退出。 就可以对硬盘进行重新分区了。 目前,专业硬盘维修软件“PC-3000”与硬盘厂商的维修方式就非常相似。 PC-3000是由俄罗斯著名硬件实验室--ACE Laboratory研究开发的商用的专业修复硬盘综合工具。 它通过分析和逆向工程,将厂商的指令代码甚至Firmware破解,使得可以编制出程序软件,自由的读取、修改和写入硬盘系统信息区的信息。 像硬盘厂商一样,编写程序对磁盘表面按照物理地址进行扫描,重新构造出新的缺陷扇区列表写进系统保留区来替换原有的列表。 经过这样的软件维修的硬盘,理论上与硬盘厂商维修的硬盘几乎没有差别。
发现硬盘驱动器已经有损坏的扇区能不能修复?用什么软件?最好中文版的软件。
先试着让系统修复吧,请看下面文章!如何修复硬盘坏道?首先需要先确认硬盘的坏道是逻辑坏道还是物理坏道。 方法很简单,在电脑刚启动时按“F8”键,选择“Command Prompt only”进入DOS模式。 这种方法的操作系统必须为Windows95/98,若为Windows2000/XP/2003,请使用DOS启动盘启动。 然后执行“Scandisk X:”(X为怀疑有故障的盘符),Scandisk便会检查硬盘,对产生的逻辑坏道会自行弹出对话框,选择“Fix it”对逻辑坏道进行初级修复。 如扫描程序在某一进度停滞不前,那么硬盘就有了物理坏道。 对于已进行初级修复的仍有逻辑坏道的硬盘,正常启动后回到Windows下,进入“我的电脑”中,选择有逻辑坏道的分区,单击鼠标右键,选择“属性”、“工具”、“开始检查”,就弹出“磁盘扫描程序”,选中“完全”,并将“自动修复错误”打上勾,单击“开始”,就开始对该分区进行扫描和修复。 而对于有物理坏道的硬盘,上述方法就没用了。 对于这样的故障,如果硬盘还没过质保期,就去找销售商更换或维修。 但如果过了质保期,可以自己动手修理了,推荐使用原厂的DM工具,对硬盘进行“清零”处理,很多小问题用DM都能解决,而且经上面处理过后,再使用其它软件,硬盘修复的时间能大为缩短。 然后再使用HDDREG、MHDD、FB这些软件进行处理。 这几款软件功能类似,使用上各有特色。 HDDREG可以通过磁性逆转方式来达到修复坏道的目的,据称可以修复大约60%的受损硬盘,在修复坏道的同时又不影响硬盘原有的数据信息,而这是低级格式化程序所做不到的。 当然还可以用Partition Magic手工处理,达到隐藏坏道的目的。 具体的做法是:首先启动Partition Magic,选中“Operation”菜单下的“Check”命令,对硬盘进行直接扫描,标记坏簇后,选中“Operation”菜单下的“Advanced”、“bad sector retset”,最后把坏簇分成一个独立的分区,再通过“Hide partiton”命令将分区隐藏即可。 如果电脑启动时出现信息:“TRACK 0 BAD,DISK UNUSABLE”,那么修复起来就比较麻烦,因为此信息说明硬盘的零磁道损坏了,一般出现这种情况,大多数人就把硬盘做报废处理。 但绝非不能修复,原理很简单,只要用1扇区代替0扇区就行了,在这里向大家推荐“DiskMan”,它是一款比较常用的硬盘工具。 下载后在纯DOS下运行,方法如下:在“硬盘”菜单中选中要修复的盘(一般为C盘),然后依次进入“工具”、“参数修改”将“起始柱面”的值由“0”改为“1”,确定后保存退出。 就可以对硬盘进行重新分区了。 目前,专业硬盘维修软件“PC-3000”与硬盘厂商的维修方式就非常相似。 PC-3000是由俄罗斯著名硬件实验室--ACE Laboratory研究开发的商用的专业修复硬盘综合工具。 它通过分析和逆向工程,将厂商的指令代码甚至Firmware破解,使得可以编制出程序软件,自由的读取、修改和写入硬盘系统信息区的信息。 像硬盘厂商一样,编写程序对磁盘表面按照物理地址进行扫描,重新构造出新的缺陷扇区列表写进系统保留区来替换原有的列表。 经过这样的软件维修的硬盘,理论上与硬盘厂商维修的硬盘几乎没有差别。
发表评论