安全審計 數據分析 capinfos xxx.pcap 產看數據包基本信息 日志分析 who /var/log/wtmp #查看登錄用戶信息 哈希校驗 sha265 文件名 md5sum 文件名 > hash.txt 然后把hash.txt與源文件放在一個文件夾 md5sum -c hash.txt #將hash.txt中的hash值與源文件對比 常用安全命令 # 使用 uid 查找對應的程序 :find / uid 0 perm 4000 # 查找哪里擁有寫權限 :find / perm o=w # 查找名稱中包含點和空格的文件 find / name " " print find / name ".." print find / name ". " print find / name " " print # 查找不屬於任何人的文件 :find / nouser # 查找未鏈接的文件 :lsof +L1 # 獲取進程打開端口的信息 :lsof i # 看看 ARP 表:arp -a # 查看所有賬戶 :getent passwd # 查看所有用戶組 :getent group # 列舉所有用戶的 crontabs # 生成隨機密碼 cat /dev/urandom| tr dc ‘azAZ09_!@#$%^&*()_+{}|:<>?=’|fold w 12| head n 4 # 使文件不可修改 :chattr +i filename # 查找所有不可修改的文件:find . | xargs I file lsattr a file 2>/dev/null | grep ‘^....i’ 禁止以root管理員進行ssh遠程登錄 #vi /etc/ssh/sshd_config 修改:PermitRootLogin yes 為:PermitRootLogin no #service sshd restart //重啟sshd服務 Linux禁止非WHEEL用戶使用SU命令 一般用戶通過執行“su -”命令、輸入正確的root密碼,可以登錄為root用戶 為了加強安全性,建立一個管理員的組,只允許這個組的用戶來執行“su -”命令登錄為root用戶,在UNIX和Linux下,這個組的名稱通常為“wheel” 步驟: # usermod -G wheel dongee 將一般用戶 dongee 加在管理員組wheel組中 #vi /etc/pam.d/su #auth required /lib/security/$ISA/pam_wheel.so use_uid ← 找到此行,去掉行首的“#” # echo “SU_WHEEL_ONLY yes” >> /etc/login.defs 代碼審計 檢查匹配到元數據字符串和頭部信息: strings 文件名 查看文件基本信息: file 文件名 查看文件頭基本信息: head 文件名 strings filename 輸出ASCII碼字符串 strings -n 長度 filename | sort -u | less # -n參數匹配最小長度 xxd 文件名 #把文件轉換成十六進制(可在vim下使用 :%!xxd) 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. Vim閱讀和編輯這些文本后使用 :%!xxd -r 命令把它轉換回來 :%!xxd -g 1 切換到十六進制模式顯示 只有十六進制部分的修改才會被采用。右邊可顯示文本部分的修改忽略不計。 如果需要專門的命令行十六進制編輯器,可以試一下hexedit。 圖形界面的十六進制編輯器可以使用ghex2,bless 瀏覽十六進制文件可以用hexdump -C <file> upx -d 文件名 #upx脫殼 匯編/反匯編: objdump --disassemble(-d) filename > HuiBian.txt #生成匯編指令 objdump -a filename #查看 libevent.a 中包含哪些 .o 文件(權限+格式) nasm -f elf hello.asm #生成匯編代碼 ld -s -o hello hello.o #調用鏈接器生成可執行程序 ./hello #執行程序 NASM 命令 注:NASM 全稱 The Netwide Assembler,是一款基於80×86和x8664平台的匯編語言編譯程序,其設計初衷是為了實現編譯器程序跨平台和模塊化的特性。 nasm f bin o payload .bin payload .asm nasm f elf payload .asm; ld o payload payload .o; objdump d payload 編譯 Assemble 代碼 $ nasm f elf32 simple32.asm o simple32.o $ ld m elf_i386 simple32.o simple32 $ nasm f elf64 simple.asm o simple.o $ ld simple.o o simple 編譯過程 預編譯(處理)(Prepressing):生成.i文件 處理#開頭的文件包含及預編譯指令,展開宏定義,刪注釋,添行號,保留#pragma編譯器指令 編譯(Compilation):詞法,語法,語義分析及優化 匯編(Assembly):將匯編代碼轉換成機器可執行的指令 鏈接(Linking): 把目標文件和庫文件鏈接成可執行文件 預編譯:gcc -E hello.c -o hello.i 或者 cpp hello.c > hello.i 編譯:gcc -S hello.i -o hello.s 或者 gcc -S hello.c -o hello.s 匯編:as hello.s -o hello.o 或者 gcc -c hello.s(hello.c) -o hello.o 鏈接:ld -o hello hello.c gcc編譯並調試程序hello.c: gcc -ggdb -mpreferred-stack-boundary=2 -fno-stack-protector -o hello hello.c -ggdb : 生成額外的調試信息,使用gdb時比較有用 -mpreferred-stack-boundary=2 : 使用DWORD大小的棧編譯程序,簡化調試過程 -fno-stack-protector : 禁用棧保護 -z execstack : 啟用可執行棧(gcc4.1默認禁用) gcc -static -o hello hello.c gdb調試生成反匯編代碼: (gdb)disass _文件名 # 設置斷點: b 函數名(不加括號) #開始運行:(gdb)r gdb -q hello (gdb) set disassembly-flavor <intel/att> #在Intel(NASM)和AT&T格式中切換 (gdb) disassemble 函數名 #反匯編指定函數 APK逆向 classes.dex:包含在Android系統的Dalvik虛擬機中執行的程序代碼 apktool d 輸出文件夾名 test_apk dex2jar -v classes.dex #把dex文件轉換為jar文件 unzip classes-dex2jar.jar -d java_class