Linux的常用工具有哪些

2023-10-18 1074阅读

本篇内容主要讲解“Linux的常用工具有哪些”,感兴趣的朋友不妨来看看。下面就让小编来带大家学习“Linux的常用工具有哪些”吧!它可以解析、融合、过滤和导出数据2安装安装有两种方法,通过github和PyPIgithub需要:python, python-setuptoolswget https://github.com/dogoncouch/logdissect/archive/v3.1.1.tar.gztar -xzf v3.1.1.tar.gzcd logdissect-3.1.1sudo make all注:笔者在测试时,发现当电脑只存在python2时,需要将logdissect/Makefile文件中以下关于python3的几行注释掉,才能正常安装,否则会报错 PyPI需要:pipsudo pip install logdissect3选项介绍用法:logdissect.py[-h][–dhostDHOST][–grepPATTERN][–lastLAST][–processPROCESS][–protocolPROTOCOL][–rangeRANGE] [–utc][–rdhostDHOST][–rgrepPATTERN][–rprocessPROCESS][–rprotocolPROTOCOL][–rshostSHOST][–rsourceSOURCE] [–shostSHOST][–sourceSOURCE][–linejsonLINEJSON][–outlogOUTLOG][–labelLABEL][–sojsonSOJSON][–pretty][–version] [–verbose] [-s] [–list-parsers][-p PARSER][-z] [-tTZONE][file[file…下载链接:https://security.tencent.com/index.php/opensource/down/162安装方法unzipprocess_list.zipcdprocess_listmakemakeinstall使用效果: 03网络分析工具1TcpdumpTcpdump作为Linux下一款经典的抓包工具有必要进行讲解。

本篇内容主要讲解“Linux的常用工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的常用工具有哪些”吧!01日志工具1logdissectlogdissect用于分析日志文件和其他数据的 CLI 实用程序和 Python API。它可以解析、融合、过滤和导出数据(日志文件或json格式)2安装安装有两种方法,通过github和PyPIgithub需要:python, python-setuptools(and/or python3, python3-setuptools)wget https://github.com/dogoncouch/logdissect/archive/v3.1.1.tar.gztar -xzf v3.1.1.tar.gzcd logdissect-3.1.1sudo make all注:笔者在测试时,发现当电脑只存在python2时,需要将logdissect/Makefile文件中以下关于python3的几行注释掉,才能正常安装,否则会报错

PyPI需要:pipsudo pip install logdissect3选项介绍用法:logdissect.py[-h][–dhostDHOST][–grepPATTERN][–lastLAST][–processPROCESS][–protocolPROTOCOL][–rangeRANGE] [–utc][–rdhostDHOST][–rgrepPATTERN][–rprocessPROCESS][–rprotocolPROTOCOL][–rshostSHOST][–rsourceSOURCE] [–shostSHOST][–sourceSOURCE][–linejsonLINEJSON][–outlogOUTLOG][–labelLABEL][–sojsonSOJSON][–pretty][–version] [–verbose] [-s] [–list-parsers][-p PARSER][-z] [-tTZONE][file[file…]]位置参数:file 指定输入文件选项参数:-h,–help查看帮助信息–version查看程序版本号–verbose设置详细的终端输出-s静默输出–list-parsers查看可用的解析器-pPARSER选择解析器(default:syslog)-z,–unzip 包含gzip压缩文件-tTZONE指定UTC时区偏移量(例如’+0500′)过滤选项:–grep PATTERN 匹配目的主机–grep PATTERN 匹配模式–lastLAST 匹配前一个时间段(例如5m/3h/2d/etc)–processPROCESS 匹配源进程–protocolPROTOCOL匹配协议–rangeRANGE匹配事件范围(YYYYMMDDhhmm-YYYYMMDDhhmm)(年月日时分)–utc使用UTC进行范围匹配–rdhostDHOST过滤掉目标主机–rgrepPATTERN过滤掉模式–rprocessPROCESS过滤掉源进程–rprotocolPROTOCOL过滤掉协议–rshostSHOST过滤掉源主机–rsourceSOURCE过滤掉日志源–shostSHOST匹配源主机–sourceSOURCE匹配日志源输出选项:–linejson LINEJSON 设置逐行JSON输出的输出文件–outlogOUTLOG设置标准日志输出的输出文件–labelLABEL设置输出日志的标签类型(fname|fpath)–sojsonSOJSON设置单个对象JSON输出的输出文件–pretty 对sojson输出美化格式4解析器–list-parsers输出==== 可用解析模块: ====ciscoios:思科ios解析模块emerge:gentooemerge日志解析模块linejson:logdissect每行对象JSON解析模块sojson:logdissect单个对象JSON解析模块syslog: syslog (标准时间戳)解析模块syslogiso:syslog(ISO时间戳)解析模块syslognohost:syslog(没有主机的标准时间戳)解析模块tcpdump:tcpdump终端输出解析模块webaccess:web访问日志解析模块windowsrsyslog:windowsrsyslog代理日志解析模块5简单用法查看过去一小时的登录日志:logdissect –last 1h secure

查看过去30分钟systemd和cron进程的日志:logdissect –last 30m –process systemd –process CRON messages

结合详细查看指定时间范围的messages和dmesg日志logdissect –verbose –range 20190428120000-20190428121000 –label fpath messages dmesg

输出过去30天183.238.151.209的访问记录的文件logdissect -s –outlog myaccess.log –grep 183.238.151.209 –last 30d –label fname /var/log/secure

02进程工具1Linux Rootkit (vfs hook)隐藏进程检测工具,一个linux内核模块,是用于检测rootkit的一个小demo。通过读取此内核模块创建的虚拟文件,可检测通过Hook vfs 函数来隐藏的进程。下载链接:https://security.tencent.com/index.php/opensource/down/162安装方法unzipprocess_list.zipcdprocess_listmakemakeinstall使用效果:

03网络分析工具1TcpdumpTcpdump作为Linux下一款经典的抓包工具有必要进行讲解。注:抓包只是一个数据包捕获过程,最重要的是对结果的分析。分析过程中,需要掌握主流协议的包结构,否则一切都是徒劳。2基础常用选项:-i:指定网络接口(如eth0,eth2。网络接口使用ifconfig命令查看)-nn:不对IP地址进行DNS反解析,并且不将端口转换为字符-vv:详细输出数据包信息-w:将捕获的结果存入指定文件,-w后接自定义文件名-r:将存入文件的结果读取出来以便分析重要:在抓包过程中,个人强烈建议使用 -n 选项。如果不加-n 选项,tcpdump程序就会对IP地址进行DNS反解析,反解析的过程会耗费相当部分时间。因为这里牵涉到libcap缓冲区,tcpdump捕获的数据包首先会放入缓冲区,然后上层提取。但是上层在尝试做DNS反解析的时间里,缓冲区会由于数据包过多而导致缓冲区溢出,溢出的直接结果就是部分数据包被drop,数据包被drop会对我们的分析过程造成极大影响——实际不丢包,但是数据显示却“丢包”。为了不影响我们的分析结果,个人建议加上-n选项限定符:过滤器表达式由一个或多个基元组成,原语通常由id(名称或数字)前面加一个或多个限定符),tcpdump提供了3种限定符,分别为type、direction、protocoltype(类型):host //host 192.168.1.1net //net 192.168port //port 80portrange //portrange 22-801.2.2direction(数据包方向)srcdstsrcordstsrcanddst1.2.3protocal(协议)etheriparprarptcpudpicmp3基本语法过滤主机:tcpdump -i ehtN -n host IPADDRtcpdump -n -i eth2 host 192.168.1.1 抓取所有经过eth2,目标或源地址是192.168.1.1的数据包tcpdump-ieth2-nsrchost192.168.1.1指定源地址tcpdump-ieth2-ndsthost192.168.1.1指定目标地址过滤端口:tcpdump -i eth2 -n port PortNumtcpdump -i eth2 -n port 25 抓取所有经过eth2,目的或源端口是25的网络数据tcpdump -i eth2 -n src port 25 指定源端口网络过滤:tcpdump-ieth2-nnet192.168tcpdump -i eth2 -n src net 192.168协议过滤:tcpdump-iethN-nProtocoltcpdump-ieth2-nicmptcpdump -i eth2 -n ip常用表达式:非:!或者 not与:&& 或者 and或:|| 或者 ortcpdump -i eth2 tcp and port 80 and (dst host 192.168.1.254 or dst host 192.168.1.200) 抓取所有经过eth2,目的地址是192.168.1.254或192.168.1.200;端口是80的TCP数据或者tcpdump -i eth2 ‘((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))’ //前面一个的写法括号需要转义,后一种写法是将表达式用引号引起来4包头过滤如何从包头过滤信息了?首先要熟悉IP、TCP等协议的包头结构,此处不做赘述。包头过滤的语法如下:’protocol[x:y]’:这里表示的是以protocol协议的第x字节起始,取后面的y字节(字节从0开始编号)’proto[x:y]&z=0′:proto[x:y]和z的与操作为0’proto[x:y]&z!=0′:proto[x:y]和z的与操作不为0’proto[x:y]&z=z’:proto[x:y]和z的与操作为z’proto[x:y]=z’:proto[x:y]等于z操作符 : >, =,

IP协议抓包:tcpdump-i -n eth2′((ip[2:2] = 1024) and (src host 192.168.1.1′)) 抓取经过eth2网卡、数据包大小为1024并且源IP为192.168.1.1的数据包tcpdump -i -n eth2′((ip[2:2] > 1024) and (src host 192.168.1.1))’抓取经过eth2网卡、数据包字节大于1024并且源IP为192.168.1.1的数据包TCP协议抓包:抓TCP包:tcpdump-ieth4-nn-vvtcpandhost218.8.51.194tcpdump:listeningoneth4,link-typeEN10MB(Ethernet),capturesize65535bytes17:41:00.159396IP(tos0x0,ttl54,id2335,offset0,flags[DF],protoTCP(6),length60)218.8.51.194.51003>182.118.126.96.80:Flags[S],cksum0xe729(correct),seq3087933325,win14600,options[mss1460,sackOK,TSval796071570ecr0,nop,wscale7],length017:41:00.159427IP(tos0x0,ttl64,id0,offset0,flags[DF],protoTCP(6),length52)182.118.126.96.80>218.8.51.194.51003:Flags[S.],cksum0xce85(correct),seq1946096042,ack3087933326,win14600,options[mss1460,nop,nop,sackOK,nop,wscale7],length017:41:00.190017IP(tos0x0,ttl54,id2336,offset0,flags[DF],protoTCP(6),length40)218.8.51.194.51003>182.118.126.96.80:Flags[.],cksum0x47ed(correct),seq1,ack1,win115,length017:41:00.190354IP(tos0x0,ttl54,id2337,offset0,flags[DF],protoTCP(6),length40)218.8.51.194.51003>182.118.126.96.80:Flags[F.],cksum0x47ec(correct),seq1,ack1,win115,length017:41:00.190402IP(tos0x0,ttl64,id57183,offset0,flags[DF],protoTCP(6),length40)182.118.126.96.80>218.8.51.194.51003:Flags[F.],cksum0x47eb(correct),seq1,ack2,win115,length017:41:00.221104 IP (tos 0x0, ttl 54, id 2338, offset 0, flags [DF], proto TCP (6), length 40)218.8.51.194.51003>182.118.126.96.80:Flags[.],cksum0x47eb(correct),seq2,ack2,win115,length0结果分析:上面的结果中,2-3行信息为TCP三次握手的过程,offset 表示偏移量Flags 后面的标识含义:S (SYN)F (FIN)P (PUSH)R (RST)W (ECN CWR)E (ECN-Echo). (no flags)cksum 表示校验和,其中correct表示校验和正确抓取目的端口等于80的报文:tcpdump -i eth2 -nn -vv ‘((tcp[2:2] = 80))’ //TCP头部的3-4字节为目的端口抓取源端口等于80的报文:tcpdump -i eht1 -nn -vv ‘((tcp[0:2] = 80))’ //TCP头部的1-2字节为源端口** TCP的8种标记,这些标记在TCP头部的14字节——tcp[13]。TCP使用哪个标记,就会将这个标记的值置为1,如SYN包的二进制表示为: 00000010,十进制就是2+-+-+-+-+-+-+-+-+|C|E|U|A|P|R|S|F||W|C|R|C|S|S|Y|I||R|E|G|K|H|T|N|N|+-+-+-+-+-+-+-+-+只抓TCP握手过程中的SYN包:tcpdump-ieth2-nn-vv\'((tcp[13]=2))’ 这个时候标识位的值为 00000010抓标记为SYN、ACK的包:tcpdump-ieth4-nn-vv\'((tcp[13]=18))’ 此时标识位的至为 00010010其他标识位抓包方法一次类推。这种通过数字计算的或许会比较麻烦,因此tcpdump支持了另一种写法,上面两种写法分别如下:tcpdump -i eth4 -n -vv “tcp[tcpflags] & (tcp-syn) != 0″tcpdump-ieth4-nn-vv\'((tcp[tcpflags]&tcp-syn!=0)and(tcp[tcpflags]&tcp-ack!=0))\'[root@tw13c150 ~]# tcpdump -i eth4 -n -vv “tcp[tcpflags] & (tcp-ack) != 0” and (host 218.8.51.194)tcpdump: listening on eth4, link-type EN10MB (Ethernet), capture size 65535 bytes13:46:26.019271 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52) 182.118.126.96.http > 218.8.51.194.58137: Flags [S.], cksum 0xfbc7 (correct), seq 769939001, ack 1488795467, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 013:46:26.049499 IP (tos 0x0, ttl 56, id 34444, offset 0, flags [DF], proto TCP (6), length 40) 218.8.51.194.58137 > 182.118.126.96.http: Flags [.], cksum 0x752f (correct), seq 1488795467, ack 769939002, win 115, lengt其他协议抓包(DNS、HTTP等)HTTP:tcpdump -i eth4 -nn -vv ‘tcp[20:2]=0x4745 or tcp[20:2]=0x4854’//tcp[20:2]=0x4745表示’GET’的’GE’,tcp[20:2]=0x4854表示HTTP的’HT’DNS:tcpdump -i eth2 udp dst port 53最后,如果需要查看数据内容,可使用tcpdump -s 0 -w filename把数据包都保存下来(-s 0是抓取完整数据包,否则默认只抓68字节。),然后用wireshark分析。网络丢包分析抓包技巧:我们公司的服务器上有很多ping程序,抓包时为了避免其它数据包的影响,我们可以抓特定长度的包。以ICMP为例:A端指定数据字节为 1024 bytes pingping-c400-i0.01-s1024-ftw04008s2.sandai.net//那么B端抓IP数据包的长度应为1024(数据长度)+8(8字节ICMP首部)+20(字节IP首部)tcpdump -i eth2 “(ip[2:2]=1052) and src host 123.59.127.2” -w loss.cap//这里的 ip[2:2] 指的是过滤从第三字节开始的两个字节数,因此我过滤出的就是3、4字节其实捕获数据包不难,但是我们要学会分析、清洗数据,这就需要十分熟悉各类协议,尤其是TCP,IP,HTTP等04内存服务工具1Volatilityvolatility 是一款内存取证和分析工具,可以对 dump 出来的内存进行分析,并提取内存中的文件。支持多平台运行(需要python环境),该工具支持 Windows 和 Linux,Kali 下面默认已经安装。下载地址:http://www.volatilityfoundation.org/#!releases/component_714012使用方法要查看可用选项,请运行“python vol.py -h”或“python vol.py —info”root@kali:~/volatility-master# python vol.py -hVolatility Foundation Volatility Framework 2.6.1Usage: Volatility – A memory fo开发云主机域名rensics analysis platform.Options:-h, –help //list all available options and their default values.Default values may be set in the configuration file(/etc/volatilityrc)–开发云主机域名conf-file=/root/.volatilityrc//Userbasedconfigurationfile-d, –debug //Debug volatility–plugins=PLUGINS //Additional plugin directories to use (colon separated)–info //Print information about all registered objects–cache-directory=/root/.cache/volatility//Directorywherecachefilesarestored–cache //Use caching–tz=TZ //Sets the (Olson) timezone for displaying timestamps.using pytz (if installed) or tzset-f FILENAME, –filename=FILENAME //Filename to use when opening an image–profile=WinXPSP2x86 //Name of the profile to load (use –info to see a list of supported profiles)-l LOCATION, –location=LOCATION //A URN location from which to load an address space-w, –write //Enable write support–dtb=DTB //DTB Address–shift=SHIFT //Mac KASLR shift address–output=text //Output in this format (support is module specific, see the Module Output Options below)–output-file=OUTPUT_FILE //Write output in this file-v, –verbose //Verbose information–physical_shift=PHYSICAL_SHIFT //Linux kernel physical shift address–virtual_shift=VIRTUAL_SHIFT //Linux kernel virtual shift address-g KDBG, –kdbg=KDBG //Specify a KDBG virtual address (Note: for 64-bit Windows 8 and above this is the address of KdCopyDataBlock)–force //Force utilization of suspect profile-k KPCR, –kpcr=KPCR //Specify a specific KPCR address–cookie=COOKIE //Specify the address of nt!ObHeaderCookie (valid for Windows 10 only)支持以下插件:linux_apihooks-检查userlandapihookslinux_arp-打印ARP表linux_aslr_shift-自动检测LinuxASLR转换linux_banner-打印Linux横幅信息linux_bash-从bash进程内存中恢复bash历史记录linux_bash_env-恢复进程的动态环境变量linux_bash_hash-从bash进程内存中恢复bash哈希表linux_check_afinfo-验证网络协议的操作函数指针linux_check_creds-检查是否有任何进程共享凭证结构linux_check_evt_arm-检查异常向量表以查找syscall表挂钩linux_check_fop-检查rootkit修改的文件操作结构linux_check_idt-检查IDT是否已被更改linux_check_inline_kernel-检查内联内核挂钩linux_check_modules-将模块列表与sysfs信息进行比较(如果有)linux_check_syscall-检查系统调用表是否已被更改linux_check_syscall_arm-检查系统调用表是否已被更改linux_check_tty-检查tty设备的挂钩linux_cpuinfo-打印有关每个活动处理器的信息linux_dentry_cache-从dentry缓存中收集文件linux_dmesg-收集dmesg缓冲区linux_dump_map-将选定的内存映射写入磁盘linux_dynamic_env-恢复进程的动态环境变量linux_elfs-在进程映射中查找ELF二进制文件linux_enumerate_files-列出文件系统缓存引用的文件linux_find_file-列出并恢复内存中的文件linux_getcwd-列出每个进程的当前工作目录linux_hidden_modules-刻录内存以查找隐藏的内核模块linux_ifconfig-收集活动接口linux_info_regs -就像GDB中的’info registers’。它打印出所有的linux_iomem-提供类似于/proc/iomem的输出linux_kernel_opened_files-列出从内核中打开的文件linux_keyboard_notifiers-解析键盘通知程序调用链linux_ldrmodules-将proc映射的输出与libdl中的库列表进行比较linux_library_list-列出加载到进程中的库linux_librarydump-将进程内存中的共享库转储到磁盘linux_list_raw-列出具有混杂套接字的应用程序linux_lsmod-收集加载的内核模块linux_lsof-列出文件描述符及其路径linux_malfind-查找可疑的进程映射linux_memmap-转储linux任务的内存映射linux_moddump-提取加载的内核模块linux_mount-收集已安装的fs/设备linux_mount_cache-从kmem_cache收集已安装的fs/deviceslinux_netfilter-列出Netfilter挂钩linux_netscan-用于网络连接结构linux_netstat-列出打开的套接字linux_pidhashtable-通过PID哈希表枚举进程linux_pkt_queues-将每个进程的数据包队列写入磁盘linux_plthook-扫描ELF二进制文件的PLT以挂钩到非NEEDED图像linux_proc_maps-收集进程内存映射linux_proc_maps_rb-通过映射红黑树收集linux的进程映射linux_procdump-将进程的可执行映像转储到磁盘linux_process_hollow-检查进程空洞的迹象linux_psaux-收集进程以及完整的命令行和开始时间linux_psenv-收集进程及其静态环境变量linux_pslist-通过遍历task_struct->任务列表来收集活动任务linux_pslist_cache-从kmem_cache中收集任务linux_psscan-扫描进程的物理内存linux_pstree-显示进程之间的父/子关系linux_psxview-查找包含各种流程列表的隐藏流程linux_recover开发云主机域名_filesystem-从内存中恢复整个缓存的文件系统linux_route_cache-从内存中恢复路由缓存linux_sk_buff_cache-从sk_buffkmem_cache中恢复数据包linux_slabinfo-正在运行的机器上的Mimics/proc/slabinfolinux_strings-将物理偏移与虚拟地址匹配(可能需要一段时间,非常详细)linux_threads-打印进程的线程linux_tmpfs-从内存中恢复tmpfs文件系统linux_truecrypt_passphrase-恢复缓存的Truecrypt密码linux_vma_cache-从vm_area_struct缓存中收集VMAlinux_volshell-内存映像中的Shelllinux_yarascan-Linux内存映像中的shell下面简单介绍以Linux dump出来的内存文件分析查看网络连接信息:

查看进程信息

05信息收集工具1FastIR CollectorFastIR Collector Linux,可以快速完成Linux服务器各项数据的信息收集,无需掌握linux各种复杂的命令与参数。该工具可以收集:系统信息(内核版本、内核模块、网络接口、主机名、发行版本),用户登录信息,网络连接,用户数据,自动进程,磁盘信息,文件系统信息等,并将结果输出为csv文件。FastIRcollector同样也有Windows的版本,可以用来收集Windows系统信息。下载地址:git clone https://github.com/SekoiaLab/Fastir_Collector_Linux.git运行环境:代码运行在python2环境下,python 2.4以上版本。必须以root账户运行2使用方法cd Fastir_Collector_Linuxpython fastIR_collector_linux.py www.gendan5.com命令执行后,会生成output目录,收集的所有数据会打包放在该目录下。使用sz命令下载该压缩包到本地环境。(yum install -y lszrz,可安装rz与sz)也可以使用ftp或sftp传输

Linux的常用工具有哪些
(图片来源网络,侵删)

参数:

到此,相信大家对“Linux的常用工具有哪些”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

本文从转载,原作者保留一切权利,若侵权请联系删除。

《Linux的常用工具有哪些》来自互联网同行内容,若有侵权,请联系我们删除!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]