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