在linux系统中使用chkrootkit检测rootkit

Rootkit是一个特殊的恶意软件,它可隐藏自身以及指定的文件、进程、网络、链接、端口等信息。Rootkit可通过加载特殊的驱动修改系统内核,进而达到隐藏信息的目的。

Rootkit的三要素就是:隐藏、操纵、收集数据。不同的操作系统会有不同的Rootkit,Linux系统中的Rootkit就被称为LinuxRootkit。

Rootkit具有隐身功能,无论静止时作为文件存在,还是活动时作为进程存在,都不会被察觉,它可能永远存在于计算机中。

无论是那种形式的Rootkit,都需要实现以下功能:

1,远程指令执行

通过网络向Rootkit所驻留的系统发送指令,从而控制远程主机;

2,信息收集

收集系统的活动信息、网络上其它主机的数据信息等;

3,文件隐藏

把目标主机上的特定文件隐藏起来,使其不能通过常规方法查看到,这样就可以隐藏一部分系统被控制的痕迹;

4,进程隐藏

在控制目标主机或收集系统信息时会启动相关的进程,通过Rootkit可以实现对进程的隐藏;

5,网络连接隐藏

将网络连接的端口信息隐藏,利用netstat等工具无法显示隐藏的信息,这样就可以隐秘地向远端发送信息;

6,内核模块隐藏

将Rootkit自身在系统中安装的模块隐藏起来,提高自身生存能力。

Chkrootkit是一种Linux后门入侵检测工具,可以用来检测rootkit后门的工具,rootkit常被入侵者用来入侵控制别人的电脑,危险性很强。而,Chkrootkit工具可以很好的检测到rootkit程序。Chkrootkit运行环境为linux,可以直接通过ftp://chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz地址来下载。

┌──(taiji㉿kali)-[~]
└─$ wget ftp://chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
--2023-02-10 15:15:31--  ftp://chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
           => “chkrootkit.tar.gz”
正在解析主机 chkrootkit.org (chkrootkit.org)... 187.33.4.179
正在连接 chkrootkit.org (chkrootkit.org)|187.33.4.179|:21... 已连接。正在以 anonymous 登录 ... 登录成功!==> SYST ... 完成。   ==> PWD ... 完成。==> TYPE I ... 完成。 ==> CWD (1) /pub/seg/pac ... 完成。==> SIZE chkrootkit.tar.gz ... 41948
==> PASV ... 完成。   ==> RETR chkrootkit.tar.gz ... 完成。长度:41948 (41K) (非正式数据)

chkrootkit.tar.gz           100%[=========================================>]  40.96K  39.8KB/s  用时 1.0s    

2023-02-10 15:15:43 (39.8 KB/s) - “chkrootkit.tar.gz” 已保存 [41948]

随后进行解压缩:

┌──(taiji㉿kali)-[~]
└─$ tar zxvf chkrootkit.tar.gz                                       
chkrootkit-0.57/ACKNOWLEDGMENTS
chkrootkit-0.57/check_wtmpx.c
chkrootkit-0.57/chkdirs.c
chkrootkit-0.57/chklastlog.c
chkrootkit-0.57/chkproc.c
chkrootkit-0.57/chkrootkit
chkrootkit-0.57/chkrootkit.lsm
chkrootkit-0.57/chkutmp.c
chkrootkit-0.57/chkwtmp.c
chkrootkit-0.57/COPYRIGHT
chkrootkit-0.57/ifpromisc.c
chkrootkit-0.57/Makefile
chkrootkit-0.57/README
chkrootkit-0.57/README.chklastlog
chkrootkit-0.57/README.chkwtmp
chkrootkit-0.57/strings.c
                                                                                                              

打开文件夹,输入make命令进行编译:

┌──(taiji㉿kali)-[~]
└─$ cd chkrootkit-*
                                                                                                              
┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ make
cc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
chklastlog.c: In function ‘main’:
chklastlog.c:112:9: warning: ‘memcpy’ reading 127 bytes from a region of size 14 [-Wstringop-overread]
  112 |         memcpy(wtmpfile, WTMP_FILENAME, 127);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
chklastlog.c:113:9: warning: ‘memcpy’ reading 127 bytes from a region of size 17 [-Wstringop-overread]
  113 |         memcpy(lastlogfile, LASTLOG_FILENAME, 127);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
chkwtmp.c: In function ‘main’:
chkwtmp.c:73:8: warning: ‘memcpy’ reading 127 bytes from a region of size 14 [-Wstringop-overread]
   73 |        memcpy(wtmpfile, WTMP_FILENAME, 127);
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc -DHAVE_LASTLOG_H   -D_FILE_OFFSET_BITS=64 -o ifpromisc ifpromisc.c
cc  -o chkproc chkproc.c
cc  -o chkdirs chkdirs.c
cc  -o check_wtmpx check_wtmpx.c
cc -static  -o strings-static strings.c
cc  -o chkutmp chkutmp.c

直接运行其chkrootkit可执行文件即可,它会对系统进行全面的rootkit检测:

┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ sudo ./chkrootkit       
[sudo] taiji 的密码:ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
Checking `find'... not infected

上面是chkrootkit基本用法,下面再来加深些印象,首先chkrootkit可通过h参数来查看基本的帮助信息,了解其他参数及用法,如下:

┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ chkrootkit -h  
Usage: /usr/sbin/chkrootkit [options] [test ...]
Options:
        -h                show this help and exit
        -V                show version information and exit
        -l                show available tests and exit
        -d                debug
        -q                quiet mode
        -x                expert mode
        -e 'FILE1 FILE2'  exclude files/dirs from results. Must be followed by a space-separated list of files/dirs.
                          Read /usr/share/doc/chkrootkit/README.FALSE-POSITIVES first.
        -s REGEXP         filter results of sniffer test through 'grep -Ev REGEXP' to exclude expected
                          PACKET_SNIFFERs. Read /usr/share/doc/chkrootkit/README.FALSE-POSITIVES first.
        -r DIR            use DIR as the root directory
        -p DIR1:DIR2:DIRN path for the external commands used by chkrootkit
        -n                skip NFS mounted dirs

示例1:chkrootkit默认检索整个系统,我们可以通过管道去搜索INFECTED(被感染)关键字,方便查看:

┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ ./chkrootkit | grep INFECTED

我这里是刚装的新系统,chkrootkit不应该报结果,如果有报结果,就注意查看可执行文件。

示例2:Chkrootkit也可检查系统命令是否受感染,例如ps、ls,如下

┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ ./chkrootkit ps ls          
./chkrootkit needs root privileges
                                                                                                              
┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ sudo ./chkrootkit ps ls
ROOTDIR is `/'
Checking `ps'... not infected
Checking `ls'... not infected

示例3:chkrootkit可传入sniffer参数来检查网络接口是否处于混杂模式,混杂模式下的网络接口会接受所有经过自己的数据流,一般管理员调试或者黑客入侵搜集信息时会用到,而正常情况下网络接口都处于非混杂模式,即只接受目标地址是自己的数据流,wireshark抓包即混杂模式接受所有数据流。

┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ ./chkrootkit sniffer
./chkrootkit needs root privileges
                                                                                                              
┌──(taiji㉿kali)-[~/chkrootkit-0.57]
└─$ sudo ./chkrootkit sniffer
ROOTDIR is `/'
Checking `sniffer'... eth0: PF_PACKET(/usr/sbin/NetworkManager, /usr/sbin/NetworkManager)


kali上下载GitHub文件失败

一、首先查询网站IP,https://ipaddress.com/website/

二、在windows上 C:\Windows\System32\drivers\etc\hosts文件上添加:

140.82.112.4 github.com

三、在LINUX系统中,打开终端,用VIM打开hosts文件后,按“i”键编辑添加“140.82.112.4 github.com”。

┌──(taiji㉿kali)-[~]
└─$ sudo vim /etc/hosts

四、用VIM编辑完毕后按“ESC”键,按“SHIFT+:”,输入“wq”保存退出,再打开终端尝试,发现就可以连接下载了。

┌──(taiji㉿kali)-[~]
└─$ git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver
正克隆到 'RTL88x2BU-Linux-Driver'...
remote: Enumerating objects: 2750, done.
remote: Counting objects: 100% (280/280), done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 2750 (delta 241), reused 231 (delta 207), pack-reused 2470
接收对象中: 100% (2750/2750), 8.37 MiB | 99.00 KiB/s, 完成.
处理 delta 中: 100% (1964/1964), 完成.

CF-924AC V2无线网卡安装LINUX驱动

一、首先输入“lsusb”命令查看无线网卡的芯片型号:

┌──(taiji㉿kali)-[~]
└─$ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 001 Device 002: ID 0bda:b812 Realtek Semiconductor Corp. RTL88x2bu [AC1200 Techkey]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 4e53:5407  USB OPTICAL MOUSE 
Bus 004 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard SK-8115
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

二、此电脑无线网卡型号为RTL88x2bu,到GITHUB搜索无线网卡驱动包,找到这个驱动资源包https://github.com/RinCat/RTL88x2BU-Linux-Driver,下载以后解压。

三、在解压包文件夹中右键——“在这里打开终端”。如果之前曾经编译过,可以将之前产生的可执行档及其他档案删除, 有时发现重新编译出来的档案没有更新, 可以先执行“make clean”

make clean

四、然后再开始“make”安装命令:

┌──(taiji㉿kali)-[~/下载/RTL88x2BU-Linux-Driver-master]
└─$ make
/bin/sh: 1: bc: not found
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/6.0.0-kali3-amd64/build M=/home/taiji/下载/RTL88x2BU-Linux-Driver-master  modules
make[1]: 进入目录“/usr/src/linux-headers-6.0.0-kali3-amd64”
/bin/sh: 1: bc: not found
  CC [M]  /home/taiji/下载/RTL88x2BU-Linux-Driver-master/core/rtw_cmd.o
  CC [M]  /home/taiji/下载/RTL88x2BU-Linux-Driver-master/core/rtw_security.o
  CC [M]  /home/taiji/下载/RTL88x2BU-Linux-Driver-master/core/rtw_debug.o

五、输入命令“sudo make install”,出现错误提示“/bin/sh: 1: bc: not found”

┌──(taiji㉿kali)-[~/下载/RTL88x2BU-Linux-Driver-master]
└─$ sudo make install
/bin/sh: 1: bc: not found
install -p -m 644 88x2bu.ko  /lib/modules/6.0.0-kali3-amd64/kernel/drivers/net/wireless/
/sbin/depmod -a 6.0.0-kali3-amd64

六、输入命令“sudo apt install bc”,来解决上面出现的错误提示。

┌──(taiji㉿kali)-[~/下载/RTL88x2BU-Linux-Driver-master]
└─$ sudo apt install bc                           
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成          

七、再一次输入命令“sudo make install”,这回成功安装了。重启电脑,无线网卡驱动即安装成功。

┌──(taiji㉿kali)-[~/下载/RTL88x2BU-Linux-Driver-master]
└─$ sudo make install
install -p -m 644 88x2bu.ko  /lib/modules/6.0.0-kali3-amd64/kernel/drivers/net/wireless/
/sbin/depmod -a 6.0.0-kali3-amd64

ubuntu右键新建

想要在ubuntu右键新建文本、新建电子表格、新建电子文档、新建演示文稿,该如何操作呢?

首先打开LIBREOFFICE,分别新建电子表格、新建电子文档、新建演示文稿,别分别保存为“.xlsx”、“.docx”、“.pptx”格式。

然后打开终端,将这个文档复制到主目录的“模板”文件夹中:

taiji@taiji:~/模板$ sudo cp '/home/taiji/桌面/电子文档.docx'  /home/taiji/模板/
[sudo] taiji 的密码: 
taiji@taiji:~/模板$ sudo cp '/home/taiji/桌面/电子表格.xlsx'  /home/taiji/模板/
taiji@taiji:~/模板$ sudo cp '/home/taiji/桌面/演示文稿.pptx'  /home/taiji/模板/
taiji@taiji:~/模板$ sudo gedit 文本.txt

然后在桌面右键,就可以看到有新建电子表格、新建电子文档、新建演示文稿、新建文本文档等选项了。(其中的新建文本,在输入“sudo gedit 文本文档.txt”命令之后,会打开一个文本,点击保存即可。)

ubuntu隐藏顶栏的方法

由于 ubuntu 22.04 移除了 gnome-shell-extension-* 所有的包, 所以无法使用 apt install gnome-shell-extension-autohidetopbar 的方式来安装隐藏顶栏的插件。我找了一个隐藏UBUNTU的方法和大家分享:

一、首先打开终端,输入安装命令:

 sudo apt install chrome-gnome-shell 

二、然后打开网站:https://extensions.gnome.org/,点击“Click here to install browser extension”安装 chrome 或者 firefox 浏览器插件。

三、然后搜索“hide top bar ”即可安装和管理gnome-shell 的包。

四、安装完了以后,在应用程序里搜索“extensions”,然后在 extensions 中可以对插件进行设置即可实现隐藏UBUNTU顶栏。

WD-4605AC-GR无线网卡安装LINUX驱动

家里添了个裕合联WD-4605AC-GR无线网卡,现在要给在UBUNTU系统下安装驱动。操作步骤如下:

首先输入“lsusb”查看网卡的驱动型号:

taiji@192:~$ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 001 Device 002: ID 0e8d:7612 MediaTek Inc. MT7612U 802.11a/b/g/n/ac Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 4e53:5407  USB OPTICAL MOUSE 
Bus 004 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard SK-8115
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

上面系统显示网卡的型号为MT7612U,所以到github直接下载:

git clone https://github.com/morrownr/7612u.git

可能提示未安装git,输入安装命令:

sudo apt install git

然后再执行下载驱动包:

git clone https://github.com/morrownr/7612u.git

如果提示无法接连网络,则表示这个网站被墙了,这个要靠你动脑筋去解决了,这里省略不说,会的自然会,不会的自己去悟。下载完驱动包之后,输入命令进入安装包文件夹:

cd 7612u

执行安装命令:

sudo ./led_ctrl_7612u.sh

系统注销,再登陆以后连接WIFI即可。

Linux禁止用户远程登录方法总结

家里电脑安装LINUX系统之后,仍旧发生被远程操作卡停等开扰情况,这是因为家里的电脑被远程SSH登陆的原因。解决思路:禁止所有的远程登陆,只允许本地登陆。

一、禁止用户登录

1、修改用户配置文件/etc/shadow
      将第二栏设置为“*”,如下。那么该用户就无法登录。但是使用这种方式会导致该用户的密码丢失,也就是当你再次允许他登录的时候,你还得让他重新设置密码。(再次启用这个帐号的方法是把“*”去掉就可以了)
      如:tom:\*:14245:0:99999:7:::

2、使用命令usermod
      这个方式简单又实用,而且没有(1)中的副作用。

usermod -L tom##Lock 帐号tom
usermod -U tom##Unlock 帐号tom

3、通过修改shell类型
      这种方式会更加人性化一点,因为你不仅可以禁止用户登录,还可以告诉他你这么做的原因。如下:

chsh tom-s /sbin/nologin #将用户tom的shell进行更改
 
###############
##修改/etc/nologin.txt(没有就新建一个),
##在里面添加给被禁止用户的提示
###############

#解禁用户的方式就是把shell改为他原有的就可以了。

4、禁止所有的用户登录
      当你(如果你是系统管理员)不想让所有用户登录时(比如你要维护系统升级什么的),如果按上面的方式,一个一个地去禁止用户登录,这将是很……无聊的事。而且还容易出错。下面有一种简洁有效的方式:

##在/etc目录下建立一个nologin文档
touch /etc/nologin ##如果该文件存在,那么Linux上的所有用户(除了root以外)都无法登录
##在/etc/nologin(注意:这可不是(3)中的nologin.txt啊!)写点什么,告诉用户为何无法登录
#################
cat /etc/nologin
9:00-10:00 系统升级,所有用户都禁止登录!

##解禁帐号也简单,直接将/etc/nologin删除就行了!

5、修改用户配置文件/etc/ssh/sshd_config
(1)只允许指定用户进行登录(白名单):

在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)格式如下:
AllowUsers    aliyun test@192.168.1.1            
# 允许 aliyun 和从 192.168.1.1 登录的 test 帐户通过 SSH 登录系统。

(2)只拒绝指定用户进行登录(黑名单):

在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:   
DenyUsers    zhangsan aliyun    #Linux系统账户        
# 拒绝 zhangsan、aliyun 帐户通过 SSH 登录系统

(3)禁止root通过ssh远程登录

vi /etc/ssh/sshd_config
找到PermitRootLogin,将后面的yes改为no,把前面的注释#取消,这样root就不能远程登录了!
可以用普通账号登录进去,要用到root的时候使用命令su root切换到root账户

重启SSH

service sshd restart

二、限制IP登录
      除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,linux 服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,hosts.allow许可大于hosts.deny可以限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,且设置后立即生效,不需要重启SSHD服务,具体如下:

/etc/hosts.allow添加
sshd:192.168.0.1:allow  #允许 192.168.0.1 这个IP地址SSH登录
sshd:192.168.0.:allow #允许192.168.0.1/24这段IP地址的用户登录,多个网段可以以逗号隔开,比如192.168.0.,192.168.1.:allow

/etc/hosts.allow添加
sshd:ALL #允许全部的ssh登录

/etc/hosts.deny添加
sshd:ALL #拒绝全部IP

su root和su – root的区别

su 默认切到 root。在linux系统中有很多比较相似的命令,比如su与su-。su命令主要用来切换linux用户的,而su-也可以切换用户,只不过它比su命令多了一个字符“-”,那么Linux系统中su命令与su-命令有什么区别?以下是详细的内容介绍。

1、切换root身份不同

su命令:su只是切换了root身份,但shell环境仍然是普通用户的shell;而su-连用户和shell环境一切切换成root身份了。只有切换了shell环境才不会出现PATH环境变量错误,报command not found的错误;

su-命令:su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su-命令切换以后,工作目录变成root的工作目录了。

2、采用su deploy命令后,取目标用户不同

su命令:su不会读取目标用户的环境配置文件;

su-命令:su-读取目标用户的环境配置文件;

综上总结:有-和无-各自的环境变量不同。

3、service命令

su命令:使用su root切换到root用户后,不可以使用service命令;

su-命令:使用su-后,就可以使用service命令了。

4、用echo $PATH命令后,环境量不同

su命令:环境量变为usr;

su-命令:环境量变为oracle。

VirtualBox虚拟机屏幕分辨率不能调整的解决方法

本文介绍windows系统使用virtualbox虚拟机,屏幕分辨率不能调整的问题。问题简单来说:就是虚拟机的屏幕不能填满显示器的整张屏幕,图片我就不贴了,有这个问题的我相信很简单就能理解的。

下面开始讲解具体的解决方法:方法分为两步:

1、虚拟机装好之后,根据自己的虚拟机版本安装扩展功能包,版本一定要对上,不然会安装失败。这是扩展包网址 https://www.virtualbox.org/wiki/Downloads ,进去选择对应版本下载即可。然后在关闭虚拟机的情况下,一定要关闭虚拟机,一路点击 管理-全局设定-扩展(或者直接键入快捷键CTRL+L),打开扩展安装界面,安装扩展功能包即可,这是具体界面,安装好就是如下界面。

2、扩展包安装成功后,一路点击 设置-显示-显卡控制器选择 VBoxVGA 显示,具体界面如下,切记一定要关闭虚拟机,不然修改不了,我这个是修改好的界面。

LINUX系统安装KDE桌面

一、安装:

apt-get install kali-defaults kali-root-login desktop-base kde-plasma-desktop

中途输入 y 进行安装确认,然后会显示 存在多个显示管理器,按上下方向健确认默认显示管理器为 sddm。

二、更改默认显示管理器优先级:

┌──(zhong㉿10)-[~]
└─$ sudo update-alternatives --config x-session-manager

有 3 个候选项可用于替换 x-session-manager (提供 /usr/bin/x-session-manager)。

  选择       路径                    优先级  状态
------------------------------------------------------------
* 0            /usr/bin/startxfce4        50        自动模式
  1            /usr/bin/startplasma-x11   40        手动模式
  2            /usr/bin/startxfce4        50        手动模式
  3            /usr/bin/xfce4-session     40        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:1

卸载KDE方法:

apt-get remove kde-plasma-desktop