Linux***檢查實用指令 --轉

倒騰了半天,在網上找到一個以爲不錯的資料,分享,不過不知出處,做者莫怪
----------------------------------------------------------------------------------------
Linux***檢查實用指令

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,緣由不詳。node

相關文章
相關標籤/搜索