歡迎您光臨本站 註冊首頁

Linux入侵檢查實用指令

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  1

  可以得出filename正在運行的進程

  #pidof filename

  2

  可以通過文件或者tcp udp協議看到進程

  #fuser -n tcp port

  3

  可以看文件修改時間,大小等信息

  #stat filename

  4

  看載入模塊

  #lsmod

  5

  看rpc服務開放

  #rpcinfo -p

  6

  看網卡是否混雜模式(promiscuous mod)

  #dmesg|grep eth0

  7

  看命令是否被更改,象md5sum一樣

  #rpm -Vf /bin/ls

  rpm -Vf /bin/ps正常無輸出,否則輸出SM5....T /bin/su之類提示

  如果rpm的資料庫被修改則不可靠了,只能通過網路或則cdrom中的rpm資料庫來比較

  如:rpm -Vvp ftp://mirror.site/dir/RedHat/RPMS/fileutils-3.16-10.i386.rpm

  以下常用命令需要檢查

  /usr/bin/chfn

  usr/bin/chsh

  /bin/login

  /bin/ls

  /usr/bin/passwd

  /bin/ps

  /usr/bin/top

  /usr/sbin/in.rshd

  /bin/netstat

  /sbin/ifconfig

  /usr/sbin/syslogd

  /usr/sbin/inetd

  /usr/sbin/tcpd

  /usr/bin/killall

  /sbin/pidof

  /usr/bin/find

  8

  如果檢查的是已經確認被黑客攻擊的機器,完美建議:

  1.dd一個備份硬碟上

  2.mount 一個光碟機,上面有靜態編譯好的程序ls ps netstat等常用工具

  3.用nc把執行步驟輸出到遠程機器上

  9

  用md5sum保存一個全局的文件

  find /sbin -type f|xargs md5sum >1st

  檢查是否改變

  md5sum -c 1st|grep OK

  10

  避免在已經攻擊的機器上過多寫操作,可以:

  1.在另一個機器192.168.20.191上運行

  nc -L -p 1234 >some_audit_output.log 注意L是大寫,可以永久偵聽

  2.被攻擊機器上運行

  command|nc 192.168.20.191 1234

  或

  script >/mnt/export.log

  檢測完畢後用ctrl+d保存記錄

  11

  通過進程查找可疑程序方法:

  1.netstat -anp 這步主要靠經驗,把可疑的都記錄下來

  2.進入內存目錄 cd /proc/3299

  3. ls -la,一般exe可以看到執行文件路徑,

  4.再進入fd目錄查看文件句柄,至此一般都可以找出執行程序

  5.ps -awx 把剛才可疑的進程觀察一遍

  12

  如果hacker把日誌刪除了:

  1.查找所有未被刪除徹底的日誌,比如history,sniffer日誌

  2./proc/pid/fd 目錄里提示已經刪除的文件

  l-wx------ 1 root root 64 Aug 10 20:54 15 -> /var/log/httpd/error_log (deleted)

  l-wx------ 1 root root 64 Aug 10 20:54 18 -> /var/log/httpd/ssl_engine_log (deleted)

  l-wx------ 1 root root 64 Aug 10 20:54 19 -> /var/log/httpd/ssl_mutex.800 (deleted)

  l-wx------ 1 root root 64 Aug 10 20:54 20 -> /var/log/httpd/access_log (deleted)

  l-wx------ 1 root root 64 Aug 10 20:54 21 -> /var/log/httpd/access_log (deleted)

  l-wx------ 1 root root 64 Aug 10 20:54 22 -> /var/log/httpd/ssl_request_log (deleted)

  l-wx------ 1 root root 64 Aug 10 20:54 23 -> /var/log/httpd/ssl_mutex.800 (deleted)

  lrwx------ 1 root root 64 Aug 10 20:54 3 -> /var/run/httpd.mm.800.sem (deleted)

  lrwx------ 1 root root 64 Aug 10 20:54 4 -> /var/log/httpd/ssl_scache.sem (deleted)

3.用靜態編譯的lsof |grep deleted查看哪些被刪除

  COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

  gpm 1650 root 1u REG 8,2 5 149743 /var/run/gpm208raa (deleted)

  4.得到文件inode號,這裡是149743

  5.使用sleuthkit工具來恢復,

  df /var得出硬碟位置是sda1

  icat /dev/sda1 149743

  6.把恢復的文件仔細查看,一般都可以找到痕迹了

  這樣會使分析編譯后的程序困難

  gcc -04 -evil.c -o evil

  strip ./evil

  1.file查看文件類型,是否靜態編譯、是否strip過

  2.strings顯示程序中的asicc字元串,通過字元串再到google上找

  3.strace是跟蹤系統調用(這個還不知道怎麼樣用)strace -p pid

  4.gdb(更不會用啦)

  13

  有些進程不在進程里顯示,但在/proc中有痕迹,可比較找出隱藏的進程

  proc是偽文件系統,為/dev/kmem提供一個結構化的介面,便於系統診斷並查看每一個正在運行的可執行文件的環境

  #ps -ef|awk '{print $2}'|sort -n|uniq >1

  #ls /porc |sort -n|uniq >2

  #diff 1 2

  14

  應急工具tct,裡面有許多使用工具,包括icat等數據恢復

  如果在被攻擊的機器取證,可以mount一塊硬碟,也可以備份到網路中,方法:

  a.在網路機器運行 nc -L -p 1234 >abc.img

  b.肉雞運行 dd if=/dev/hdb5 count 20000 bs=1024|nc 192.168.0.1 1234 -w 3

  如果備份過大,則可以偵聽多個埠,執行多個dd拷貝,然後把文件合併 cat 2 >>1.img

  15

  ldd可以顯示一個可執行程序所依賴的動態庫,但間接依賴庫無法顯示出來

  [root@rh9bk root]# ldd /bin/ls

  libtermcap.so.2 => /lib/libtermcap.so.2 (0x40022000)

  libc.so.6 => /lib/tls/libc.so.6 (0x42000000)

  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

  strace工具是一個調試工具,它可以顯示出一個程序在執行過程中的所有系統調用,

  [root@rh9bk root]# strace -eopen /bin/ls >/dev/null

  open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)

  open("/etc/ld.so.cache", O_RDONLY) = 3

  open("/lib/libtermcap.so.2", O_RDONLY) = 3

  open("/lib/tls/libc.so.6", O_RDONLY) = 3

  open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3

  open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3

  open("/etc/mtab", O_RDONLY) = 3

  open("/proc/meminfo", O_RDONLY) = 3

  strace -o out telnet 192.168.100.100

  o參數的含義是將strace的輸出信息生成到out文件中,這個文件名是可以隨意制定的。

  我們打開out文件會發現大量的系統調用信息,我們關心的主要是open這個系統調用的信息,open是用來打開文件的,不僅調用動態庫要先用open打開,讀取配置文件也使用open,所以用sed寫一個簡單的腳本就可以輸出out文件中所有的open信息

  sed -n -e ‘/^open/p’ out

  輸出信息如下:

  open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)

  open("/etc/ld.so.cache", O_RDONLY) = 3

  open("/lib/libutil.so.1", O_RDONLY) = 3

  open("/usr/lib/libncurses.so.5", O_RDONLY) = 3

  open("/lib/i686/libc.so.6", O_RDONLY) = 3

  open("/etc/resolv.conf", O_RDONLY) = 3

  open("/etc/nsswitch.conf", O_RDONLY) = 3

  open("/etc/ld.so.cache", O_RDONLY) = 3

  open("/lib/libnss_files.so.2", O_RDONLY) = 3

  open("/etc/services", O_RDONLY) = 3

  open("/etc/host.conf", O_RDONLY) = 3

  open("/etc/hosts", O_RDONLY) = 3

  open("/etc/ld.so.cache", O_RDONLY) = 3

  open("/lib/libnss_nisplus.so.2", O_RDONLY) = 3

  open("/lib/libnsl.so.1", O_RDONLY) = 3

  open("/var/nis/NIS_COLD_START", O_RDONLY) = -1 ENOENT (No such file or directory)

  open("/etc/ld.so.cache", O_RDONLY) = 3

  open("/lib/libnss_dns.so.2", O_RDONLY) = 3

  open("/lib/libresolv.so.2", O_RDONLY) = 3

  open("/etc/services", O_RDONLY) = 3

  open("/root/.telnetrc", O_RDONLY) = -1 ENOENT (No such file or directory)

  open("/usr/share/terminfo/l/linux", O_RDONLY) = 4

  從輸出中可以發現ldd顯示不出來的幾個庫

  /lib/libnss_dns.so.2 ,

  /lib/libresolv.so.2 ,

  /lib/libnsl.so.1,

  /lib/libnss_nisplus.so.2,

  /lib/libnss_files.so.2

  strace -o aa -ff -p PID會產生aa名稱開頭的多個文件

  grep open aa* | grep -v -e No -e null -e denied| grep WR 查看其打開調用的文件信息。

  16

  要把日誌發送到日誌主機步驟:

  a.vi /etc/syslog.conf *.* @192.168.20.163 把所有日誌發送到192.168.20.163

  b.service syslog restart

  c.在192.168.20.163安裝kiwisyslogd

  d.遠程登陸,故意輸入錯誤密碼,可看到日誌主機上馬上有報警,也可以tcpdump port 514觀察

  17

  如果知道黑客是0927入侵的,則:

  touch -t 09270000 /tmp/a

  find / \( -newer /tmp/a -o -cnewer /tmp/a \) -l

  這樣那天改變和創建的文件被列出

  18

  整盤複製

  dd if=/dev/sda of=/dev/sdb bs=1024

  分區複製 測試過

  dd if=/dev/sda1 of=/abc bs=1024 這裡是保存在了根分區,用mount查看是sda2

  啟動另一個linux

  輸入:mount /dev/sda2 /mnt

  這裡可以看到剛才的abc文件,輸入:mount aa /tmp -o loop

  這裡看到就是剛才鏡像的文件內容

  19 find

  查找指定字元的文件(測試發現二進位也可以發現,是strings后的內容)

  find /tmp -type f -exec grep "no exist" {} \; -print

  find /etc/rc.d -name '*crond' -exec file {} ;

  查找/etc/rc.d目錄下面所有以crond結束的文件,並使用file指令查看其屬性,注意:exec和file間是一個空格,file和{}間是一個空格,file和;之間是一個空格,;是一個整體。

  20

  kill -SIGSEGV 進程號 會產生一個core文件,用strings可以看信息,用一個c程序可以重新構建它的可執行程序,study/unix/下保存一個文章。測試沒產生core,原因不詳



[火星人 ] Linux入侵檢查實用指令已經有513次圍觀

http://coctec.com/docs/linux/show-post-65823.html