玄機-第一章 應急響應-Linux日誌分析

竹等寒發表於2024-07-16

目錄
  • 前言
  • 簡介
  • 應急開始
    • 準備工作
      • 檢視auth.log檔案
      • grep -a
    • 步驟 1
    • 步驟 2
    • 步驟 3
    • 步驟 4
    • 步驟 5
  • 總結

前言

又花了一塊rmb玩玄機。。。啥時候才能5金幣拿下一個應急靶機,只能說功底還沒到家,唯有繼續加油了。。。

簡介

賬號root密碼linuxrz
ssh root@IP
1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割
2.ssh爆破成功登陸的IP是多少,如果有多個使用","分割
3.爆破使用者名稱字典是什麼?如果有多個使用","分割
4.登陸成功的IP共爆破了多少次
5.駭客登陸主機後新建了一個後門使用者,使用者名稱是多少

應急開始

準備工作

下面我遇到比較多的且比較重要的都加深顏色了,其實都很重要,只是作者還沒碰到過。

日誌檔案 說明
/var/log/cron 記錄了系統定時任務相關的日誌
/var/log/cups 記錄列印資訊的日誌
/var/log/dmesg 記錄了系統在開機時核心自檢的資訊,也可以使用dmesg命令直接檢視核心自檢資訊
/var/log/mailog 記錄郵件資訊
/var/log/message 記錄系統重要資訊的日誌。這個日誌檔案中會記錄Linux系統的絕大多數重要資訊,如果系統出現問題時,首先要檢查的就應該是這個日誌檔案
/var/log/btmp 記錄錯誤登入日誌,這個檔案是二進位制檔案,不能直接vi檢視,而要使用lastb命令檢視
/var/log/lastlog 記錄系統中所有使用者最後一次登入時間的日誌,這個檔案是二進位制檔案,不能直接vi,而要使用lastlog命令檢視
/var/log/wtmp 永久記錄所有使用者的登入、登出資訊,同時記錄系統的啟動、重啟、關機事件。同樣這個檔案也是一個二進位制檔案,不能直接vi,而需要使用last命令來檢視
/var/log/utmp 記錄當前已經登入的使用者資訊,這個檔案會隨著使用者的登入和登出不斷變化,只記錄當前登入使用者的資訊。同樣這個檔案不能直接vi,而要使用w,who,users等命令來查詢
/var/log/secure 記錄驗證和授權方面的資訊,只要涉及賬號和密碼的程式都會記錄,比如SSH登入,su切換使用者,sudo授權,甚至新增使用者和修改使用者密碼都會記錄在這個日誌檔案中
/var/log/auth.log 註明:這個有的Linux系統有,有的Linux系統沒有,一般都是/var/log/secure檔案來記錄居多

檢視auth.log檔案

這裡著重瞭解一下auth.log,因為這個檔案給我坑了。。。


  • auth.log檔案在本題目中儲存了:
    登入成功和失敗的資訊,即認證過程,還有登入成功後系統賬戶的活動動作,比如新增使用者等等(總之這一個檔案就包含了我們整個做題的過程)

  • auth.log 檔案主要儲存與系統認證和授權相關的日誌資訊。具體內容包括但不限於以下幾類資訊:

    • 1:登入和登出活動:
      成功和失敗的登入嘗試
      使用者登出事件

    • 2:認證過程:
      SSH 登入嘗試(成功和失敗)
      本地控制檯登入
      Sudo 提權事件(成功和失敗)

    • 3:安全事件:
      無效的登入嘗試
      錯誤的密碼輸入
      鎖定和解鎖螢幕事件

    • 4:系統賬戶活動:
      使用者新增、刪除和修改
      組新增、刪除和修改

    • 5:PAM(Pluggable Authentication Modules)相關資訊:
      各種 PAM 模組的日誌輸出,包括認證和會話管理

grep -a

注意,這個也把我坑了!!!
選項通常是為了處理可能包含二進位制資料的檔案,將它們視為文字檔案進行處理,那麼也就是說如果你直接cat 該檔案沒問題,但是你需要對cat出來的檔案內容進行處理的話就會報二進位制錯誤,那麼也就是說該檔案中存在二進位制資料的。
為什麼會存在二進位制資料??可能就是為了坑你,而且我也學到了使用-a這個引數能夠避免二進位制檢視報錯。

步驟 1

1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割 小到大排序 例如flag{192.168.200.1,192.168.200.2}

剛剛已經講過我被檔案坑了,想必如果在不知道auth.log是日誌檔案的情況下,大家應該會去找 /var/log/secure 這個檔案吧。。。
ok ,我們現在明確了ssh爆破的日誌記錄都在auth.log中 (他這裡又一個auth.log.1,檢視了一下估計就是備份檔案了,那我們這裡就是用備份檔案
命令: cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort -n | uniq -c'

  • 解釋:
    grep -a "Failed password for root"是過濾出來登入失敗的記錄
    awk '{print $11}'是將失敗每條記錄中的ip提取出來(這裡就是經驗多了就知道,或者你自己慢慢除錯,看是第幾列就列印第幾列)
    sort -n是將ip進行排序,-n其實你加不加無所謂,反正你除錯對了就行,我這個就是加-n就能從小到大排序。
    uniq -c就是去重且列印重複次數

  • flag為:
    flag{192.168.200.2,192.168.200.31,192.168.200.32}
    在這裡插入圖片描述

步驟 2

2.ssh爆破成功登陸的IP是多少,如果有多個使用","分割

命令: grep -a "Accepted " /var/log/auth.log.1 | awk '{print $11}' | uniq -c

  • 解釋
    grep -a "Accepted "就是過濾登入成功的記錄
    awk '{print $11}' 獲取登入ip
    uniq -c 去重

  • flag為:
    flag{192.168.200.2}
    在這裡插入圖片描述

步驟 3

3.爆破使用者名稱字典是什麼?如果有多個使用","分割

  • 錯誤示範:
    這裡本人僅僅列印了第九列,這裡其實是不對的,因為無效使用者名稱會導致他出現invalid user xxxx,其實xxxx才是我們要的使用者名稱,所以我下面這種方式就沒有不同的使用者名稱都列出來。
    在這裡插入圖片描述

  • 正確方式:
    這裡用到了perl語言,我還沒搞懂就不解釋了,原理肯定是我想的那樣,就是涉及到知識盲區了而已。
    命令: cat /var/log/auth.log.1 | grep -a "Failed password" |perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

  • flag為:
    flag{root,user,hello,test3,test2,test1}
    在這裡插入圖片描述

步驟 4

4.成功登入 root 使用者的 ip 一共爆破了多少次

  • 我們已知成功登入root的ip地址是:flag{192.168.200.2}
    命令: grep -a "192.168.200.2" /var/log/auth.log.1 | grep -a 'Failed password root' | awk '{print $11}' | uniq -c

  • flag為:
    flag{4}
    在這裡插入圖片描述

步驟 5

5.駭客登陸主機後新建了一個後門使用者,使用者名稱是多少

由於我們現在已經知道了auth.log檔案能夠記錄系統賬戶活動,那我們直接grep該檔案即可,新增使用者的命令是net user

  • 篩選 net user命令即可
    命令: grep -a 'net user' /var/log/auth.log.1

  • flag為:
    flag{test2}
    在這裡插入圖片描述

總結


成果:
flag{192.168.200.2,192.168.200.31,192.168.200.32}
flag{192.168.200.2}
flag{root,user,hello,test3,test2,test1}
flag{4}
flag{test2}


透過這日誌分析題,瞭解到了日誌檔案其實還有一個auth.log的檔案日誌,不僅僅能夠記錄認證過程,還能知道系統賬戶執行了哪些賬戶操作,還有其他記錄型別。
需要注意的是,該檔案可能包含一些二進位制內容,所以我們grep的時候需要用-a引數進行過濾操作,否則會報錯。
總體體驗還是挺好的,第二次因為grep報錯原因浪費掉了好多時間,差幾分鐘就要重開第三次,玩的就是心跳啊。。。

相關文章