Hacker基础之Linux篇:基础Linux命令九

今天我们来学习三个小命令

ps

这个命令用于查询当前运行进程的信息,如果是非root用户最好加上sudo来执行~

查询所有正在运行的进程

ps -ef

或者精确一点,查询运行着nginx的进程

ps -ef | grep nginx

以完整的格式显示进程

ps -ajx

top

top命令显示各进程的信息,包括占内存和占CPU的情况

这个命令直接执行就行了

lsof

lsof(list open files)是一个列出当前系统打开文件的工具

Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件

所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口

因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的

lsof命令使用介绍: 命令格式:lsof [options] filename

命令功能:列出当前系统打开文件的工具

命令的常用参数选项说明

<filename> 显示开启文件<filename>的进程 -c <name> 显示<name>进程现在打开的文件 -c -p PID 列出进程号为PID的进程所打开的文件 lsof -g GID 显示归属GID的进程情况 +d PATH 显示目录下被进程开启的文件 +D PATH 同上,但是会搜索目录下的目录,时间较长 -d NUM 显示使用fdNUM的进程 -i 用以显示符合条件的进程情况

-i [4/6] [protocol][@hostname|hostaddr][:service|port]

4/6 IPv4 or IPv6 protocol TCP or UDP hostname Internet host name hostaddr IP地址 service /etc/service中的service name (可以不止一个) port 端口号 (可以不止一个)

常用的情景如下

1

恢复删除的文件,当你的计算机被黑客攻击之后,黑客离开之前清除了所有的日志,怎么办

例如文件/var/log/messages

我们可以这样做

首先使用lsof来查看当前是否有进程打开/var/logmessages文件

# lsof | grep /var/log/messages syslogd 1283 root 2 REG 3,3 5381017 1773647 /var/log/messages (deleted)

从上面的信息可以看到PID 1283(syslogd)打开了文件,而且文件描述符为2

同时还可以看到/var/log/messages已经标记被删除了

因此我们可以在/proc/1283/fd/2fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下

# head -n 10 /proc/1283/fd/2 Aug 4 13:50:15 holmes86 syslogd 1.4.1: restart. Aug 4 13:50:15 holmes86 kernel: klogd 1.4.1, log source = /proc/kmsg started. Aug 4 13:50:15 holmes86 kernel: Linux version 2.6.22.1-8 (root@everestbuilder.linux-ren.org) (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007 Aug 4 13:50:15 holmes86 kernel: BIOS-provided physical RAM map: Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000000000 - 000000000009f000 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000100000 - 000000001f7d3800 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved)

可以看出文件还在

然后我们可以这样恢复

cat /proc/1283/fd/2 > /var/log/messages

2

显示当前进程打开了哪些文件,比如我们服务器被黑客植入了一个挖矿的木马,假设这个木马的进程号是30297我们怎么去找到这个木马的源文件在哪里,可以这样

lsof -p 30297

3

之后,我们分析这个文件发现了一个恶意域名,为了确定系统中是否还有隐藏木马,我们可以这样查看有哪些进程链接到了这个域名

lsof -i UDP@213162837.yyt.com:1230

或者是TCP

lsof -i TCP@213162837.yyt.com:1230 -r

-r 表示不断的查看

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猛牛哥的博客

LNMPA环境下Thinkphp5.1莫名500错误的解决方法

近期使用Thinkphp5.1做项目,在本地测试完好的代码,放到服务器上就500错误,开启显示PHP错误日志也不会有任何信息显示出来。最后发现是文件夹读写权限的...

79310
来自专栏云计算教程系列

如何在Ubuntu 16.04上将BIND配置为专用网络DNS服务器

管理服务器配置和基础架构的一个重要部分包括通过设置适当的域名系统(DNS),维护一种通过名称查找网络接口和IP地址的简便方法。使用完全限定的域名(FQDN)而不...

89900
来自专栏云计算教程系列

如何在Ubuntu上部署Elixir-Phoenix MySQL应用程序

在本教程中,您将使用Phoenix-Ecto和Mariaex配置现有的Phoenix应用程序连接到MySQL数据库。Ecto是Phoenix应用程序广泛使用的数...

33720
来自专栏SDNLAB

OpenStack Spice协议配置

Enable SPICE HTML5 Console Access in OpenStack Mikata 环境: CentOS7环境系统 + OpenStac...

60560

注册和使用服务器的教程

几周前我们很高兴地宣布云服务器产品上线。对于Cloud 66客户来说,将十分容易使用公有云或私有云。今天,我将提供一个关于如何使用的简短教程。

36080
来自专栏蓝天

thrift使用小记

    Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL...

18110
来自专栏清风

Linux 时区修改以及时间同步 原

36230
来自专栏散尽浮华

[原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

近年来,由于开源项目、社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的...

1.3K90
来自专栏Albert陈凯

centos下tomcat安装调试

1、在Linux系统下,重启Tomcat使用命令操作的! ** 方法一:** 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat...

44650
来自专栏云计算教程系列

如何在Debian 9上将BIND配置为专用网络DNS服务器

管理服务器配置和基础架构的一个重要部分包括通过设置适当的域名系统(DNS),维护一种通过名称查找网络接口和IP地址的简便方法。使用完全限定的域名(FQDN)而不...

48440

扫码关注云+社区

领取腾讯云代金券