第一章: 掌握终端窗口
目录
感谢您观看我的博客和我一起学习,本章学习的一个基本目录
一、Kali Linux文件系统
二、终端窗口基础
三、管理用户和组
四、操作文件和文件夹
五、处理远程连接
六、Kali Linux系统管理处理
七、Kali Linux中的网络
一、Kali Linux文件系统
理解Kali Linux中文件系统的结构至关重要。
Kali linux的目录结构基于Unix文件系统层次结构标准(Unix Filesystem Hierarchy Standard, FHS),这就是Kali Linux中目录的结构。
在Windows中,根目录是c:\,但在Kali Linux中,它是一个正斜杠(/)。
不要将术语根目录与根用户的主目录(即/root)混淆,因为它们是两个不同的东西;后者是根用户的主目录。谈到根用户,
有必要了解这个用户相当于Windows操作系统上的Administrator用户。
在Kali 2020.1版本中,Offensive Security在默认情况下引入了非root用户,这意味着如果您想要运行高权限工具,则需要执行sudo命令。
要获得Kali Linux文件系统目录的可视化表示,请打开终端窗口并执行ls命令以列出根系统目录的内容。请注意,默认情况下,您将位于用户主目录中。要更改它,必须执行cd /命令:
ls //查看当前目录下的文件
/bin
(二进制文件):此目录保存Linux二进制文件,例如我们前面执行的ls命令。
/sbin
(系统二进制文件):该目录包含作为管理命令的系统二进制文件(例如,fdisk)。
/dev
(devices):该目录包含设备配置文件(例如/dev/null)。
/sys:
类似于/dev,其中包含有关设备和驱动程序的配置。
/etc
(等等):这个目录包含所有的管理系统文件(例如,/etc/passwd显示了Kali中的所有系统用户)。
/lib
(libraries):该目录包含/bin和/sbin目录下的二进制文件的共享库。
/proc
(processes):该目录保存进程和内核信息文件。
/ lost+found:
顾名思义,此目录包含已恢复的文件。
/mnt (mount):
此目录包含挂载的目录(例如,远程文件共享)。
/media:
这个目录存放可移动媒体挂载的目录(例如,DVD)。
/opt
(option):用于安装附加软件包。此外,它也用于用户安装软件时(例如。(从GitHub下载的黑客工具)
/tmp
(临时):这是一个临时使用的临时文件夹;每次重启后都会擦除内容。tmp文件夹是下载特权升级工具的好地方,一旦您获得了有限的shell。
/usr
(用户):该目录包含多个子目录。实际上,/usr/share是一个您需要记住的文件夹,因为您在Kali Linux中使用的大多数工具(例如,Nmap, Metasploit等)都存储在那里,并且它包含wordlists字典文件(/usr/share/wordlists/)。
/home:
这是Kali Linux用户的主目录(例如,/home/john/)。
/root:
root用户的主目录。srv (serve):这个文件夹保存一些与系统服务器功能相关的数据(例如,FTP服务器的数据)。
/var
(variable):此文件夹保存数据库、日志和网站的变量数据。例如,/var/www/html/包含Apache web服务器的所有文件。
/ run
(runtime):此目录包含运行时系统数据(例如,当前登录的用户)。
二、终端窗口基础
作为初学者,从桌面打开终端窗口,可以使用Ctrl+Alt+T组合键,只需在它后面加上-h或- - help(有些命令只需要使用其中一个)。例如,如果您想查看cat命令的不同选项,只需在终端窗口中键入cat——help即可获得有关此工具所需的所有帮助。在下一个命令(cat -h)中,您将看到-h选项对cat命令不起作用。相反,我使用了-help选项。(cat命令经常用于在终端窗口中显示文本文件的内容。)
cat -h
cat --help
清除命令行
如果要清除终端窗口文本,请执行clear命令或按Ctrl+L来完成任务。
clear
新建终端
如果你要打开一个新的窗口可以使用快捷键ctrl+alt+t来完成
TAB自动补全
为了自动完成输入(例如,文件名或命令名),我使用Tab键。如果多个文件以相同的文本开头怎么办?然后,如果按两次Tab键,终端窗口将显示所有的选项。(理解本章的最好方法是打开终端窗口,一边阅读说明一边练习。)
例如输入cle 按第一次tab,它会自动补全
再按一次TAB键,就会出现一个列表,多次按tab的时候就可以快速的命令切换
关闭终端窗口
要在任何工具运行时停止执行,您可以使用Ctrl+C快捷键来停止
exit
关闭终端窗口用命令exit,或者快捷键ctrl+D键 来关闭终端窗口
重启/关闭
reboot
要从终端窗口重新启动Kali Linux,必须使用reboot命令
poweroff
关闭Kali Linux,必须使用poweroff命令。
最近使用的命令
history
现在,要获取最近执行的命令列表,必须使用history命令
查看命令
cat 文件名 //查看当前文件所在的目录
<>重定向
< 覆盖内容到文本
>覆盖内容文件的反向操作【可以理解为查看覆盖的内容】
touch test.txt //创建了一个test文件
cat > test.txt
此时发现可以往里面写东西,随便输入了几个字母,输入完了之后,按ctrl+c结束输入
cat < test.txt
就可以看到在里面添加的内容
您需要注意的另一个重定向是命令管道。总而言之,你可以组合每个命令的输出,并使用|字符将其发送给下一个命令:
$command 1| command2 | command3 ...
例如,我将读取一个文件,然后对结果进行排序,最后使用grep命令过滤掉一些文本字符串(目标是提取以单词test开头的文件):
cat ls_file.txt | sort | grep test
tmux终端窗口
Tmux是一个特殊的终端窗口,允许您在当前终端会话中管理多个窗口。解释它的最好方法是通过例子
开始tmux
tmux
要启动Tmux,只需在终端窗口中输入Tmux。在终端窗口的底部,您将注意到已为打开的窗口选项卡分配了一个数字和一个名称。
假设您参与了一个项目,并且希望在一个窗口中运行Nmap,在另一个窗口中再运行Metasploit,以此类推。这就是Tmux很方便的地方,因为您可以同时在多个窗口/会话上工作。
Tmux快捷键
在Tmux中,必须使用Ctrl+B来指示要执行Tmux操作(命令)。实际上,组合键Ctrl+B是默认的组合键。您始终可以在配置文件中更改Tmux的默认配置。要改变这种行为并分配Ctrl+A而不是Ctrl+B,那么您必须第一次自己创建配置文件。要完成这项工作
有两个选项可以在Tmux中创建配置文件。
第一种方法是添加一个名为~/.tmux.conf的用户特定文件
第二种方法是在/etc/tmux.conf下添加一个全局文件(对所有用户)。在我的情况下(对于这个例子),我将在/etc/tmux.conf下添加配置文件(并且我将在其中添加键绑定的配置):
touch /etc/tmux.conf
echo unbind C-b>> /etc/tmux.conf
echo set -g prefix C-a>> /etc/tmux.conf
echo bind C-a send-prefix>> /etc/tmux.conf
此时,配置文件已经修改完成了,打开终端页面输入tmux启动
给窗口重命名 按住 ctrl+a +, 此时就可以重命名
将名字叫做 test1
安装tmux
sudo apt-get install tmux
创建 一个名字为 windows 的窗口
tmux new-session -s windwos1 #创建新的session,session名为windwos1
上下分割:
tmux split-window #上下分割
左右分割:
按ctrl+a +%
tmux split-window -h
以上是关于tumx使用的一些常用快捷键
三、管理用户和组
理解用于管理用户和组的命令非常重要,因为您将在本书后面学习特权升级时使用这些信息。本章中的所有命令将在使用Kalil Linux(作为渗透测试的操作系统)时对您的约定有很大帮助。
用户命令
低权限用户在执行系统命令前必须带sudo(且低权限用户必须在sudo组中才能执行sudo)。如果要使用sudo命令,系统将要求您输入帐户密码。例如,如果您想执行fdisk系统工具来显示kali连接的设备,则使用以下命令:
fdisk -l
Kali Linux操作系统安全命令
要向Kali添加一个新用户(在本例中,Gus将是用户),请使用useradd命令。同时,你需要用-G选项选择sudo组,用-s选项选择shell类型:
useradd -m [用户名] -G [组名称 ] -s [脚本类型]
对于我们的例子,它看起来像这样:
useradd -m Gus -G sudo -s /bin/bash
密码设置
接下来,让我们使用passwd命令为新用户设置一个密码:
passwd [要更改密码的用户名]
passwd Gus
切换用户
要切换到我们之前创建的新用户Gus,我们使用su命令(注意用户如何在终端窗口文本中更改并变为Gus@kali):
su Gus
要使用sudo命令了解当前用户的能力,需要执行sudo -l来获得正确的信息:
sudu -l
查看当前用户信息
使用id命令查询当前用户信息。
id
列出登陆用户
要列出当前登录的用户,请使用w或who(详细信息较少):
要删除一个用户(在这个例子中我们要删除的用户是test),执行userdel命令:
删除 test 账户
sudo userdel test
要列出最近登录Kali系统的用户,使用最后一个命令:
last
请注意,Kali中的所有用户都存储在一个配置文件/etc/passwd中使用cat命令显示其内容:
cat /etc/passwd
前面的命令将列出所有用户,甚至包括系统用户。为了过滤内容并限制人类用户的结果,在grep命令中使用|将输出筛选:
cat /etc/passwd | grep "/bin/bash"
把存在/bin/bash目录的用户筛选出来
组织的命令
添加一个新的组
在Kali Linux中添加一个新组,使用groupadd命令:
groupadd [新组名]
sudo groupadd hackers #创建了一个名叫hackers的组
将用户加入组
要将用户(本例中为Gus)加入到我们之前创建的hackers组,请执行usermod命令:
usermod -aG [组名] [用户名]
sudo usermod -aG hackers Gus
要列出在Kali Linux中创建的所有组,请打开文件/etc/group.同样,使用cat命令完成工作
cat /etc/group
在Kali管理密码
您可能希望像以前那样恢复根用户。要恢复此帐户,您需要首先设置其密码。要修改用户密码,必须使用passwd命令:
sudo passwd root
现在要使用强大的root帐户,您必须使用su命令切换用户:
sudo su root
从现在开始,在登录屏幕上,您可以选择根帐户而不是非根用户。最后,要列出Kali Linux中的所有用户凭据,可以在/etc/shadow文件中显示它们。使用grep命令获取Gus的用户钥密:
cat /etc/shadow | grep "Gus" #查看Gus用户的钥密
四、操作文件和文件夹
Kali Linux中的文件和文件夹管理
显示文件和文件夹
列出任意目录中的文件和子文件夹,使用ls命令完成工作(我经常使用它来获得更简单的输出)。但是有时候,ls命令本身是不够的,所以您可能需要添加几个选项来获得更好的输出清晰度。你可以使用的第一个选项是
-a命令(包括隐藏文件在内的所有内容)
第二个选项是-l命令(格式化列表):
ls
ls -a #显示隐藏文件
ls -l #显示文件详细信息
请注意,文件名前以点字符开头意味着文件名是隐藏的(例如,.bash_history)。此外,在权限之前的最左边,字母d表示它是目录而不是文件。最后,你可以通过指定目标文件夹的路径列出与当前目录不同的另一个目录的内容:
ls -la [目标文件名称]
权限
对于权限,同样的原则适用于文件或目录。为了简化它,
将权限分为三类:
读 R
写 W
执行 X
权限语法为下
使用者权限:r/w/x 同组用户:r/w/x 所有人:r/w/x/
让我们来看一个实际的例子。假设你创建了一个简单的shell脚本来打印“test”(使用echo命令),并且你想要显示它的权限(注意这个例子使用了终端窗口内的root用户):
echo 'echo test' >test.sh
ls -la |grep 'test.sh'
从前面的输出结果中,我们可以看到以下内容:对于root用户,由于一开始就有rw,所以可以读写。对于同组用户,他们只能读取这个文件。对于系统上的其他人,他们只能读。
假设你想执行这个文件,你是创建它的人,并且您是主根。你认为你能够做到这一点吗(根据以前root用户的权限)?
./test.sh
实际上,根没有执行它的权限,要根据公式(r=4, w=2, x=1)更改前一个文件的权限,使用如下命令:
chmod 774 test.sh #为这个文件 添加774的权限
ls -la | grep 'test.sh' #筛选出 test.sh这个文件
./test.sh
还有另一种快捷方式,它允许执行文件,而不是计算每个文件的数量。我们只需要在chmod命令中添加+x(但是要小心,因为当你执行这个命令时,你也会给每个人执行权限):
chmod +x test.sh
ls -la | grep 'test.sh' #筛选出 test.sh这个文件
在Kali操作文件
要在Linux中创建一个空文件,可以使用touch命令:
touch [文件名称]
要快速将文本插入到文件中,可以使用echo命令。在本章的后面,你将学习如何使用文本编辑器编辑文本文件:
echo 'text to add' > [文件名]
要了解Linux系统中的文件类型,可以使用file命令:
file [文件名]
让我们在终端窗口中将所有命令集合在一起:
touch test.txt #创建名为test.txt的文件
echo test > test.txt #将test写入test.txt文档
file test.txt #查看文件格式
要在Kali中复制一个文件,必须使用cp命令来完成这项工作:
cp [源文件路径] [目标文件路径]
cp test.txt /home/Gus #将test文件 复制到 /home/Gus
ls /home/Gus #查看目录下文件
要在Windows操作系统中移动文件,必须使用mv命令:
mv [源文件路径] [目标文件路径]
mv test.txt Documents/ #将文件移动到Documents目录下
ls Documents/ #查看目录中的内容
要删除刚才在kali主目录中复制的文件,使用rm命令:
rm [你要删除的文件名]
rm /home/Gus/test.txt #删除目录下文件
要重命名前一个文件,我们使用与移动文件相同的mv命令:
mv [原文件名] [新文件名]
#先切换到指定目录下
cd /home/Gus/Documents
#将目录下的test.txt 修改成hello.txt
mv test.txt hello.txt
#查看文件
ls
搜索文件
在Kali中有多种搜索文件的方法;三个常见的命令是
locate、find和which。
可以使用locate命令快速定位要查找的文件。您需要知道locate命令将其数据存储在数据库中,因此在进行搜索时,您将更快地找到结果。首先,您需要使用updatedb命令为locate命令更新数据库:
$updateab
现在,我们可以使用locate命令开始搜索:
locate [要搜索的文件名]
locate test.sh
可以对locate命令使用-n开关,过滤输出结果的数量:
locate -n [i] [搜索规则]
locate *.conf -n 3 #搜索以.conf为后缀的文件,展示3条
如果使用grep命令来筛选的话会更精确
要查找应用程序路径,请使用which命令。这个命令将使用$PATH环境变量来查找您要查找的结果。例如,要查找Python的安装位置,您可以执行以下操作:
which [应用程序名称]
which python
Linux系统将使用$PATH执行二进制文件,理解这一点很重要。如果你在终端窗口中运行它,它会显示你应该保存你的程序/脚本的所有目录(如果你想在不指定路径的情况下执行它们):
$PATH
让我们来看一个实际的例子;我保存了test.sh文件在我的主目录下。由于主文件夹不在$PATH变量中,这意味着我只能在指定路径的情况下执行它,否则它将失败:
test.sh
./test.sh
查找具有更灵活选项的文件的另一个有用命令是find命令。使用查找工具的优点是,它允许添加更细粒度的过滤器来查找您要查找的内容。例如,要在根目录下查找file1 .txt,使用如下命令:
find /root -name "file1.txt"
假设您想列出系统中的大文件(1GB以上):
find / -size +1G 2> /dev/null
注意:在 后面附加 2> /dev/null 能清除打印结果和过滤掉错误
下面是一个方便的查找过滤器,用于在Linux中搜索setuid文件以进行特权升级(您将在第10章“Linux特权升级”中了解所有细节):
find / -perm -u=s -type f 2>/dev/null
文件压缩
压缩有多种方法(压缩算法)来压缩文件;我将在本节中介绍的扩展名为.tar、.gz、.bz2和.zip。
下面是压缩和提取不同类型存档的命令列表:
举例
使用tar扩展压缩:
tar cf compressed.tar [生成压缩包的名字]
tar xf compressed.tar #解压缩
练习
从文件中创建压缩后的tar.gz文件:
tar cfz compressed.tar.gz compressed
解压压缩后的tar.gz文件:
tar xfz compressed.tar.gz
创建压缩后的。txt.gz文件。
gzip file.txt > compressed.txt.gz
解压压缩后的tar.gz文件:
gzip -d compressed.tar.gz
让我们提取rockyou。 tar .gz 文件最初是在 Kali 中压缩的:
gzip -d /usr/share/wordlists/rockyou.tar.gz
文件获取
创建压缩的.tar。 bz2 文件:
tar xfj compressed.tar.bz2 compressed
tar xfj compressed.tar.bz2
Zip压缩
zip compressed.zip compressed
unzip compressed.zip
在Kali操作目录
要打印当前工作目录,必须使用pwd命令来完成这项工作(不要将pwd命令与passwd命令混淆;这是两个不同的东西):
pwd #查看当前所在目录
你可以用..返回一个向上的目录。事实上,你可以添加任何你想要的,直到你到达系统根目录,/:
cd ../../ #一个../表示向上个目录退一级
作为最后一个提示,对于cd命令,您可以使用~字符直接转到当前用户的主目录:
cd ~
要在根目录下创建一个名为test的目录,使用mkdir命令:
mkdir [要创建的目录名]
要复制、移动和重命名目录,请对文件命令使用相同的命令。有时你必须添加-r(它代表递归)开关来涉及子目录:、
cp -r [源目录路径][目标目录路径]
mv -r[源目录路径][目标目录路径
mv -r[源目录路径][目标目录路径
要删除一个文件夹,必须在rm命令中添加-r开关来完成任务:
rm -r [要删除的文件夹路径]
在Kali Linux中管理文本文件
了解如何在Kali Linux中处理文件是您在工作中经常遇到的问题。在本节中,您将了解可用于完成这项工作的最常用命令。有许多方法可以在终端窗口上快速显示文本文件。90%的情况下,我使用cat命令来实现这个目的。如果你想显示一个大的文本文件(例如,一个密码的字典文件)怎么办?然后您有三种选择:头、尾和多命令和少命令。重要的是要注意,您可以使用grep命令过滤掉您正在使用的结果找的。例如,识别文件内部的gus123这个词。TXT的字典文件,您可以执行以下操作
/usr/share/wordlists# cat rockyou.txt | grep gus123
head命令将在文本文件中从顶部开始显示7行,并且您可以通过添加-n选项指定要显示多少行:
head -n [i] [文件名称]
head -n 7 rockyou.txt #显示文件中的前7行数
tail命令将显示文件中的最后7行,您也可以使用-n开关指定行数:
tail -n [i] [文件名称]
tail -n 7 rockyou.txt
要浏览大文件,请使用more命令。您需要按回车键或键盘上的空格键向前走一步。按B键可以让你后退。最后,要搜索文本,按/(正斜杠)和Q键退出:
more [文件名称]
less 就像 more 命令;它允许您查看文件的内容并在其中导航。 more 和 less 之间的主要区别在于 less 命令比 more 命令更快,因为它不会立即加载整个文件,并且它还允许您使用 Page Up/Down 键在文件内导航:
less [文件名称]
要对文本文件进行排序,只需使用sort命令:
sory [文件名称] > [已排序的文件名称]
sort file1.txt >file1_sorted.txt
要删除文本文件中的重复项,必须使用unig命令:
uniq [文件名称] > [已经去掉重复的文件名称]
uniq file2.txt > file2_uniq.txt
您将学习如何使用sort和unig命令一起创建自定义密码字典文件。
Vim编译器和nano编译器
对于终端窗口,我们有两个流行的文本编辑器,vim和nano。大多数情况下,您可以在文本编辑器中处理以下四个任务:
打开/创建文本
修改文本
保存并退出
Nano比vim容易。你可以选择其中的任何一种;这是个人喜好的问题。
要打开/创建一个文本文件,使用以下命令:
vim [文件名称]
nano [文件名称]
打开文本文件后,您需要开始进行更改:
在nano中,你可以自由输入你的文字。
在vim中,您需要按键盘上的I键以进入插入模式。
如果你想在你的文件中搜索一个特定的单词,使用这些命令:
在nano中,按Ctrl+W。在vim中,这取决于你所处的模式。
如果你在插入文本模式,然后按Esc键,然后按/后面跟着你想要搜索的单词。
如果你是在普通模式下,然后按/跟你想要搜索的单词。
保存并退出文本编辑器
在nano中,按Ctrl+O保存,按Enter键执行保存任务,然后按Ctrl+X退出。
在vim中,首先确保您处于正常模式(如果不是,然后按Esc键返回正常模式),然后使用:wq。w是“写”,q是“退出”。
搜索和过滤文本
在文本文件的世界中还需要学习的一件事是搜索机制,搜索和过滤文本的方法有很多种,但流行的有以下几种:
grep
awk
cut
我经常使用grep命令。filter命令的结构如下:
grep [选项] [模式] [文件名称]
假设您想在从根系统(/)开始的所有文件中搜索单词password。
grep -irl "password"
以下是这些选项的含义:
-i:忽略大小写并包含所有大写/小写字母
-r:在子文件夹中递归搜索
-l:打印过滤器匹配的文件名
再举一个例子,假设你想计算单词password在字典文件rock .txt中出现的次数:
cd /usr/share/wordlists/ #切换到目录
grep -c "password" rockyou.txt #筛选 password个数
awk命令是过滤文本文件的高级工具,它使用以下模式:
awk /[搜索条件]/ [选项] [文件名称]
例如,假设你想在/etc/ passwd文件中搜索文本root:
awk '/root/' /etc/passwd
让我们再进一步接受挑战吧。假设你想在/etc/shadow文件中提取root的密码(你可以先打印整个内容,这样你就可以看到前后的差异):
awk '/root/' /etc/shadow
awk -F ':' '/root/{print $2}' /etc/shadow
我们知道影子文件使用 : 分隔符来分隔各个部分,因此我们使用 -F' 来完成工作。然后,我们告诉工具仅打印分隔符的第二部分(打印 $2),即哈希密码内容。另一种流行的提取子字符串的方法是 cut 命令。在下面的示例中,我们使用 cat 命令打开影子文件;然后使用 grep 命令过滤掉 root 帐户,最后使用提取密码的 cut 命令:
cat /etc/shadow | grep "root" | cut -d ":" -f 2
安全外壳
SSH协议是一种安全连接,允许您在Linux主机(在本例中是Kali)上远程执行命令。缺省情况下,SSH是一个TCP协议,工作端口为22。有两种方法可以连接到远程SSH服务器:
使用用户名/密码凭证
使用公钥/私钥(无密码)
带凭据的SSH
让我们首先从使用密码的方法开始。缺省情况下,除root帐号外的所有用户帐号都可以远程登录SSH。
ssh 用户名@kali的ip 地址
我这边是用的xshell。刚开始可能 连接不上,会出现22号端口被占用的现象,解决方法
Xshell连接(虚拟机)VMware work station 22(端口)错误的解决方案_xshell无法连接22端口_YJlio的博客-CSDN博客我这个已经是链接好的状态了
无密码SSH
使用公钥和私钥,远程用户可以通过SSH方式登录。这种方法比密码方式更安全,因为没有人能够使用暴力破解技术远程进入您的服务器。当涉及到公钥/私钥机制时,存在很多误解。在接下来的步骤中,我从头开始开发了一个示例,以便您可以直观地了解实际情况:以下是客户机机器信息:
以下我用了 两台机器做测试 一台名字叫做yanglijie另外一台是Gus
要实现两台主机之间免密登陆
首先在yanglijie的终端生成钥密
ssh-keygen -t rsa #-t表示类型选项,这里采用rsa加密算法
将yanglijie终端生成好的钥密复制到Gus
ssh-copy-id Gus@192.168.247.128
这样两台主机之间就不用输入密码了
Kali Linux系统管理
使用Kali Linux作为渗透测试工具,必须知道如何处理它的系统,包括如何启动Apache web服务器或检查其状态。这样的例子不胜枚举。不要担心,稍后我们将介绍您作为渗透测试人员会遇到的最常见的场景。
Linux主机信息
hostname #查看主机信息
如果您想更改Kali主机名该怎么办?然后你需要编辑它的配置文件/etc/hostname(输入你想要的计算机名,不要忘记保存并重启你的主机)。
Linux操作系统信息
了解Linux主机的操作系统信息对于权限升级至关重要。这样您就可以知道所使用的版本是否容易受到特权升级的攻击(我们将在第10章中详细讨论这个主题)。为了显示Linux操作系统的操作系统信息(在我们的例子中是Kali Linux),我使用uname命令,同时显示/etc/issue配置文件的内容:
uname -a #查看系统信息
cat /etc/issue #查看issue目录
Linux硬件信息
有时,您可能会使用与您的PC或VM硬件相关的特殊命令。要获取Linux主机的CPU信息,需要打开/proc/ cpuinfo:
cat /proc/cpuinfo
要获取您的Kali主机的内存条信息,那么您需要打开配置文件/proc/meminfo:
cat /proc/meminfo
要显示附加的设备(例如,磁盘驱动器,分区等),那么您可以选择两个命令:fdisk(显示更多信息)或lsblk:
fdisk -l
lsblk
要显示USB设备的列表(例如,鼠标,键盘,u盘等),那么你必须执行1susb命令:
lsusb
要将所有挂载的目录显示到文件系统中,需要执行mount命令:
mount
管理运行中的服务
服务是可以在您的Kali Linux机器上运行的服务器,例如SSH, web, FTP等。渗透测试中的一个常见任务是在您的Kali上运行web服务器,以便您可以在获得远程shell后将文件传输到受害机器(我将在本书后面详细介绍)。因此,例如,在您的Kali Linux上启动web服务器(供您参考,这不是启动服务的唯一方法,但这是我最喜欢的方法,因为它很容易记住):
service apache2 start #启动apache2
以下是关于管理服务您需要了解的其余命令:
获取服务的状态(启动、停止):
service [服务名称] status
systemctl status [服务名称]
启动服务:
service [服务名称] start
systemctl start [服务名称]
停止服务服务器。
service [服务名称] stop
systemctl stop [服务名称]
重新启动服务。
service [服务名称] restart
systemctl restart [服务名称]
启用服务在启动时自动启动。
systemctl enable [服务名称]
禁用服务在启动时自动启动。
systemctl disable [服务名称]
包管理
在更新Kali Linux系统之前需要知道的第一件事是,Kali存储库的配置文件位于/etc/apt/sources.list/
cat /etc/apt/sources.list
要更新Kali Linux系统(如Windows update),首先执行update命令,然后执行upgrade命令。请注意,这两个命令将使用先前的配置文件下载并安装必要的文件:
sudo apt update
sudo apt upgrade -y
我们在升级命令中使用-y选项来忽略要求输入的提示。换句话说,我们只是提前说好。upgrade和update命令的区别是什么?这是一个令人困惑的初学者问题,我在这里帮助你开始使用这两个命令综上所述
update命令只会将包列表更新为最新版本,而不会安装或升级包。另一方面,
upgrade命令将升级和安装已经安装的包的最新版本(使用update命令)。
现在,要一起使用这些命令,你必须在两者之间使用&&,它最终会运行第一个命令,当它完成后,它会运行第二个命令:
sudo apt update && apt upgrade -y
要从一个版本完全升级到另一个版本,请在执行update命令的同时执行full-upgrade命令。
apt update && apt full-upgrade -y
现在,要列出Kali Linux上安装的所有软件包,您必须使用dpkg命令:
dpkg -l
在Kali上安装一个新的软件有两种常用的方法。
第一个是apt install命令,
apt install [软件包的名字] -y
第二个是dpkg(我只在下载扩展名以.deb结尾的文件时使用后者)。
dpkg -i [文件.deb]
在一些软件包中,它们会要求你使用configure/make安装方式,如果是这种情况,那么使用以下命令(你必须在应用程序目录中):
./configure && make && make install
如果你想从你的Kali系统中删除一个现有的应用程序,那么你可以使用apt remove命令:
apt remove [包名]
我们如何找到包名?假设您想要安装一些尚未安装在Kali上的东西。然后可以使用以下命令搜索存储库包:
apt-cache search keyword
最后,如果你想安装一个包,但你不确定这个包的名字是否存在于存储库中,那么你可以使用apt-cache show命令:
apt-cache show [软件名]
流程管理
我最喜欢的终端窗口工具之一是htop,它列出了Kali上所有正在运行的进程。默认情况下,Kali上没有安装它,所以要安装它,我们使用apt install命令:
apt install htop -y
安装完成后,你可以运行htop命令:
htop
另一种获取当前运行进程列表的方法是使用ps命令:
ps -A
ps -u
要终止一个进程,首先需要确定它的PID;然后你可以使用kill命令来完成任务:
kill [进程]
如果系统不允许你杀死它,那么你必须使用-9开关强制它关闭:
kill -9 [进程]
Kali Linux中的网络
在本节中,您将有机会了解Kali Linux中网络的基础知识。在本书的后面,我们将回到有关网络的更高级的主题,因此请确保理解并掌握本节中的内容。
Kali组网命令
网络接口
您必须是网络专业人士才能在渗透测试职业中生存。如果您要执行网络基础设施渗透测试,这是这项工作的支柱之一。PC 主机具有用于与网络连接的内部 IP 地址,并且具有用于与外界通信的公共 IP 地址。后者是您的家庭路由器的使命,您不在本地主机上进行本地管理。另一方面,您必须维护内部网络 IP 地址,这些地址要么是静态的(您定义的),要么由 DHCP 服务器(通常是您的家庭路由器)自动分配。
IPv4私有地址范围
IPv4的内部IP地址(即私有IP地址)有多个范围:A、B和C类。
A 类:10.0.0.0 至 10.255.255.255 或 10.0.0.0/8(最多 16,777,214 台主机) B 类:172.16.0.0 至 172.31.255.255 或 172.16.0.0/12(最多 1,048,574 台主机) C 类:192.168.0.0 至 192.168.255.255 或 192.168.0.0/24(最多 254 个主机)
最大的范围是适用于企业的 A 级,但您也可以在家中使用。 (没有人会阻止你这样做,你猜怎么着?我自己将它用于我的家庭网络。) 第二个,B 类,适用于小型/中型/大型公司(取决于主机数量)。 三是C级;该范围有限,但适合家庭用户和小型办公室/家庭办公室 (SOHO) 环境。让我们快速浏览一下 Kali 主机 IP 地址。要获取有关网络接口的信息,请执行流行的 ifconfig 命令(请注意,最近已开始使用 ip addr 命令而不是 ifconfig)。根据图,我们有两个网络接口。顶部的第一个,etho,是将我的 Kali 主机与内部网络连接起来的以太网适配器。如果我们有第二个以太网适配器,那就是 eth1。 (请注意,如果您在主机上使用无线适配器,那么您将看到 wlano、wlan1 等)
ip addr
关于我们的以太网适配器精神,有两个重要事实需要了解。首先,inet 10.0.0.246 代表 DHCP 服务器自动分配的 Kali 主机 IP 地址。第二部分是网络掩码,这意味着我们使用 /24 子网;换句话说,我们只需要在此 IP 范围内分配 254 台主机。第二个接口是lo,代表本地环回;您永远不会碰它,因为网络基础设施需要它才能正确运行。您会遇到两个常见的其他接口;第一个是无线接口(如果您通过无线方式而不是有线方式连接)。第二个是 VPN 接口(如果您连接到远程 VPN 服务器)。
静态IP寻址
我的ip地址设置为192.168.247.128 255.255.255.0
DNS
DNS (Domain Name System)用于将域名转换为IP地址。例如,您只需键入https:// baidu.com,而不是键入https://172.217.13.132。问题是,我是怎么得到IP地址的?在终端窗口中使用host命令:
host [域名]
host www.baidu.com
DNS 分为两类:公共和私有(如 IP 地址)。 Google DNS 地址是公开的,因此任何连接到互联网的人都可以访问 Google 的网站。另一方面,我们可以为本地 Intranet 使用私有 DNS。可以使用 DNS 服务器(例如 Microsoft Windows Server)或您的路由器(如果它有内置 DNS 服务器)来设置。在我的家庭网络中,我定义了一个名为 ksec 的域。当地的。网络上的每台主机都会有一个与其IP地址相对应的域名。例如,我的文件服务器域名是ds-server.ksec。 local(因为服务器主机名是ds-server),路由器/DNS服务器将管理所有DNS A记录(A记录是IPv4地址和域名之间的映射
如果你指定一个不存在的DNS记录,你会得到一个错误消息(这对于暴力破解DNS记录很有用):
host ds-server.ksec.local
请注意,您可以在Kali主机中添加自己的静态DNS记录。该文件位于/etc/hosts,在这里您可以将任何域名重定向到任何活动IP地址。(这就是DNS中毒的工作原理;黑客将操纵A记录指向他的服务器IP地址。)
cat /etc/hosts
在后面更多地了解这个主题,将了解DNS强制攻击和区域传输是如何工作的。
建立连接
要在Kali主机上显示活动的网络连接,必须使用netstat命令工具来完成这项工作。您将在开发后阶段使用该命令来检查Linux主机与其网络的通信情况。在Kali主机上,我们启动了SSH(端口22)和web(端口80)服务;netstat工具将允许我们看到它们正在监听传入的连接:
netstat -antu
有必要了解每个选项的含义:
-a/--all:显示所有套接字。请注意,此选项非常冗长;因此,我们需要将其与以下选项结合起来(以过滤输出)。
-n/——numeric:不解析名称。在前面的命令中,你会看到IP地址后面跟着端口号。如果我不使用-n选项,那么工具将尝试找出服务名称(例如,对于80,将改为HTTP)。
-t/——tep:显示TCP连接。
-u/——udp:显示udp连接。
文件传输
在Kali Linux中有很多传输文件的方法。首先,要从internet/intranet下载文件,您的工具库中有两个工具:wget和curl。在下面的例子中,我们使用这两个工具从我的一个本地web服务器下载密码文本文件:
wget [链接]
如果想从github上下载代码
git clone [github]
使用SSH协议安全传输文件的另一种方法是scp命令工具。重要的是要理解,您需要启动SSH服务才能使此过程正常工作。与往常一样,您将看到一个实际示例,说明从源到目标的复制工作流是如何工作的。首先,我们将在远程Ubuntu Linux主机上启动SSH服务器,这是您将下载我的文件的地方。(缺省情况下,未安装SSH服务器
在Ubuntu。要完成这项工作,请执行命令$sudo apt install openssh-server -y。在这个例子中,我们正在从远程Ubuntu服务器下载一个password .txt文件:
sudo apt install openssh-server -y
要完成下载文件的工作,可以使用scp命令,格式如下(末尾的点表示我们正在将文件复制到Kali中的当前目录中):
scp [对方用户名@对方ip: /对方文件路径]
接下来,我们将尝试再次使用scp命令从我的Kali推送一个名为test.txt的文件到远程SSH服务器(我们将在Ubuntu中复制该文件到用户的主目录):
scp [文件路径] [她的用户名@她的Ip: /要存储到的路径]
scp /home/Gus/test yanglijie@192.168.247.129: /home/yanglijie
在后面,将看到更多传输文件的方法,如Samba、FTP等。就目前而言,你只是了解了你需要注意的最常见的方式。
总结
本章要学习这么多命令,是不是有点不知所措?掌握终端窗口使用的秘诀是通过练习。熟悉终端窗口需要一段时间,但一旦进入,您就会爱上它。你的角色主要是渗透测试,本章的目标是让你轻松掌握 Kali Linux 系统。本章介绍了您在交战过程中会遇到的必要工具和命令。最后,您不是 Linux 系统管理员,但在网络安全方面,您需要跳出框框思考。