copyright (c) 2010 czy invicta
all rights reserved.
在每乙個公司的網路中,都會存在基於microsoft windows的印表機連線到網路上進行共享,因此可用於許多員工在同一時間使用列印服務。本文介紹如何濫用此功能進行本地許可權提公升或進行印表機伺服器上的遠端入侵——取決於命令列訪問目標系統。
windows印表機驅動程式已經有乙個漫長而有趣的歷史了,有很多完全不同的印表機製造商如何執行印表機驅動程式。但是,為了防止每個印表機製造商的要推倒重來,制定了本地驅動程式。 microsoft提供了通用印表機驅動程式,可以自定義**商和可擴充套件的印表機配置檔案(這些驅動是微型驅動)。還為驅動程式開發相關頁面描述語言(印表機命令語言postscript),但確定是在核心模式還是使用者模式實施驅動程式是至關重要的:截至到windows nt 4.0,它是唯一可在核心模式下執行印表機驅動程式,自從windows 2000以後,同時在使用者模式下都可以執行。下表給出了概述不同的可能性。
作業系統
核心模式
(第二版印表機驅動程式)
使用者模式
(第三版印表機驅動程式)
windows nt是否
windows 2000、2003、xp是是
windows vista否是
使用者模式與核心模式的印表機驅動程式
使用者模式印表機驅動程式很容易理解:乙個核心模式錯誤會導致你的系統出現藍屏並崩潰,而在使用者模式下,您只需要重新啟動列印後台處理程式(spoolsv.exe),在使用者模式下進行軟體開發和除錯簡單得多。
為了讓應用程式使用一台印表機,乙個不同的組成部分就需要大量的互動。例如乙個文字檔案,記事本程式必須使用本地已安裝的印表機,記事本呼叫各種gdi(圖形裝置介面)的win32功能的api。 gdi的渲染引擎和印表機驅動程式的列印資料,將其**到列印後台處理程式中。該列印後台處理程式的主要任務是後台處理列印作業,進一步轉換和選擇將資料傳送到印表機。
假使乙個本地已安裝的印表機使用的是舊核心模式的驅動程式,過程如下所示:
核心的列印作業處理模式
如果網路印表機替代本地印表機,客戶端後台處理列印作業將**到伺服器端的列印後台處理程式。
本地許可權提公升……核心模式的印表機驅動程式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果我們想提公升本地系統上的許可權,我們為什麼不只是安裝修改過的核心模式印表機驅動程式執行任意命令呢?嗯!第一,它不允許普通使用者安裝印表機驅動程式(這要求高階許可權載入和解除安裝裝置驅動程式(seloaddriver))。第二,核心模式印表機驅動程式的命令是有限的。不過,下面我們將看到如何挑戰並解決這一問題。
在這個例子中,我們假設互動(但有限)訪問 windows xp sp3的客戶端系統(目標系統)上,我們要提高我們的許可權。訣竅是安裝在這個系統中新增網路印表機的印表機驅動程式的一部分。因此,我們需要第二個系統(攻擊者系統),我們安裝和共享惡意本地印表機。要啟動驅動程式,從目標系統連線到攻擊者的系統上安裝共享印表機必須建立。 internet列印(http印表機只來自於web瀏覽器80埠的tcp連線)不幸的是不是乙個選擇,因為在這種情況下印表機驅動程式的安裝需要管理許可權(見[1])。因此,只有傳統方式對映到共享印表機才可以使用,並tcp連線埠139(netbios會話服務)或445(smb)是必需的。如果這些要求得到滿足,那麼可以實現一下特權:
·攻擊者系統:操縱核心模式印表機驅動程式。現在,這台印表機是共享的,以便它可以被反覆使用網路-同樣來自於目標系統。
·目標系統:作為乙個正常登入的使用者帳戶,印表機驅動程式的操作自動複製攻擊者系統到目標系統。
·目標系統:現在所有需要執行的是已在惡意核心模式印表機驅動程式內建的命令啟動列印作業。
不幸的是,在核心模式中只能執行某些gdi函式,這部分檢查呼叫使用者的許可權。
例如,函式engmapfile可以用來建立或讀取檔案-任意檔案訪問,但這是不可能的,因為函式檢查ntfs訪問許可權。令人驚訝的是,這一檢查不會產生函式engdeletefile,它有可能已經刪除任意檔案。但是,為了執行任意命令,有必要載入乙個核心模式的dll(進一步的資料[2]),來自於乙個所謂的函式engloadimage相關的檔案。此相關的檔案(我們選擇的檔名sample.dll)需要指定給印表機,這可能看起來像清單1 的.inf檔案。
上面的例子是基於windows驅動程式工具包msplot的.inf檔案。此檔案包含印表機上的所有必要的資訊條目,更多的資訊可以從[4]找到。
該**在印表機驅動程式dll相關的一部分如清單2所示。
這個核心模式dll可以包含任何的功能。下面的示例**展示,該檔案rsvp.exe如何覆蓋samplefunction函式。這最終導致許可權提公升公升,因為windows服務的qos rsvp協議可以啟動乙個普通使用者,並作為本地系統執行(在這個例子中,你可能要迅速啟動windows服務,因為windows檔案保護(見[7] )將恢復原始檔案)(見清單3)。
zwclose(hfilehandle);
return 0;
}ntstatus
driverentry(in pdriver_object driverobject,in punicode_string registrypath)
當然,還有許多其他的可能性永久提公升您的許可權,你可以在核心模式下執行任意命令。然而,在上述的例子中,它不常用,因此不會觸發反病毒軟體的警報。
不幸的是,無法使用核心模式印表機驅動程式,如上表展示。因此,下面的文章部分將展示如何使用乙個使用者模式印表機驅動程式提公升許可權。
使用者模式印表機驅動程式
~~~~~~~~~~~~~~~~~~~~~~~~
安裝Linux網路印表機的步驟
環境 已經安裝好 cups common unix printing system 列印管理程式,印表機支援ppd postscript printer description 1.把ppd檔案cp到 usr share cups model,重啟cups服務 2.進入http localhost ...
安裝網路印表機遇到的問題!
上汽客戶的一台98的機子要安裝2000上的一台印表機。一開始網路鄰居老是連線不上去。於是看了一篇文章如下 常見的網路上的芳鄰訪問問題精解 windows網路上的芳鄰互訪的基本條件 1 雙方計算機開啟,且設定了網路共享資源 2 雙方的計算機新增了 microsoft 網路檔案和列印共享 服務 3 雙方...
cups支援的印表機列表 CUPS共享網路印表機
一 安裝cups伺服器 docker pull olbat cupsd 2 執行cups映象,直接使用網頁登入cups伺服器,進行設定。docker run d p 172.29.11.7 631 631 restart always v var run dbus var run dbus name...