安全审计 数据分析 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