linux 渗透 系统,初识Linux渗透:从枚举到内核利用
背景
許多人都認(rèn)為Linux是最安全的操作系統(tǒng),因此在對Linux的安全問題上也放松了警惕。那么事實(shí)真的如此嗎?其實(shí)安全從來都只是相對的,Linux也不例外。雖然它加載了強(qiáng)大的安全機(jī)制,但仍可能受到來自各方面帶來的安全威脅。本文我們主要將討論有關(guān)Linux架構(gòu)的主要利用技術(shù),以及相關(guān)的安全防御措施。
PS:本文僅用于技術(shù)討論與分享,嚴(yán)禁用于非法用途
Linux 概述
操作系統(tǒng)的主要目的是用于管理計(jì)算機(jī)硬件及軟件資源,并為計(jì)算機(jī)程序提供通用服務(wù)。Linux操作系統(tǒng)是由 Linus Torvalds于1991年開發(fā)的一個UNIX操作系統(tǒng)的克隆版本。不要混淆了Linux和Unix。它具有GNU通用公共許可證(GPL)的許可。Linux下為我們提供了強(qiáng)大的Shell系統(tǒng)用戶界面,用于接收用戶輸入的命令并把它送入內(nèi)核執(zhí)行。一些比較知名的shell包括:Bourne again shell (Bash), C shell (csh), Korn shell (ksh)。你可以通過cat /etc/shells查看你當(dāng)前的shell環(huán)境類型。
以下是一些非常常用的linux命令:
ls:列出文件和目錄
find:查找文件
cd:切換路徑
cp:復(fù)制
mv:移動
mkdir:創(chuàng)建一個目錄
rmdir:刪除目錄
rm:刪除文件
想要了解有關(guān)命令的更多細(xì)節(jié)信息,只需鍵入man命令即可。
Linux 流和重定向
當(dāng)你與Linux環(huán)境進(jìn)行交互時,它將為你提供輸入/輸出重定向功能以簡化你的體驗(yàn)。關(guān)于輸入輸出流的操作, 有以下三種流你可以使用:
標(biāo)準(zhǔn)輸入流 (stdin)
標(biāo)準(zhǔn)輸出流 (stdout)
標(biāo)準(zhǔn)錯誤輸出 (stderr)
這三個主要流的圖示如下:
另一個功能是重定向。它主要用于對流的重定向。執(zhí)行文本重定向,你可以使用以下符號:
“>”:覆蓋文件。
“>>”:將輸入添加到文件中。
以下是一些重定向符號及其用途列表:
Linux文件系統(tǒng)層次結(jié)構(gòu)
在Linux中,一切都可以看做文件,包括所有允許/禁止讀寫執(zhí)行權(quán)限的目錄和設(shè)備。Linux的分層設(shè)計(jì)如下:
/root:系統(tǒng)管理員的主目錄
/home:包含所有用戶的個人文件
/bin:包含所有二進(jìn)制文件(可執(zhí)行文件)
/sbin:超級管理命令,這里存放的是系統(tǒng)管理員使用的管理程序
/lib:包含所需的庫文件
/usr:包含普通用戶使用的二進(jìn)制文件
/opt:包含可選的附加應(yīng)用程序
/etc:包含程序所需的所有配置文件
/dev:包含設(shè)備文件
/media:包含臨時可移動設(shè)備的文件
/mnt:包含文件系統(tǒng)的掛載點(diǎn)
/boot:包含引導(dǎo)加載程序文件
/tmp:包含臨時文件
/var:包含變量文件,如日志文件
/proc:包含有關(guān)系統(tǒng)進(jìn)程的信息
用戶和組
用戶和組在Linux中至關(guān)重要,同時它提供多任務(wù)和多用戶功能。管理用戶和組,你可以使用以下linux命令:
Useradd:添加新用戶
Passwd:更改用戶密碼
Userdel:刪除用戶,你可以添加“-r”選項(xiàng)刪除用戶的文件
查看用戶組文件:cat /etc/group
創(chuàng)建一個組:
newgrp?
權(quán)限
在Linux中用戶和組的權(quán)限主要包括:
讀,以字母r表示
寫,以字母w表示
執(zhí)行,以字母x表示
要查看文件的權(quán)限,除了-l選項(xiàng)外,還可以使用ls命令:
chmod , chown 和 chroot 命令:
要更改文件權(quán)限,可以使用chmod命令,格式如下:
chmod
或者你也可以使用八進(jìn)制表示來代替字母
chown用于更改文件的所有者。
chroot改變程序執(zhí)行時所參考的根目錄位置。
Cronjobs 和 Crontabs:
自動化和任務(wù)調(diào)度是系統(tǒng)管理中非常重要的方面,尤其是在使用Linux時。自動化任務(wù)使系統(tǒng)管理員的工作變得更加輕松。Linux為我們提供了很好的任務(wù)調(diào)度功能,以在特定的時間運(yùn)行命令或腳本,我們稱之為Cron。調(diào)度 任務(wù)創(chuàng)建格式如下:
要檢查Crontab(包含有關(guān)cronjobs信息的文件),只需鍵入cat /etc/crontab即可
Linux 攻擊向量
以上我們對Linux系統(tǒng)環(huán)境和命令已經(jīng)有了一個初步的了解。下面,我們把目光轉(zhuǎn)向有關(guān)Linux所面臨的安全威脅上。攻擊者的攻擊媒介多種多樣,通常攻擊向量可以分為以下三種主要類型:
網(wǎng)絡(luò)威脅
主機(jī)威脅
應(yīng)用威脅
我們將在后半部分詳細(xì)討論有關(guān)針對Linux的安全威脅。在開始攻擊Linux之前,枚舉是必不可少的工作階段。
使用Nmap檢測系統(tǒng)
我們可以使用Nmap來幫助我們檢測,當(dāng)前主機(jī)是否在Linux上運(yùn)行。只需輸入nmap – O 即可。
Linux 枚舉
有許多開源工具可以幫助我們枚舉Linux機(jī)器。推薦大家使用LinEnum,在我看來這是最好用的工具之一。
使用:./LinEnum.sh -k keyword -r?report?-e /tmp/ -t
選項(xiàng):
-k 輸入關(guān)鍵字
-e 輸入導(dǎo)出位置
-t 包括徹底(冗長)測試
-r 輸入報告名稱
-h 顯示幫助文本
不帶參數(shù)運(yùn)行 = 有限掃描/沒有輸出文件
-e 要求用戶輸入輸出位置,例如/tmp/export。如果不存在該目錄文件,則會自動為你創(chuàng)建。
-r 要求用戶輸入報告名稱。報告(.txt文件)將保存到當(dāng)前工作目錄。
-t 執(zhí)行徹底(慢速)測試。如果不加該參數(shù),則會執(zhí)行默認(rèn)的“快速”掃描。
-k 可選,支持用戶在大量文件中搜索單個關(guān)鍵字。
LinEnum可幫助你查找有關(guān)Linux主機(jī)的信息,包括:
系統(tǒng)信息:
主機(jī)名
網(wǎng)絡(luò)詳情
當(dāng)前IP
默認(rèn)路由詳情
DNS服務(wù)器信息
用戶信息:
當(dāng)前用戶詳細(xì)信息
最后登錄用戶
顯示用戶登錄主機(jī)
列出所有用戶,包括uid/gid信息
列出root帳戶
提取密碼策略和哈希存儲方式信息
檢查umask值
檢查/etc/passwd中是否存儲密碼哈希值
提取“默認(rèn)”uid的完整詳細(xì)信息,例如0,1000,1001等
嘗試讀取受限制的文件,即/etc/shadow
列出當(dāng)前用戶的歷史文件(如bash_history,.nano_history等)
基本的SSH檢查
Linux提權(quán)
根據(jù)定義:“提權(quán)主要是利用編程錯誤或設(shè)計(jì)缺陷,來授予攻擊者特殊權(quán)限以訪問網(wǎng)絡(luò)及其相關(guān)數(shù)據(jù)和應(yīng)用程序等。”(摘自techtarget.com)。
提權(quán)可分為垂直和水平兩種;平行提權(quán),即權(quán)限類型不變,權(quán)限ID改變。垂直提權(quán),即權(quán)限ID不變,權(quán)限類型改變。野外使用的提權(quán)技術(shù)種類繁多其中包括:
Linux Services Exploitations:通過查找linux服務(wù)或配置中的錯誤來提權(quán)。
通配符:通配符可用于注入任意命令。
具體可以參考,之前發(fā)布的一篇有關(guān)利用通配符進(jìn)行Linux本地提權(quán)的文章。
SUID 濫用:
在這種技術(shù)中,攻擊者使用需要root權(quán)限的合法工具(如nmap)在系統(tǒng)上運(yùn)行惡意命令
Linux內(nèi)核利用:
這種利用的危害極大。一旦攻擊者成功利用linux內(nèi)核,他們將能夠完全控制系統(tǒng)。
Linux Exploit Suggester
Linux Exploit Suggester是一款由PenturaLabs開發(fā)的,可根據(jù)操作系統(tǒng)版本號自動查找相應(yīng)提權(quán)腳本的工具。其主要功能包括:
“Remote" 模式 (--kernel 或 --uname 開關(guān))
"Direct" 模式 (默認(rèn))
"CVE list" 模式 (--cvelist-file 開關(guān))
"Check security" 模式 (--checksec 開關(guān))
使用:./linux-exploit-suggester.sh
甚至它還為我們提供了加固措施:
Linux內(nèi)核利用
如今的操作系統(tǒng)大都基于“環(huán)保護(hù)模型”(ring protection mode)。該模型通常分為4層,編號從0到3,如下圖所示:
Linux操作系統(tǒng)也基于相同的機(jī)制,但只有2層:User Land?和?Kernel Land。內(nèi)存管理(Memorymanagement)是linux內(nèi)核提供的最強(qiáng)大的功能之一。
內(nèi)核利用技術(shù):
1.空指針引用
NULL指針錯誤會引發(fā)空指針NullPointerException異常。換句話說,就是編程對象引用了值為NULL的地址。
2.任意內(nèi)核讀/寫
該攻擊主要是通過將數(shù)據(jù)傳遞到Linux內(nèi)核實(shí)現(xiàn)的。
3.內(nèi)存損壞漏洞
為方便內(nèi)部的處理,內(nèi)存被劃分為了4096字節(jié)的內(nèi)存塊,并被命名為page。12個最低有效位是偏移量;其余的是頁碼。在最新的x86架構(gòu)中,Linux內(nèi)核將虛擬空間(通常為4GB)當(dāng)中的3GB給了UserLand,另外1GB用于kernel land。此操作稱為分段。該操作稱之為分段。
內(nèi)核使用頁碼來表示物理和虛擬之間的對應(yīng)關(guān)系地址。為了管理不同的內(nèi)存區(qū)域,這里使用了虛擬內(nèi)存區(qū)域(VMA):
A-內(nèi)核棧漏洞:
堆棧是一個特殊的內(nèi)存空間。這個內(nèi)存空間會自動增長。而攻擊者也正是利用了這一點(diǎn),一旦函數(shù)調(diào)用過多,就會致使調(diào)用堆棧無法容納這些調(diào)用的返回地址,導(dǎo)致數(shù)據(jù)越界,覆蓋老的堆棧數(shù)據(jù)產(chǎn)生棧溢出漏洞。
B-內(nèi)核堆漏洞:
堆用于動態(tài)內(nèi)存分配。內(nèi)核堆利用是非常危險的,因?yàn)樵诙鄶?shù)情況下,攻擊者往往不需要準(zhǔn)備任何的Linux模塊調(diào)試環(huán)境,即可實(shí)現(xiàn)堆利用。
Race Condition(競爭條件)
由于兩個或者多個進(jìn)程競爭使用不能被同時訪問的資源,使得這些進(jìn)程有可能因?yàn)闀r間上推進(jìn)的先后原因而出現(xiàn)問題,這就叫做競爭條件(Race Condition)。為了避免這個問題,linux實(shí)現(xiàn)了我們所謂的Mutex(互斥對象)。
緩沖區(qū)溢出防御技術(shù)
這里有許多已實(shí)現(xiàn)技術(shù),可以幫助你抵御緩沖區(qū)溢出攻擊,例如:
地址空間布局隨機(jī)化:?Address space layout randomization?(ASLR),是參與保護(hù)緩沖區(qū)溢出問題的一個計(jì)算機(jī)安全技術(shù)。是為了防止攻擊者在內(nèi)存中能夠可靠地對跳轉(zhuǎn)到特定利用函數(shù)。ASLR包括隨機(jī)排列程序的關(guān)鍵數(shù)據(jù)區(qū)域的位置,包括可執(zhí)行的部分、堆、棧及共享庫的位置。
stack canary
stack canary防護(hù)技術(shù)主要用于防止stack overflow(堆棧溢出)。如果能在運(yùn)行時檢測出stack overflow破壞,就有可能對函數(shù)棧進(jìn)行保護(hù)。目前的堆棧保護(hù)實(shí)現(xiàn)大多使用基于 “Canaries” 的探測技術(shù)來完成對這種破壞的檢測。
Non-executable stack
不可執(zhí)行堆棧(NX)是一種虛擬內(nèi)存保護(hù)機(jī)制,通過限制特定內(nèi)存和實(shí)現(xiàn)NX位來阻止shell代碼注入在堆棧上執(zhí)行。
Linux 返回導(dǎo)向編程(ROP)
返回導(dǎo)向編程(ROP)是一種高級的內(nèi)存攻擊技術(shù),簡單的來說它的特點(diǎn)就是通過控制返回指針來使程序?qū)蛐碌目刂屏?#xff0c;利用場景包括使用ROP來繞過DEP、ASLR這樣的防御機(jī)制。
Linux安全加固
以下是我對你的一些Linux安全加固建議:
定期更新Linux內(nèi)核和應(yīng)用程序。
避免使用像FTP和telnet這類的不安全服務(wù),建議使用SFTP和OpenSSH。
僅使用必要的應(yīng)用和服務(wù),最大化的減小攻擊面。
如果條件允許,建議使用SELinux。
使用強(qiáng)密碼策略。
關(guān)注faillog記錄。
強(qiáng)化/etc/sysctl.conf配置。
使用身份驗(yàn)證服務(wù)器。
總結(jié)
本文主要向大家概述了一些基礎(chǔ)的有關(guān)Linux系統(tǒng)命令和術(shù)語,并深入探討了Linux安全方面的問題以及利用與防御技術(shù)。希望通過本文的學(xué)習(xí),能讓你對Linux有一個更加深入的了解。
相關(guān)參考文獻(xiàn)
1.高級基礎(chǔ)設(shè)施滲透測試 - Packt Publishing:Chiheb chebbi
*參考來源:peerlyst,FB小編 secist 編譯,轉(zhuǎn)載請注明來自FreeBuf.COM
總結(jié)
以上是生活随笔為你收集整理的linux 渗透 系统,初识Linux渗透:从枚举到内核利用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 准备考试?python也能帮你划重点,上
- 下一篇: linux内核不能识别u盘分区,一种在L