<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    攻防演練之藍隊視角下的Linux信息收集

    VSole2021-10-07 06:12:03

    日志

    Linux系統的日志功能非常強大且完善,幾乎可以保存所有的操作記錄,藍隊的信息收集主要就是針對日志的信息收集,先從系統自身的日志來說起。

    系統上跑了很多程序,那么每個程序都會有相應的日志產生,而這些日志就被記錄到這個目錄下,具體在 /var/log 目錄下

    /var/log 下存放著各種程序的 Log 文件,特別是 login (/var/log/wtmp log 所有到系統的登錄和注銷) 和 syslog (/var/log/messages 里存儲所有核心和系統程序信息. /var/log 里的文件經常不確定地增長,應該定期清除.

    還有其中幾個比較常用的日志文件:

    ?/var/log/dmesg : 核心啟動日志,系統啟動時會在屏幕顯示與硬件有關的信息,這些信息會保存在這個文件里面.?/var/log/spooler : UUCP 和 news 設備相關的日志信息?/var/log/cron : 與定時任務相關的日志信息

    ?/var/log/btmp : 記錄錯誤登錄日志,這個文件是二進制文件,可以使用 lastb 命令查看?/var/log/boot : 系統引導日志?/var/log/lastlog : 記錄系統中所有用戶最后一次登錄時間的日志,這個文件是二進制文件,可以使用 lastlog 命令查看?/var/log/mailog : 記錄郵件信息

    內核及系統日志

    內核為2.6.18時候使用的是 syslog 服務
    注: 內核為2.6.32以后 syslog 被命名為 rsyslog,所以配置文件名稱也不一樣

    這種日志由 syslog 統一管理,根據其主配置文件 /etc/syslog.conf 中的設置決定將內核消息及各種系統程序消息記錄到什么位置。用戶日志:這種日志數據用于記錄 Linux 系統用戶登錄及退出系統的相關信息,包括用戶名、登錄的終端、登錄時間、來源主機、正在使用的進程操作等。程序日志:有些應用程序運會選擇自己來獨立管理一份日志文件(而不是交給 syslog 服務管理),用于記錄本程序運行過程中的各種事件信息。由于這些程序只負責管理自己的日志文件,因此不同的程序所使用的日志記錄格式可能會存在極大差異。

    通過查看 /etc/rsyslog.conf ,可查看相關系統日志配置情況。

    message 日志,一般內核及大多數系統消息都被記錄到公共日志文件 /var/log/messages 中,而其他一些程序消息被記錄到不同的文件中,日志消息還能夠記錄到特定的存儲設備中,或者直接向用戶發送。

    secure 是應急中最常用的文件,主要記錄系統存取數據的文件,如 POP3、ssh、telnet、ftp 等相關記錄,從日志中可看出系統服務是否遭受到安全威脅,從如下日志中可看到 SSH 服務一直在被破解。

    用戶日志

    wtmp 日志記錄了用戶的登錄、退出、重啟等情況,可以查看系統是否存在異常用戶登錄,判斷攻擊者是否已經登錄服務器,由于 wtmp 日志為二進制文件,所以利用用 last 命令查看,last -t 20190426120950 ,可查看這個時間之前的日志。

    lastlog 命令,用于顯示系統中所有用戶最近一次登錄信息。lastlog 文件在每次有用戶登錄時被查詢。可以使用 lastlog 命令檢查某特定用戶上次登錄的時間,并格式化輸出上次登錄日志 /var/log/lastlog 的內容。它根據 UID 排序顯示登錄名、端口號(tty)和上次登錄時間。如果一個用戶從未登錄過,lastlog 顯示 Never logged。注意需要以 root 身份運行該命令。

    所以查詢登錄情況的幾個命令,本質上就是在查日志 /var/log/btmp、/var/log/lastlog、/var/log/wtmp

    last       #登錄成功記錄
    lastb      #登錄失敗記錄
    lastlog    #最后一次登錄
    

    日志分析技巧

    查看嘗試暴力破解機器密碼的人

    # Debian 系的發行版sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
    # Red Hat 系的發行版sudo grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    

    查看暴力猜用戶名的人

    # Debian 系的發行版sudo grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more
    # Red Hat 系的發行版sudo grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | moregrep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nrgrep -o "Failed password" /var/log/secure|uniq -cgrep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}
    

    IP 信息

    # Debian 系的發行版grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
    # Red Hat 系的發行版grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort
    

    登錄成功

    # Debian 系的發行版grep "Accepted " /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
    # Red Hat 系的發行版grep 'Accepted' /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nrgrep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'
    

    系統

    系統完整性

    通過 rpm 自帶的 -Va 來校驗檢查所有的 rpm 軟件包,查看哪些命令是否被替換了

    rpm -Va > rpm.log
    # 如果一切均校驗正常將不會產生任何輸出,如果有不一致的地方,就會顯示出來,輸出格式是8位長字符串,每個字符都用以表示文件與RPM數據庫中一種屬性的比較結果 ,如果是. (點) 則表示測試通過。
    驗證內容中的8個信息的具體內容如下:
    - S         文件大小是否改變
    - M         文件的類型或文件的權限(rwx)是否被改變
    - 5         文件MD5校驗是否改變(可以看成文件內容是否改變)
    - D         設備中,從代碼是否改變
    - L         文件路徑是否改變
    - U         文件的屬主(所有者)是否改變
    - G         文件的屬組是否改變
    - T         文件的修改時間是否改變
    

    查看對外開放端口

    檢查異常端口

    ss -tnlp
    ss -tnlp | grep ssh
    ss -tnlp | grep ":22"
    netstat -tnlp
    netstat -tnlp | grep ssh
    

    這里推薦一個很好用的防止端口掃描腳本 https://github.com/EtherDream/anti-portscan

    防火墻

    firewall-cmd --state                    # 顯示防火墻狀態firewall-cmd --get-zones                # 列出當前有幾個 zonefirewall-cmd --get-active-zones         # 取得當前活動的 zonesfirewall-cmd --get-default-zone         # 取得默認的 zonefirewall-cmd --get-service              # 取得當前支持 servicefirewall-cmd --get-service --permanent  # 檢查下一次重載后將激活的服務
    firewall-cmd --zone=public --list-ports # 列出 zone public 端口firewall-cmd --zone=public --list-all   # 列出 zone public 當前設置
    

    用戶

    awk -F: '{if($3==0||$4==0)print $1}' /etc/passwd            # 查看 UID\GID 為0的帳號awk -F: '{if($7!="/usr/sbin/nologin")print $1}' /etc/passwd # 查看能夠登錄的帳號lastlog                                                     # 系統中所有用戶最近一次登錄信息lastb                                                       # 顯示用戶錯誤的登錄列表users                                                       # 打印當前登錄的用戶,每個用戶名對應一個登錄會話。如果一個用戶不止一個登錄會話,其用戶名顯示相同次數
    

    計劃任務和啟動項

    chkconfig                   # 查看開機啟動服務命令chkconfig --list | grep "3:啟用\|3:開\|3:on\|5:啟用\|5:開\|5:on"ls /etc/init.d              # 查看開機啟動配置文件命令cat /etc/rc.local           # 查看 rc 啟動文件ls /etc/rc.d/rc[0~6].drunlevel                    # 查看運行級別命令crontab -l                  # 計劃任務列表ls -alh /var/spool/cron     # 默認編寫的 crontab 文件會保存在 /var/spool/cron/用戶名 下ls -al /etc/ | grep cronls -al /etc/cron*cat /etc/cron*cat /etc/at.allowcat /etc/at.denycat /etc/cron.allowcat /etc/cron.denycat /etc/crontabcat /etc/anacrontabcat /var/spool/cron/crontabs/root
    

    可疑文件

    查看敏感目錄,如/tmp目錄下的文件,同時注意隱藏文件夾,以“..”為名的文件夾具有隱藏屬性,針對可疑文件查看創建修改時間。

    find / -ctime -2                # 查找72小時內新增的文件find ./ -mtime 0 -name "*.jsp"  # 查找24小時內被修改的 JSP 文件find / *.jsp -perm 4777         # 查找777的權限的文件ls -a /tmp                      # 查看臨時目錄strings /usr/sbin/sshd | egrep '[1-9]{1,3}.[1-9]{1,3}.'    # 分析 sshd 文件,是否包括IP信息
    

    后門檢查

    1.檢查 /etc/passwd 文件是否有異常2.檢測對應 vim 進程號虛擬目錄的 map 文件是否有 python 字眼.3.通過排查 shell 的配置文件或者 alias 命令即可發現,例如 ~/.bashrc 和 ~/.bash_profile 文件查看是否有惡意的 alias 問題.4.進入 /home 各帳號目錄下的 .bash_history 查看普通帳號的歷史命令5.Rootkit檢查chkrootkit或Rootkit Hunter工具進行


    分割日志工具

    目前大部分 linux 系統都會默認安裝有 logrotate,日志分割工具.而這個工具的功能就是大家在 /var/log/ 目錄下面看到的形如 messages-20181028 樣式的日志,在使用 logrotate 進行配置后就可以按照時間或者大小對日志進行分割存儲.如果對 /etc/logrotate.conf 文件和 /etc/logrotate.d/ 目錄沒有改動,可以看到 /etc/logrotate.conf 默認配置:

    vim /etc/logrotate.conf
    # 按周輪訓
    weekly
    # 保留4周日志備份
    rotate 4# 標記分割日志并創建當前日志
    create
    # 使用時間作為后綴
    dateext
    # 對 logrotate.d 目錄下面的日志種類使用
    include /etc/logrotate.d
    # 對于wtmp 和 btmp 日志處理在這里進行設置
    /var/log/wtmp {
        monthly
        create 0664 root utmp
     minsize 1M
        rotate 1
    }
    /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
    

    此外,如果你在服務器上面安裝了mysql,httpd 或者其他應用服務后,logrotate 它會自動在 /etc/logrotate.d/ 下面創建對應的日志處理方式,基本是繼承 logrotate.conf. 因此,不論是你服務器上面系統日志還是應用日志,面對日志量太大的問題,都可以使用 logrotate 進行設置處理. 當然還有 Loganalyzer 這類日志收集系統,這里由于篇幅緣故,就不細講了。


    總結

    本文模擬了常見的應急場景,通過各種技術手段,在機器上捕捉紅隊人員的痕跡,并且排查是否有后門殘留。在實際環境中,會存在各種復雜的場景,特別是針對系統上不同的應用,存在各種隱藏后門的手段,藍方人員不僅需要掌握系統、應用的加固知識還需要掌握相應的漏洞利用知識,熟悉紅隊的進攻手段,才可以做到更好的防護。

    logawk命令
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    雖然平時大部分工作都是和Java相關的開發, 但是每天都會接觸Linux系統, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現在逐漸總結一下, 以便后續查看。
    Linux比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡它的原因,比較短小但卻功能強大。
    雖然平時大部分工作都是和網絡相關, 但會接觸Linux系統, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現在逐漸總結一下, 以便后續查看。基本操作Linux 關機,重啟#?查看當前用戶環境變量。查看有幾顆cpu,每顆分別是幾核。
    HW藍隊初級面試總結
    2022-10-12 07:00:02
    一、sql注入原理、分類、繞過原理:產生sql注入漏洞主要因為沒有對接受到的參數進行過濾、驗證和處理直接拼接到了sql語句中,然后直接執行該sql語句,這樣就會導致惡意用戶傳入一些精心構造的sql代碼,與后臺sql語句拼接后形成完整的sql語句執行,達到攻擊者的目的。
    Web日志安全分析淺談
    2022-01-12 06:36:15
    attack=test';select//1//from/**/1,此時請求狀態碼為200,但是此注入攻擊并沒有得到執行,實際情況中,還會有更多情況導致產生此類的噪聲數據。拋開這類情況不談,我們來說說在一般應急響應場景中我們分析日志的常規辦法。假設我們面對的是一個相對初級的黑客,一般我們直接到服務器檢查是否存有明顯的webshell即可。
    大多數計算機系統設計為可與多個用戶一起使用。特權是指允許用戶執行的操作。普通特權包括查看和編輯文件或修改系統文件。特權升級意味著用戶獲得他們無權獲得的特權。這些特權可用于刪除文件,查看私人信息或安裝不需要的程序,例如病毒。
    一文吃透 Linux 提權
    2021-10-23 07:09:32
    特權升級意味著用戶獲得他們無權獲得的特權。通常,當系統存在允許繞過安全性的錯誤或對使用方法的設計假設存在缺陷時,通常會發生這種情況。結果是,具有比應用程序開發人員或系統管理員想要的特權更多的應用程序可以執行未經授權的操作。
    在攻防演練對抗的過程中,藍隊往往會采取反制手段來獲取紅隊的一些信息,那么在拿到一臺機器后,需要收集一些關鍵信息,所以就想到這些操作完全可以通過腳本來完成。linux下可以使用gscan,或者使用自己寫的shell腳本,windows下可以使用bat或powershell腳本。 目的很簡單,使用腳本簡化一些操作步驟,同時提示一些操作。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类