Linux系统取证实践
目录
0x00 本课概述
0x01 用到命令
0x00 本课概述
本课时学习Linux系统下取证分析命令。
0x01 用到命令
1、top命令
2、ps命令
3、kill命令
4、linux系统日志检验和查看
5、linux下的用户管理
6、linux下文件夹目录特点并验证和总结
7、linux下文件时间属性提取
top命令
top命令解析
top作为日常管理工作中最常用也是最重要的Linux 系统监控工具之一,可以动态观察系统进程状况。top命令显示的项目很多,默认值是每5秒更新一次,按q键可以退出。 显示的各项目为:
-b : 批次模式运行。
-c : 显示执行任务的命令行。
-d : 设定延迟时间。
-h : 帮助。
-H : 显示线程。将显示所有进程产生的线程。
-i : 显示空闲的进程。
-n : 执行次数。一般与
-b搭配使用。
-u : 监控指定用户相关进程。
-U : 监控指定用户相关进程。
-p : 监控指定的进程。
-s : 安全模式操作。
-S : 累计时间模式。
-v : 显示top版本,然后退出。
-M : 自动显示内存单位(k/M/G)。
输入 top 显示任务、内存、CPU以及swap等内容,如图:
输入O(大写字母O)进行排序。如图:
我们可以按照以上所有选项进行排序.下面我们来按下A,让其以pid排序,如图:
单击q退出。输入top –u user 可以看到user的进程信息。(可看到没有user用户)
输入top后按下Z可以高亮现实正在运行的进程,如图:
按下C可以显示进程的绝对路径,如图:
按下shift+p 可以按照cpu使用量来排序,如图。
ps命令
1、linux进程分类 交互式进程:一般是由Shell启动的进程。这些进程经常和用户发生交互,所以花费一些时间等待用户的操作。当有输入时,进程必须很快的激活。通常,要求延迟在50-150毫秒。典型的交互式进程有:控制台命令shell,文本编辑器,图形应用程序。 批处理进程(Batch Process):不需要用户交互,一般在后台运行。所以不需要非常快的反应,他们经常被调度期限制。典型的批处理进程:编译器,数据库搜索引擎和科学计算。 实时进程:对调度有非常严格的要求,这种类型的进程不能被低优先级进程阻塞,并且在很短的时间内做出反应。典型的实时进程:音视频应用程序,机器人控制等。 批处理进程可能与I/O或者CPU有关,但是实时进程完全通过Linux的调度算法识别。
2、 Linux进程优先级 静态优先级(priority): 被称为“静态”是因为它不随时间而改变,内核不会修改它,只能通过系统调用nice(每个进程都会具有的属性,一个能影响进程优先级的数字)去修改他。它指明了在被迫和其它进程竞争CPU之前该进程所应该被允许的时间片的最大值(20)。 动态优先级(counter): counter 即系统为每个进程运行而分配的时间片,Linux 兼用它来表示进程的动态优先级。只要进程拥有CPU,它就随着时间不断减小;当它为0 时,标记进程重新调度。它指明了在当前时间片中所剩余的时间量(最初为20)。 实时优先级(rt_priority):值为1000。实时优先级只对实时进程有意义。Linux把实时优先级与counter值相加作为实时进程的优先权值。较高权值的进程总是优先于较低权值的进程,如果一个进程不是实时进程,其优先权就远小于1000,所以实时进程总是优先。 Base time quantum:是由静态优先级决定,当进程耗尽当前Base time quantum,kernel会重新分配一个Base time quantum给它。
输入ps –ax现实所有进程,如图:
你会发现有很多信息都已经被覆盖到后面去了,那么接下来我来告诉你们怎么能完整的观看。
输入ps –ax | less 就可以一点一点看到最后了。如图:
单击q就可以退出界面了。输入ps –ef | less是换个规则显示全部进程,如图:
输入ps –aux | less 可以看到更加详细的进程信息。
相查询某个进程状态时候可以用 ps -C ation,如图:
ps -aux –sort=-pcpu | less命令可以让其根据CPU进行排序,如图:
用ps -aux –sort=-pcpu | head -5命令,查看占cpu前五的进程。
kill命令
1、kill命令作用 使用linux操作系统,难免遇到一些软件“卡壳”的问题,这时就需要使用linux下强大的kill命令来结束相关进程。这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号(PID就是各进程的身份标识 )。
2.kill命令详解 进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。 Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。 kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。
输入gedit打开gedit软件,如下图:
再新建一个终端,利用pgrep gedit找到gedit的pid。如下图:
下面我们用kill -9 2955 杀死gedit程序,如图:
Gedit显示以杀死。单击火狐的图标,打开火狐的浏览器
输入killall firefox 可以直接对进程名进行kill命令,如图:
linux系统日志检验和查看
1、linux日志的作用 日志也是用户应该注意的地方之一。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件。用户可以通过日志文件检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。 日志的两个比较重要的作用是:审核和监测。配置好的Linux的日志非常强大。对于Linux系统而言,所有的日志文件都在/var/log下。默认情况下,Linux的日志文件已经足够强大,但没有记录FTP的活动。用户可以通过修改/etc/ftpacess让系统记录FTP的一切活动。
2、Linux日志系统 日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。 Linux系统一般有3个主要的日志子系统:连接时间日志、进程统计日志和错误日志。
输入more /var/log/messages 查看统启动后的信息和错误日志,如图:
输入more /var/log/secure 就可以查看与安全相关的日志信息。如图:
输入more /var/log/maillog 就可以查看与邮件相关的日志信息,如图:
输入more /var/log/cron可以看到有关定时任务方面的日志信息。
输入命令 more /var/log/boot.log 可以查看 守护进程启动和停止相关的日志消息,如图:
输入more /etc/logrotate.conf查看日志的配置文件,如图:
linux下的用户管理
1.1 linux下用户的角色分类。• 在linux下用户是根据角色定义的,具体分为三种角色: • 超级用户:拥有对系统的最高管理权限,默认是root用户。 • 普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如上面提到的www用户、ftp用户等。 • 虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,一般运行的web服务,默认就是使用的nobody用户,但是nobody用户是不能登录系统的。
1.2linux下用户和组的概念 我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。 每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
1.3linux用户和组的关系 用户和用户组的对应关系有:一对一、一对多、多对一和多对多; 下图展示了这种关系: • 一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。 • 一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。 • 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。 • 多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。
输入init 3 进入文本模式,如图:
回车以后看到如下界面,就是文本界面。
输入vim /etc/passwd查看当前系统的用户情况,如图:
在当前界面:q退出vi,然后用useradd命令添加一个系统用户hongyaa。
利用id hongyaa 查看hongyaa的帐号信息,如图:
把hongyaa用户加入root组,命令是:gpasswd –a hongyaa root 如图:
用passwd命令给hongyaa用户添加密码123456。命令是 passwd hongyaa
提示用户名太简单但是因为你是root所以可以忽略提示。再输入一遍123456。
看到如下界面,你的密码就添加成功了。利用exit退出登录。
输入exit后来到这个界面。以hongyaa用户登入系统。
退出并以root用户登入系统
利用userdel命令删除hongyaa用户。
linux下文件夹目录特点并验证和总结
1.linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。 目录提供了管理文件的一个方便而有效的途径。 Linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。
2.linux目录结构 我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。 每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
ls –al 查看一下所有目录和文件和其详细信息,如图:
下面我们来分别看看根目录下的子目录的特点输入ls –a /bin 看看bin目录下的文件。如图:
你会发现在bin目录绿色的文件名居多。也就是该目录下的可执行二进制命令居多。利用 ls /dev 查看dev目录下的文件特点,如图:
上图可以看出黄色文件名的比较多。可以得知该目录下设备文件比较多。ls /etc 观察etc目录有什么特点,如图:
由上图可发现,/etc文件夹下较多都是服务名.扩展名。这些都是服务的配置文件。所以在/etc下配置文件比较多。输入ls /home查看家目录特点。
家目录,顾名思义就是每个用户的家目录。
linux下文件时间属性提取
1 系统时间date命令date命令的功能是显示和设置系统日期和时间。 该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) date 设置时间格式: 命令中各选项的含义分别为:
• -d datestr, –date datestr 显示由datestr描述的日期
• -s datestr, –set datestr 设置datestr 描述的日期
• -u, –universal 显示或设置通用时间 时间域
• % H 小时(00..23)
• % I 小时(01..12)
• % k 小时(0..23)
• % l 小时(1..12)
• % M 分(00..59)
• % p 显示出AM或PM
• % r 时间(hh:mm:ss AM或PM),12小时
• % s 从1970年1月1日00:00:00到目前经历的秒数
• % S 秒(00..59)
• % T 时间(24小时制)(hh:mm:ss)
• % X 显示时间的格式(%H:%M:%S)
• % Z 时区 日期域
• % a 星期几的简称( Sun..Sat)
• % A 星期几的全称( Sunday..Saturday)
• % b 月的简称(Jan..Dec)
• % B 月的全称(January..December)
• % c 日期和时间( Mon Nov 8 14:12:46 CST 1999)
• % d 一个月的第几天(01..31)
• % D 日期(mm/dd/yy)
• % h 和%b选项相同
• % j 一年的第几天(001..366)
• % m 月(01..12)
• % w 一个星期的第几天(0代表星期天)
• % W 一年的第几个星期(00..53,星期一为第一天)
• % x 显示日期的格式(mm/dd/yy)
• % y 年的最后两个数字( 1999则是99)
• % Y 年(例如:1970,1996等)
2 文件时间linux文件的三种时间属性分别为: • atime,为access time的缩写,显示的是文件中的数据最后被访问的时间,比如被系统的进程直接使用或者通过一些命令和脚本间接使用。(执行一些可执行文件、脚本) • mtime,为modify time的缩写,显示的是文件的内容被改变时的最后时间,比如用vi编辑时就会改变。(也就是Block的内容) • ctime,为change time的缩写,显示的是文件的权限,拥有者,所属的组,链接数发生改变时的时间。当然当内容改变时,也会改变。(也就是Inode内容发生改变和Block内容发生改变时)
3 总结 Linux时间提取实验。主要是通过命令提取或修改系统时间,还有就是提取文件时间属性。
输入date命令查看系统时间,如图:
利用date修改日期,输入date –s 2016-12-12 进行修改时间。输入date命令查看是否修改。如图:
利用date命令修改日期和时间。date –s “2015-08-04 08:22:40”,查看是否更改,命令date。如图:(因为中间隔了一小会截的图,所以会差几秒钟。)
linux系统时区查看。输入命令 cat /etc/sysconfig/clock,如图:
通过看这个人间我们可以看出来这个机器的时区是亚洲上海。下面通过查看文件的方式来看看亚洲都有什么时区。 通过命令 ls /usr/share/zoneinfo/Asia查看
通过stat命令查看文件时间属性。 命令:stat/tmp/mapping-root
这样,该文件夹的时间属性就获取到了。
最新文章
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
- asp.net App_Code文件夹相关操作
- 【leetcode】Binary Search Tree Iterator
- java网络编程socket解析
- BZOJ 2241 打地鼠
- 就要从SDG离职了
- eclipse/ggts/myeclipse清除SVN用户名和密码
- 通过Alexa API获取Alexa排名
- SSIS:捕获修改了的数据
- Flexigrid折行显示问题
- Dojo初探之5:dojo的request(请求)操作、请求过程事件绑定和隐藏数据data()操作(基于dojo1.11.2版本)
- LOJ6000 - 「网络流 24 题」搭配飞行员
- IPFS:世界正在悄然发生变化
- Elasticsearch-6.7.0系列(三)5601端口 kibana——ES的UI界面
- Redis入门到高可用(十五)—— GEO
- ABP框架系列之三十一:(Localization-本地化)
- Linux 小知识翻译 - 「TCP/IP」
- 判断页面是否添加了W3C声明
- sublime text3支持Vue语法高亮显示
- 【刷题】洛谷 P3690 【模板】Link Cut Tree (动态树)
热门文章
- fremark遍历出的li怎么加事件(cforeach循环遍历也同样适用)
- java使用FileSystem上传文件到hadoop分布式文件系统配置
- (六十九)c#Winform自定义控件-垂直滚动条
- [Leetcode] 第331题 验证二叉树的前序序列化
- 【原创】如何根据日志来估算线上QPS
- 不fq安装 golang tools
- C语言入门-函数
- java-toString()、(String)、String.valueOf 的区别
- spring cache常用注解使用
- OpenGl 导入读取多个3D模型 并且添加鼠标控制移动旋转