Windows內部命令
2020-10-27 20:39:36
供稿:網友
Windows系統中最有用的命令行工具:包括WMIC、net、openfiles、netstat和查找命令。我將集中闡述五個比較有用的命令,并分析安全專家如何使用這些命令來幫助他們更好地工作,從而完整地列出十大命令。
與使用tasklist的程序相結合
當沒有其它選擇,只運行tasklist命令時,它會顯示一列所有正在運行的程序,顯示這些程序的名稱、PID碼和其它統計信息。要獲得更多的tasklist信息,可以考慮這樣運行該命令:
C:/> tasklist /svc
這個命令可以使tasklist顯示每個進程中是哪個服務正在運行。許多Windows用戶并不理解服務與進程之間的關系,Windows系統中的每個服務必須在某個程序中運行,并且一些程序內部有多個服務。因此,程序與服務之間的關系是一對多的關系,tasklist命令可以揭示這一點。
Tasklist命令的另一種有用形式是:
C:/> tasklist /m
“m”代表“模塊(modules)”,或者代表tasklist指代DLL和代碼庫的方式,代碼庫是程序在運行過程中按照主機的命令而加載的。當用這種方法調用命令時,tasklist可以顯示當前加載到所有運行程序中的每一個DLL。這就為用戶在特定的時間內提供了大量的信息,這些信息是關于其計算機上正在發生的情況。雖然非常麻煩,Google搜索特定的程序和DLL,可能會帶回反病毒廠商站點中的惡意軟件描述,有了特定樣本,就可以洞察到攻擊者的動機。
高級注冊表分析的reg命令
Reg命令可以使用戶與其機器的注冊表在命令行進行交互。沒有采用麻煩的regedit GUI來操縱注冊表,安全專家可以簡單地彈出打開一個Windows命令界面,并運行reg命令,進而讀取或更新注冊表。然而,reg命令不允許注冊表的交互式瀏覽;用戶需要知道他們想要查看或改變的注冊表索引的完整路徑。但是,一旦知道了路徑,reg命令是一種進行更改的簡單方式。
如果要查看特定注冊表索引的設置,使用reg命令的“查詢”選項,具體如下所示:
C:/> reg query hklm/software/microsoft/windows/currentversion/run
這個索引控制Windows上不同的自動啟動程序,當計算機啟動以及隨后用戶登錄到系統時,這些程序開始運行。許多惡意軟件樣本可以改變這個索引,來確保當系統重新啟動時,惡意軟件也開始運行。
將單個索引或者整個注冊表輸出到一個文件,用于分析或者將其安裝在一個隔離的系統中,reg命令支持“reg輸出”功能。除了讀取和輸出注冊表設置以外,reg命令也可以進行更新。“reg add”命令將更新現有索引值,或者在不存在索引的情況下,創建一個索引。“reg import”命令可以導入多個注冊表索引。
使用ipconfig進行DNS分析
大多數真正的Windows用戶都熟悉ipconfig命令,它非常有用,可以顯示Windows中的網絡設置。但是,ipconfig有一個非常有用的功能,Ipconfig命令可以顯示本地Windows機器中的DNS緩沖器,如下所示:
C:/> ipconfig /displaydns
該命令的輸出可以顯示各種緩沖域名、其相關的IP地址以及DNS記錄的停留時間(以秒計)。如果用戶重復運行這個命令,他們可以看到停留時間在減少,直到記錄終止并且被放棄,或者得到更新。在研究快速通量僵尸網絡時,查看DNS緩沖器和停留時間(TTL)值是非常重要的,可以利用帶有小部分TTL的DNS記錄,來迫使連續更新,并使研究者寧不清楚黑客主要的后端服務器的地址。無可否認,ipconfig并不擁有諸如本文中提到的其它命令(比如tasklist和reg)那么多的功能。但是,這條命令的一個用處就非常有用。
利用FOR /L循環重復運行
有時,管理員或者安全專家想要重復運行一條命令,可能在5秒的間隔內尋找其輸出的變化。要實現這一目的,他們可以采用Windows 系統的FOR循環。Windows支持五種不同的FOR循環,它們可以遍歷文件整數、文件名、目錄名稱、文件內容和字符串。這里的重點是這些循環的最簡化,尤其是FOR /L,由于它可以用來使命令連續運行,進而實現無數次遍歷。FOR /L循環的語法是:
C:/> for /L %[var] in ([start],[step],[stop]) do [command]
[var]是我們的迭代變量,一個英文字母將會在循環中的每一步顯示不同的迭代值。然后,用戶指定變量的初始值,在循環中的每一步中,數值會增加,并且其最大值會終止循環。也應當指定循環中每一步運行的命令。具體說來,需要考慮下面的幾點:
C:/> for /L %i in (1,1,10) do @echo %i
這個循環會使用%i作為一個變量,初始值為1。循環中的每一次迭代,%i會增加1,直至升到10。然后,在循環中,用戶可以使用echo命令,簡單地在屏幕上打印出迭代變量的值。@告訴系統不要打印出命令本身,這使得輸出稍微漂亮一些。用戶僅僅告訴系統從1計數到10。
現在,我們來看看如何使用這條命令來實現tasklist命令的連續運行:
C:/> for /L %i in (1,0,2) do @tasklist
輸入這條命令,就意味著用戶告訴計算機為變量賦值為1 ,啟動循環,計數為0 ,自始至終升到2。這就會無限計數,直到用戶單擊CTRL-C來終止它。用戶可以在每次迭代中簡單地運行tasklist命令。
要在迭代之間延遲幾秒,只需要添加“& ping --n 6 127.0.0.1 > nul”,在循環的每次迭代中簡單地多次ping本地主機(127.0.0.1)。如下所示:
C:/> for /L %i in (1,0,2) do @tasklist & ping --n 6 127.0.0.1 > nul
由于Windows命令行沒有內置的睡眠功能,來等待某個特定的延遲,用戶可以使用ping,進而產生一個延遲。上面的命令可以ping本地主機地址六次(-n 6),引入一個五秒的延遲(第一次ping立即發生,緊接著是每秒一次ping,持續五秒)。我們正將ping煩人的輸出轉儲為nul,并使之消失。結果是一個命令可以讓tasklist每五秒運行一次,這個技術可以用于重復運行本文中提到的每條命令,用戶可以更仔細地檢查輸出。更復雜的語法甚至可以解析命令的輸出,允許產生專門制作的腳本,進而用于詳細的系統分析,但是這種語法超出了每月技巧的討論范圍。
通過命令行啟動管理GUI
雖然Windows命令行有許多功能強大的工具,但是,不論你相信與否,有時候,GUI工具可以比命令行做的更好。然而,Microsoft已經在其GUI的某些地址中埋藏了不同的控件,記憶這些模糊的地址是一項令人混亂的任務。
幸運的是,用戶不必挖掘GUI來尋找他們想要的東西;相反,他們可以依賴命令行快捷方式。比如,不用在開始菜單中尋找并運行本地用戶管理GUI,用戶可以采用就近的命令提示和類型:
C:/> lusrmgr.msc
大量的其它GUI控件都可以采用這種方法從命令行中啟動,這樣就可以節省大量的時間。下面是我鐘愛的一些控件:
Secpol.msc:這是本地安全策略的管理者,用于在機器上配置大量的安全設置。
Services.msc:這條命令可以啟動服務的控制面板GUI。
Control:這個命令可以調出工具的整個控制面板設置。
Taskmgr.exe:該命令用于啟動任務管理器。
Explorer.exe:運行這條命令,可以采用便捷的方式調用Windows file explorer。
Eventvwr.ms:該命令可以運行此命令運行Windows事件查看器(Windows Event Viewer),有助于日志分析。
這些Windows命令行工具可以幫助管理員和安全專家更有力的掌控其Windows機器,當受到攻擊時,可以更安全地進行配置,更詳盡地進行分析。