Linux應急響應(一):SSH暴力破解
0x00 前言
SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議,主要用於給遠端登入會話資料進行加密,保證資料傳輸的安全。SSH口令長度太短或者複雜度不夠,如僅包含數字,或僅包含字母等,容易被攻擊者破解,一旦被攻擊者獲取,可用來直接登入系統,控制伺服器所有許可權。
0x01 應急場景
某天,網站管理員登入伺服器進行巡檢時,發現埠連線裡存在兩條可疑的連線記錄,如下圖:
-
TCP初始化連線三次握手吧:發SYN包,然後返回SYN/ACK包,再發ACK包,連線正式建立。但是這裡有點出入,當請求者收到SYS/ACK包後,就開始建立連線了,而被請求者第三次握手結束後才建立連線。
-
客戶端TCP狀態遷移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
伺服器TCP狀態遷移:
CLOSED->LISTEN->SYN recv->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
-
當客戶端開始連線時,伺服器還處於LISTENING,客戶端發一個SYN包後,服務端接收到了客戶端的SYN並且傳送了ACK時,伺服器處於SYN_RECV狀態,然後並沒有再次收到客戶端的ACK進入ESTABLISHED狀態,一直停留在SYN_RECV狀態。
在這裡,SSH(22)埠,兩條外網IP的SYN_RECV狀態連線,直覺告訴了管理員,這裡一定有什麼異常。
0x02 日誌分析
SSH埠異常,我們首先有必要先來了解一下系統賬號情況:
A、系統賬號情況
1、除root之外,是否還有其它特權使用者(uid 為0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
root
2、可以遠端登入的帳號資訊
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
root:$6$38cKfZDjsTiUe58V$FP.UHWMObqeUQS1Z2KRj/4EEcOPi.6d1XmKHgK3j3GY9EGvwwBei7nUbbqJC./qK12HN8jFuXOfEYIKLID6hq0::0:99999:7:::
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
root
2、可以遠端登入的帳號資訊
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
root:$6$38cKfZDjsTiUe58V$FP.UHWMObqeUQS1Z2KRj/4EEcOPi.6d1XmKHgK3j3GY9EGvwwBei7nUbbqJC./qK12HN8jFuXOfEYIKLID6hq0::0:99999:7:::
我們可以確認目前系統只有一個管理使用者root。
接下來,我們想到的是/var/log/secure,這個日誌檔案記錄了驗證和授權方面的資訊,只要涉及賬號和密碼的程式都會記錄下來。
B、確認攻擊情況:
1、統計了下日誌,發現大約有126254次登入失敗的記錄,確認伺服器遭受暴力破解
[root@localhost ~]# grep -o "Failed password" /var/log/secure|uniq -c
126254 Failed password
2、輸出登入爆破的第一行和最後一行,確認爆破時間範圍:
[root@localhost ~]# grep "Failed password" /var/log/secure|head -1
Jul 8 20:14:59 localhost sshd[14323]: Failed password for invalid user qwe from 111.13.xxx.xxx port 1503 ssh2
[root@localhost ~]# grep "Failed password" /var/log/secure|tail -1
Jul 10 12:37:21 localhost sshd[2654]: Failed password for root from 111.13.xxx.xxx port 13068 ssh2
3、進一步定位有哪些IP在爆破?
[root@localhost ~]# grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c | sort -nr
12622 23.91.xxx.xxx
8942 114.104.xxx.xxx
8122 111.13.xxx.xxx
7525 123.59.xxx.xxx
...................
4、爆破使用者名稱字典都有哪些?
[root@localhost ~]# grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
9402 root
3265 invalid user oracle
1245 invalid user admin
1025 invalid user user
.....................
1、統計了下日誌,發現大約有126254次登入失敗的記錄,確認伺服器遭受暴力破解
[root@localhost ~]# grep -o "Failed password" /var/log/secure|uniq -c
126254 Failed password
2、輸出登入爆破的第一行和最後一行,確認爆破時間範圍:
[root@localhost ~]# grep "Failed password" /var/log/secure|head -1
Jul 8 20:14:59 localhost sshd[14323]: Failed password for invalid user qwe from 111.13.xxx.xxx port 1503 ssh2
[root@localhost ~]# grep "Failed password" /var/log/secure|tail -1
Jul 10 12:37:21 localhost sshd[2654]: Failed password for root from 111.13.xxx.xxx port 13068 ssh2
3、進一步定位有哪些IP在爆破?
[root@localhost ~]# grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c | sort -nr
12622 23.91.xxx.xxx
8942 114.104.xxx.xxx
8122 111.13.xxx.xxx
7525 123.59.xxx.xxx
...................
4、爆破使用者名稱字典都有哪些?
[root@localhost ~]# grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
9402 root
3265 invalid user oracle
1245 invalid user admin
1025 invalid user user
.....................
C、管理員最近登入情況:
1、登入成功的日期、使用者名稱、IP:
[root@localhost ~]# grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
Jul 9 09:38:09 root 192.168.143.100
Jul 9 14:55:51 root 192.168.143.100
Jul 10 08:54:26 root 192.168.143.100
Jul 10 16:25:59 root 192.168.143.100
............................
通過登入日誌分析,並未發現異常登入時間和登入IP。
2、順便統計一下登入成功的IP有哪些:
[root@localhost ~]# grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
27 192.168.204.1
1、登入成功的日期、使用者名稱、IP:
[root@localhost ~]# grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
Jul 9 09:38:09 root 192.168.143.100
Jul 9 14:55:51 root 192.168.143.100
Jul 10 08:54:26 root 192.168.143.100
Jul 10 16:25:59 root 192.168.143.100
............................
通過登入日誌分析,並未發現異常登入時間和登入IP。
2、順便統計一下登入成功的IP有哪些:
[root@localhost ~]# grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
27 192.168.204.1
通過日誌分析,發現攻擊者使用了大量的使用者名稱進行暴力破解,但從近段時間的系統管理員登入記錄來看,並未發現異常登入的情況,需要進一步對網站伺服器進行入侵排查,這裡就不再闡述。
0x04 處理措施
SSH暴力破解依然十分普遍,如何保護伺服器不受暴力破解攻擊,總結了幾種措施:
1、禁止向公網開放管理埠,若必須開放應限定管理IP地址並加強口令安全審計(口令長度不低於8位,由數字、大小寫字母、特殊字元等至少兩種以上組合構成)。
2、更改伺服器ssh預設埠。
3、部署入侵檢測裝置,增強安全防護。
最後
歡迎關注個人微信公眾號:Bypass--,每週原創一篇技術乾貨。
參考連結:
https://www.zhihu.com/question/33964391
http://www.freebuf.com/articles/system/11424.html
https://help.aliyun.com/knowledge_detail/37479.html?spm=a2c4g.11186623.4.1.W0eomj
相關文章
- 應急響應命令(Linux)Linux
- Linux應急響應排查Linux
- Linux應急響應小結Linux
- 應急響應- Linux入侵排查Linux
- 【應急響應】Windows應急響應入門手冊Windows
- 記一次linux伺服器入侵應急響應Linux伺服器
- 玄機-第一章 應急響應- Linux入侵排查Linux
- 應急響應靶機訓練-Linux2Linux
- 應急響應靶機訓練-Linux1Linux
- 伺服器入侵應急響應排查(Linux篇)伺服器Linux
- windows應急響應(二)Windows
- 玄機-第一章 應急響應-Linux日誌分析Linux
- 記一次安全應急響應事件事件
- 什麼是應急響應?網路安全應急響應體系的要素!
- Windows應急響應小結Windows
- 應急響應-webshell查殺Webshell
- 應急響應靶機-3
- 應急響應靶機-4
- 應急響應:日誌分析
- 5.28應急響應思路流程
- 什麼是應急響應?網路安全應急響應的物件是什麼?物件
- 為什麼需要應急響應?網路安全應急響應需要做什麼?
- Linux防止SSH暴力破解Linux
- windows伺服器應急響應Windows伺服器
- 看雪應急響應服務
- Windows應急響應-個人整理Windows
- 應急響應知識彙總
- 網路安全事件應急響應事件
- 【網路安全】組織為什麼需要應急響應?應急響應需要做什麼?
- 記一次挖礦病毒的應急響應
- 記一次挖礦病毒應急響應事件事件
- 玄機應急響應靶場集合WP
- 玄機應急響應-第二章
- 綠盟科技應急響應中心正式成立
- 玄機-第一章 應急響應-webshell查殺Webshell
- Windows應急響應-灰鴿子遠控木馬Windows
- X站釣魚郵件應急響應案例分析
- XCon安全焦點:雲原生自動化應急響應