做業課程: | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
做業要求: | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635 |
課程目標: | 學習《網絡攻防技術與實踐》教材第八章,並完成課後做業 |
本次做業實現目標: | 學習Linux操做系統安全攻防 |
進程與線程管理機制:Linux內核採用搶佔式多用戶多進程(multiprocessing) 模式,多個進程併發活動,由內核的進程管理模塊來負責調度硬件資源進行使用,進程做爲最基本的調度單元,維護--個進程控制塊(PCB) 結構,由內核schedule進程調度函數來依據進程優先級和CPU等資源狀況來選擇進程進行執行。
內存管理機制:Linux內存管理模塊(MM)容許多個進程安全地共享物理內存區域。Linux 的內存管理支持虛擬內存,在32位的i386機器上,每一個進程擁有獨立的4GB虛擬內存空間,內核的代碼與數據段被映射到3GB以上的空間,而用戶態代碼申請的虛擬內存空間爲0-3GB區間,每一個進程使用兩套段描述符來分別訪問內核態和用戶態的內存空間,在用戶態中,代碼不可能訪問3GB以上的地址空間,若是要訪間內核空間,必須經過系統調用或者中斷。內存管理模塊爲進程提供內存分配、內存回收、請求分頁和交換頁等系統調用服務。
文件系統管理機制:Linux內核使用了虛擬文件管理VFS
(Vitual File System)機制,從而使得它可以支持數十種不一樣類型的邏輯文件系統,包括ext2/ext3/ext4
、vfat
. ntfs
等,經過設備驅動程序訪間特定硬件設備(如磁盤設備),而VFS
虛擬文件管理爲用戶進程提供了一組通用的文件系統調用函數(包括open
. close
. read
. write 等),能夠對不一樣文件系統中的文件進行統一的操做。
設備控制機制:Linux內核中處理或者管理硬件控制器的軟件叫作設備驅動程序。Linux核心的設備驅動程序本質上是特權的、駐留內存的低級的硬件控制例程的共享庫。
網絡機制:Lmu內核中的網絡模塊提供了對各類網絡標準的存取和各類網絡銀件的文持。
系統調用機制:Linux內核經過上述五個方面的機制實現了操做系統基本的硬件管理與系統功能,這些內核模塊都運行在CPU的核心態,而應用程序則運行於用戶態,它們並不能直接訪問內核內存空間,也不能直接調用內核函數。Linux 提供了系統調用接口,來容許應用程序透過這層接口來訪問硬件設備和其餘系統資源,這有助於保證Linux系統的穩定可靠和安全,併爲用戶空間提供了一種統一的抽象接口,有助於應用程序的跨平臺移植。
Linux操做系統系統結構:
linux
Linux身份認證機制:Linux是一個多用戶多任務的操做系統,經過建立多種角色類型的用戶及用戶組來實施用戶身份管理,來確保多個用戶安全地使用Linux操做系統。
Linux本地登陸用戶認證機制:Linux系統最基本的用戶認證機制便是對用戶在控制檯登陸的認證過程,基本流程是:由init
進程啓動getty
產生若千個虛擬控制檯(如tyl
, tty2
等)。在控制檯上顯示登陸,當用戶敲入用戶時,getty 執行登陸(login) 進程,進入登陸認證過程,認證成功後,登陸進程會fork 相應用戶Shell的子進程,至此完成登陸過程,用戶能夠在對應的Shell下開始工做。
Linux遠程登陸用戶認證機制:目前Linux系統廣泛使用SSH服務來進行遠程用戶登陸與網絡訪問,SSH提供兩種方式的用戶身份認證機制:第一種方式爲基於口令的身份認證,使用Linux系統內建的用戶帳號和口令,就能夠登陸到遠程主機上:第二種方式爲基於非對稱密鑰的身份認證,須要用戶爲本身建立一對非對稱密鑰,並把公鑰放置到須要訪問的服務器上,在鏈接SSH服務器時,客戶端軟件就會向服務器發出請求,請求使用證書方式進行身份認證,服務器收到請求以後,就使用請求用戶的公鑰加密「質詢」並把它發給客戶端軟件,客戶端軟件收到「質詢」後就可使用私人密鑰進行解密,再發送給服務器端,完成基於非對稱密鑰的身份認證過程。基於非對稱密鑰的身份認證機制可以有效地抵禦會話劫持中間人攻擊,較基於口令的認證機制更具安全性。
Linux統一身份認證中間件PAM:,Linux 系統中提供了PAM
(Pluggable Authentcation Modules:可插入身份認證模塊)做爲一種驗證用戶身份的靈活與標準方法,經過提供一些動態連接庫和一套統一的API,可以給不一樣的應用軟件、網絡服務提供統一的身份認證機制, 將系統提供的服務和該服務的認證方式分開,使得系統管理員能夠靈活地根據須要,給不一樣的服務配置不一樣的認證方式而無須更改服務程序,同時也便於向系統中添加新的認證手段,如智能卡身份認證機制等。系統管理員經過PAM配置文件(即/etc/pam.conf
或/etc/pam.d/
)來制定身份認證策略,即指定什麼服務該採用什麼樣的認證方法:應用服務開發者經過在服務程序中使用PAM API來實現對認證方法的調用:而PAM服務模塊的開發者則利用PAM SPI ( Service Module API)來編寫認證模塊,將不一樣的認證機制(如傳統的UNIX認證方法
、Kerberos
、智能卡認證
等)加入到PAM中間件中: PAM核心庫(libpam) 則讀取配置文件,以此爲根據將服務程序和相應的認證方法聯繫起來,爲整個Linux系統的各類服務來提供身份認證服務。
Linux受權與訪問控制機制:Linux經過VFS虛擬文件系統來實現對不一樣類別文件系統格式的支持,並同時經過設備文件類型來統一集成對其餘類型系統資源的管理。
Linux安全審計機制:主要經過三個日誌子系統來實現:web
/var/log/wtmp
和/var/run/utmp
, login
等用戶登陸程序負責更新wtmp
和utmp
文件,使系統管理員可以跟蹤誰在什麼時候登陸到系統。pacct
或acct
)中寫一個紀錄。進程統計的目的是爲系統中的基本服務提供命令使用統計。syslogd (8)
執行,各類系統守護進程、用戶程序和內核經過syslog
向文件/var/log/messages
報告值得注意的事件。Linux系統攻擊流程:
針對Linux系統的攻擊也遵循着系統攻擊統一的邏輯流程: 攻擊者首先利用踩點、掃描和查點等技術手段來收集關於目標Linux系統的信息,而後攻擊者從遠程網絡發掘某個監聽網絡服務中的安全漏洞或配置弱點,來獲取本地Shell訪問權,而一旦得到Shell訪問權,攻擊者就已經在目標Linux系統上得到了立錐之地,而轉入本地攻擊的環節,一般會利用各種提權技術獲取Linux系統最高的Root用戶權限,以後就能夠根據他們的入侵意圖而隨心所欲了。算法
遠程網絡入侵Linux系統主要方法:
●對Linux系統各類網絡服務的身份認證過程所涉及的用戶口令字進行猜想攻擊,指望破解出某一服務真實有效的用戶帳戶和口令,從而假冒該用戶的身份進入系統。shell
●發掘Linux系統某個監聽網絡服務的安全漏洞並進行利用,在攻擊目標服務進程中注入攻擊負載模塊代碼進行執行,從而爲攻擊者提供本地Shell的訪問權。ubuntu
●經過網頁木馬、發送欺詐郵件、提供特洛伊木馬程序等技術和社會工程學手段,來攻擊客戶端程序和用戶,由客戶端軟件或用戶來安裝和執行惡意程序,從而主動向攻擊者打開Linux系統的大門。windows
●在Linux系統做爲鏈接多個網絡的路由器,或者打開「混雜模式」實施網絡嗅探的監聽器時,可能遭受攻擊者特地構造的數據包攻擊,從而被攻擊者取得訪問權。瀏覽器
遠程口令字猜想攻擊:
主要針對SSH
、telnet
、FTP
、HTTP
等服務的口令猜想攻擊時互聯網所面臨的攻陷系統最廣泛的攻擊模式,這些協議都是使用了Linux系統內置的用戶名和口令,同時HTTP/HTTPS
,FTP
,SNMP
等網絡服務也擁有本身的用戶帳戶體系和身份認證機制,攻擊者也能夠獲取本地訪問權。
遠程滲透攻擊:
主要經過監聽網絡服務安全漏洞,Linux的安全漏洞生命週期有一些顯著特色:黑客們主要使用一些源代碼安全審計的技術與輔助工具,又因爲其開源性,漏洞發現和補丁修復的每每更爲迅速,可是這些漏洞也可能在第一時間沒法上報。
針對網絡服務遠程滲透攻擊的安全防範措施:安全
Linux客戶端程序和用戶攻擊:Linux最經常使用的客戶端不外乎Web瀏覽器和電子郵件客戶端,通常爲Mozilla基金會
提供的Firefox
「火狐」瀏覽器和Thunderbird
「雷鳥」電子郵件客戶端。
攻擊Linux系統用戶:有些攻擊者還會經過對服務器管理員進行Google Hacking獲取管理員各方面的信息,好比發送電子郵件地址、電話、即時通訊帳號等。
Linux路由器和監聽器攻擊:在進行路由轉發或者數據包嗅探時,所遭受的特殊數據包攻擊,如以前實現路由與包過濾的netfilter/iptables
,以及用於網絡入侵檢測和防護的Snort
。
攻擊監聽器&入侵檢測器:Linux系統上用來實施監聽與入侵檢測的主流開源軟件包括Libpcap抓包庫
、tcpdump命令行程序
、Wireshark網絡監聽與協議分析軟件
、Snort入侵檢測系統
。服務器
任務:使用Metasploit
滲透測試軟件,攻擊Linux靶機上的Samba
服務usermap_script
安全漏洞,獲取目標Linux靶機的主機訪問權限。實踐步驟以下:
實驗步驟:網絡
msfconsole
. msfgui
. msfweb
之一:exploit: exploit/multi/samba/usermap_ script
滲透攻擊模塊:PAYLOAD
爲遠程Shell, ( 正向或反向鏈接都可):RHOST
, LHOST
, TARGET
等):whoami
命令來查詢當前用戶:Linux本地特權提高:
攻擊者在獲得本地受限用戶訪問權以後,最簡單的特權提取是破解Root
用戶的口令,而後執行su
或sudo
命令進行提高。早期Linux系統可使用/etc/passwd
配置文件進行用戶身份認證並將口令密文保存在該文件中,而這文件對普通用戶也是可讀的。第二種特權提高是發掘並利用su
或sudo
程序中的安全漏洞,第三種也是目前最爲流行的是對那些具備Root
特權程序中的任意代碼執行漏洞,使之打開具備Root
權限的Shell
命令行鏈接。
Linux用戶口令破解:
/etc/shadow
口令字密文文件:
以root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:14747:0:99999:7:::
爲例,其結構爲:
root
:登陸名是與/ete/passwd文件中的登陸名相-致的用戶帳號。
$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.
:口令存放的是加密後的用戶口令字,若是爲空或「!」,則對應用戶沒有口令,登陸時無須口令:若是爲「*」,則表示對應的用戶不能從終端登陸,通常應用於服務帳戶,$1表示MD5哈希算法。
14747
:最後一次修改時間表示從某個時刻起,到用戶最後一次修改口令時的天數。
0
:最小時間間隔是指兩次修改口令之間所需的最小天數。
99999
:最大時間間隔是指口令保持有效的最大天數。
7
:警告時間字段表示從系統開始警告用戶到用戶密碼正式失效之間的天數。
以及未配置的不活動時間表示用戶沒有登陸活動但帳號仍能保持有效的最大天數,以及失效時間字段給出一個絕對的天數,若是使用了這個字段,那麼就給出相應帳號的生存期。期滿後,該帳號就再也不是一個合法的帳號,也就不能再用來登陸了。
利用用戶態SUID程序漏洞進行特權提高:在Linux系統中,每一個進程都擁有真實UID
( real user ID)與有效UID
( efective user ID),真實UID
初始是運行該進程的用戶ID,而有效UID
則是指進程當前實際繼承權限的用戶ID,主要用於校驗權限時使用,好比打開文件、建立文件、修改文件、kill 別的進程,等等。在普通用戶身份運行進程的狀況下,進程的有效UID
與真實UID
是一致的,但在某些狀況下能夠被變動,從而得到更高的權限去執行一些特殊的操做。這種特殊狀況就是程序被設置了SUID特殊權限位
,一旦設置了SUID位
以後,再執行這個程序時,那麼運行進程的有效UID
就變成了該程序的全部者用戶ID
, 若是程序全部者用戶爲Root
, 那麼該進程就實際,上具有了Root
的特權權限,能夠執行一些須要Root
特權的操做,這裏更改口令的是passwd
,該命令有SUID權限
,當普通用戶使用時,會議該命令全部者Root
的身份做爲進程的有效用戶ID
進行執行,此時也就能夠將密碼寫入/etc/shadow
文件。
SUID程序的本地緩衝區溢出攻擊:全攻防技術中進行詳細講解。在本地利用時,大多數狀況下,緩衝區溢出攻擊大可能是以設置SUID權限位
且全部者用戶爲Root的程序
,從而可以在溢出以後經過向目標程序中注入攻擊者惡意構造的攻擊負載代碼,以Root用戶權限
來執行命令給出Shell
。
SUID程序的競爭條件攻擊:競爭條件漏洞一般因爲一些程序軟件並無遵循操做的原子性特性而存在,在進程操做某個信號量時,可能因爲其餘進程同時對其操做而形成不可預期的後果,比較廣泛的是被稱爲TOCTOU
(timeof-check-to-time-of-use) 的一種漏洞,即程序在檢查某一條件和使用檢查結果的時間中間存在着一些延遲,而在這個時間窗口中,攻擊者可能在另外進程中對已經經過檢查的條件進行更改,使得攻擊目標程序在使用時所操做的對象已經被變動了。
Linux系統日誌抹除:改變當前活動日誌,以防止系統管理員注意到攻擊者當前的登陸活動,在/var/log
目錄下攻擊者每每須要改動messages
. auth
. secure
. wtmp
和xferlog
等日誌文件,對於文本格式的文件,使用vi
、emacs
等文本編輯工具就能夠進行日誌清理操做,而對於記錄了用戶登陸記錄的wtmp二進制文件
,攻擊者每每會用.wzap
, 專用工具從wtmp日誌文件
中去除指定用戶的日誌項,從而進行登陸日誌清理。
Linux系統遠程控制後門程序:常見遠程控制後門程序的類型主要有特洛伊木馬化的系統程序、命令行後門工具以及圖形化後門工具。特洛伊木馬化的系統程序是始終接受攻擊者所配置的帳戶進行登陸的後門程序。命令行後門工具如Netcat
能夠開放監聽一個TCP端口
,用以監聽鏈接請求。
攻擊方使用Metasploit
滲透軟件針對Linux Metasploitable
靶機實施網絡攻擊,防護方則在Metasploitatble
.上使用tepdump
或Wireshark
或Snort
工具捕獲攻擊流,並分析出攻擊者利用了哪一個安全漏洞進行攻擊,從官方網站上下載該安全漏洞補丁進行系統修補,雙方合做給出攻防過程報告。
●攻擊方:使用Metasploit
, 選擇Metasploitable
靶機中發現的漏洞進行滲透攻擊,得到遠程控制權,並嘗試進一步得到Root權限
。
●防守方:使用tcpdump/wireshark/snort
監聽得到網絡攻擊的數據包文件,並結合wireshark/snort分析攻擊過程,獲取攻擊者IP地址、目標IP和端口、攻擊發起時間、攻擊利用漏洞、使用Shellcode,以及成功以後在本地執行命令輸入等信息。
●團隊合做完成滲透攻擊與分析實驗報告。
4.該漏洞標號爲CVE-2010-2075
,該漏洞利用遠程IRC服務器是UnrealIRCD的版本,帶有後門,分佈於某些鏡面站點的UnrealIRCd,在DEBUG3_DOLOG_SYSTEM宏中包含外部引入的修改(特洛伊木馬),遠程攻擊者可執行任意命令。
5.shellcode
本次學習內容主要爲Linux操做系統的操做系統安全攻防,和以前windows操做系統的攻防實踐比較相似,感受對於漏洞檢測和嗅探的技術還掌握的不夠。