第一章:战前准备—环境安装

本文详细介绍了Kali Linux的安装配置过程,包括VMware网络模式配置、系统更新、Metasploit框架锁定、SSH服务配置以及系统源的设置。此外,还讲解了基础的shell、vim编辑器使用,以及常见的Linux命令,如echo、date、poweroff、top、ifconfig、uname、who等,为安全分析和渗透测试提供了基础操作指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本笔记来自掌控安全kali基础课程


第一章:战前准备—环境安装

第一节:kali快速安装配置及常见问题

一、VMware网络配置

1、bridged(桥接模式)

虚拟机和主机好比在同一个网络环境下的两台电脑;

2、NAT(网络地址转换模式)

NAT模式虚拟机通过主机进行联网;

3、Host-Only(主机模式)

主机模式将虚拟机与外网隔开,只能让虚拟机和虚拟机之间联网。

二、kali系统更新

1、kali为什么要更新?
(1)系统源

源配置(软件源)概念:源就是来源。就是你安装软件时,程序从哪里获取软件包(安装程序在你的机器上,但需要安装的东西却在软件源服务器上)。其实你可以把他称为软件仓库。安装软件时,就是从仓库里面调取数据放在你的机器上。

(2)Linux下载软件的两种方式

①从源配置(软件源)所在服务器上通过特定命令获取JDK,Tomcat之类的软件包(推荐)

②从官网上下载软件包

(3)注意

第一次更新源的过程就相当于我们刚装好windows系统需要打补丁

2、选择不更新Metasploit

查看当前的系统中所有软件包状态
sudo dpkg --get-selections | more
可以找到metasploit-framework软件包,名为“metasploit-framework”


给metasploit-framework锁定当前版本不更新
sudo apt-mark hold metasploit-framework


查看当前己锁定的软件包
sudo dpkg --get-selections | grep hold


取消软件保留设置
sudo apt-mark unhold metasploit-framework

3、kali系统更新后出现问题

进入/user/share/metasploit-frame目录下
使用命令

gem install bundler
gem update --system

然后成功启动

三、配置kali系统源

1、kali系统更新源

(1)使用编辑器打开系统源文本
leafpad /etc/apt/sources.list


(2)填写成清华大学源
#清华大学
#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free


(3)使用更新命令
apt-get update && apt-get upgrade && apt-get dist-upgrade

四、SSH服务

1、简介

是目前较可靠,专为远程服务登录器和其他网络服务提供安全性的协议。

2、作用

能够操作远程服务器系统;

3、配置SSH服务

(1)使用编辑器打开ssh配置

leafpad /etc/ssh/sshd_config


(2)搜索:

#PasswordAuthentication yes (去掉注释)
#PermitRootLogin prohibit-password (去掉注释后面的并删除改为yes)


(3)使用命令行模式开启SSH服务

service ssh start


(4)查看服务开启状态

service ssh status


(5)登陆测试

使用xshell、putty等工具测试

五、kali工具包简介

1、信息收集:这类工具主要用来帮助我们收集目标的网站架构、网站脚本语言、网站信息泄露等


2、漏洞评估:这类工具都可以扫描目标系统上的漏洞,扫描主机漏洞,系统漏洞


3、漏洞利用:这类工具可以利用在目标系统中发现的漏洞,让我们针对性的去利用攻击


4、web应用:即与Web应用有关的工具,关于web方面的扫描器、爆破等工具


5、密码攻击:提供在线密码破解或者是离线的密码破解工具给我们使用

第二节:Kali Linux基础命令讲解介绍

一、shell

1、概念

在计算机科学中,shell俗称外壳(用来区别于内核),它类似于Windows的DOS,能够接受用户的命令并翻译给操作系统执行,是用户与操作系统(内核)之间的桥梁。

2、与终端的区别

终端:接收用户的输入,并且传递给shell程序,接收程序输出并展示到屏幕;


shell:接收并解析用户的命令给操作系统执行,将结果输出到终端;

二、vim编辑器

vim编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大程度不逊色于任何最新的文本编辑器。

vim具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;


vim可以当做vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息;


vim会依据文件扩展名或者是文件内的开头信息,判断该文件的内容而自动的执行该程序的语法判格式,再以颜色来显示程序代码与一般信息;


vim里面加入很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等,这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能;

(1)vi/vim编辑器模式

①命令模式(默认):刚进入vim的时候,默认就是命令模式,可以复制行,删除行等;

②输入模式:可以输入内容;

(2)模式转换

①使用insert键切换进入输入模式

②命令模式——>输入模式:

i:在当前光标所在字符的前面,转为输入模式;


I:在当前光标所在行的行首转换为输入模式;


a:在当前光标所在字符的后面,转为输入模式;


A:在光标所在行的行尾,转换为输入模式;


o:在当前光标所在行的下方,新建一行,并转为输入模式;


O:在当前光标所在行的上方,新建一行,并转为输入模式;


s:删除光标所在字符


r:替换光标处字符

(3)输入模式——>命令模式

ESC键

(4)关闭、保存文档

①shift键+:号

②命令模式下:

w:保存


q:退出


wq和x都是保存退出


q!:强制退出


w!:强制保存,管理员才有权限

(5)查找

普通模式:

/PATTERN:从当前位置向后查找

?PATTERN:从当前位置向前查找

三、Linux常见命令

echo命令:用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”

例如:

[root@linux test]# echo "11111"			 #输出11111

[root@localhost ~]#  echo -e "a\nb\nc"   
a
b
c

date命令:用于显示及设置系统的时间或日期,格式为“date[选项] [+指定的格式]”

例如

[root@localhost www]# date               #显示日期和时间
2013年 05月 04日 星期六 14:35:33 CST

[root@localhost www]# date -s '14:35:40' #设置时间
2013年 05月 04日 星期六 14:35:40 CST

poweroff命令:用于关闭系统,其格式为poweroff

例如

poweroff -f

top命令:显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率等,格式为“top[参数]”

例如

[root@linux ~]# top         #显示系统进程信息

[root@linux ~]# top -b      #以批处理模式显示程序信息

[root@linux ~]# top -S      #以累积模式显示程序信息

[root@linux ~]# top -n 2   #设置信息更新次数,表示更新2次后终止更新显示

[root@linux ~]# top -d -3   #设置信息更新时间,表示更新周期为3秒

[root@linux ~]# top -p 1138  #显示进程号为1138的进程信息,CPU、内存占用率等

ifconfig命令:用于获取网卡配置与网络状态等信息,格式为“ifconfig[网络设备] [参数]

例如

[root@localhost ~]# ifconfig   #处于激活状态的网络接口

[root@localhost ~]# ifconfig -a  #所有配置的网络接口,不论其是否激活

uname命令:用于查看系统内核与系统版本等信息,格式为“uname[-a]”

例如

[root@localhost ~]# uname -a     #显示系统信息 
Linux localhost.localdomain 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:23:01 EDT 2011 i686 i686 i386 GNU/Linux

[root@localhost ~]# uname -m     #显示系统类型,一般情况下,i386,i686是32位系统,X86,X86_64是64位系统
i686

[root@localhost ~]# uname -n     #查看主机名
localhost.localdomain

[root@localhost ~]# uname 
Linux

who命令:用于查看当前登入主机的用户终端信息,格式为“who[参数]”

例如

[root@localhost ~]# who    #显示目前登入系统的用户信息
tank     tty1         2013-05-10 08:29
tank     pts/0        2013-05-10 08:29 (192.168.56.1)

[root@localhost ~]# who -a   #显示目前登入系统的用户详细信息
           系统引导 2013-05-10 08:11
           运行级别 2 2013-05-10 08:11
登录     tty4         2013-05-10 08:11               814 id=4
登录     tty5         2013-05-10 08:11               825 id=5
登录     tty2         2013-05-10 08:11               842 id=2
登录     tty3         2013-05-10 08:11               845 id=3
登录     tty6         2013-05-10 08:11               852 id=6
tank     - tty1         2013-05-10 08:29 01:08        1395
tank     + pts/0        2013-05-10 08:29   .          1493 (192.168.56.1)

[root@localhost ~]# who -q #列出所有已登录用户的登录名与用户数量
tank tank
# 用户数=2

[root@localhost ~]# who -u  #列出已登录的用户
tank     tty1         2013-05-10 08:29 01:08        1395
tank     pts/0        2013-05-10 08:29   .          1493 (192.168.56.1)

[root@localhost ~]# who -r  #查看已登录的用户的级别
         运行级别 2 2013-05-10 08:11

[root@localhost ~]# who -b   #上次系统启动时间
         系统引导 2013-05-10 08:11

history命令:用于显示历史执行过的命令,格式为“history[-c]”

例如

[root@redhat ~]# history        #查看所有执行过的命令
    1  ls
    2  pwd
    3  fc -l
    4  history 
	
[root@redhat ~]# history 2      #显示2条
    4  history 
    5  history 2
	
[root@redhat ~]# !4             #执行编号是4的命令,注意感叹号
history 
    1  ls
    2  pwd
    3  fc -l
    4  history 
    5  history 2
    6  history 
	
[root@redhat ~]# history -c    #清除历史记录

last命令:用于列出目前与过去登入系统的用于相关信息

例如

[root@linux ~]# last -6      #6条登录记录 

[root@linux ~]# last –n 15   #15登录记录

[root@linux ~]# last -n 10 zhangy   #输出10条zhangy的登录记录

pwd命令:用于显示用户当前所处的工作目录,格式为“pwd [选项]”

例如

[root@rudder home]# pwd  #显示当前目录
/home

[root@web mail]# pwd -P   #目录是软连接,显示实际物理地址
/var/spool/mail

[root@web mail]# pwd -L   #-L显示,逻辑地址
/var/mail

cd命令:用于切换工作路径,格式为“cd [目录名称]”

例如

[root@localhost ~]# cd /home/    #切换到home目录
[root@localhost home]# cd -      #返回切换到home前的目录
/root
[root@localhost ~]# cd ../       #切换到上一级目录
[root@localhost ~]# cd ../../     #返回上上一层目录 

ls命令:用于显示目录中的文件信息,格式为“ls [选项] [文件]”

例如

[root@s01 dev]# ls -d */    #列出当前所有目录
block/  bus/   cpu/   fd/         input/   net/  raw/  snd/

第三节:kali Linux基础命令讲解介绍(二)

一、文本文件编辑命令

cat命令:用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”

例如

[root@localhost ~]# cat test        #普通输出
1111111111


2222222222

3333333333

[root@localhost ~]# cat -n test     #开头显示行号
     1  1111111111
     2
     3
     4  2222222222
     5
     6  3333333333
	 
[root@localhost ~]# cat -E test     #以$结束
1111111111$
$
$
2222222222$
$
3333333333$

[root@localhost ~]# cat -s test     #超过二个空行,合并成一个
1111111111

2222222222

3333333333

[root@localhost ~]# cat -ns test   #去空行,加行号
     1  1111111111
     2
     3  2222222222
     4
     5  3333333333

more命令:用于查看纯文本文件(内容较多的),格式为“more[选项]文件”

例如

[root@localhost zhangy]# more test.php        #查看文件

[root@localhost zhangy]# netstat -tpnl |more  #常用方式,分页显示

head命令:用于查看纯文本文档的前N行,格式为“head [选项] [文件]”

例如

[root@linux ~]# head /etc/passwd   #默认,显示开头前10行
 
[root@linux ~]# head -10 /etc/passwd   #显示开头前10行

[root@linux ~]# head -q -n 10 file1 file2 file3   #显示多文件开头前10行,并且不显示文件名的文件头

[root@linux ~]# head -n -10 /etc/passwd   #除最后10行外,显示剩余全部内容。

wc命令:用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”

例如

[root@localhost ~]# cat /etc/passwd |wc -l    #查看passwd文件有多少行
38

[root@localhost ~]# echo "aaa bbb ccc" |wc -w    #查看输出有多少个单词
3

[root@localhost ~]#  echo "12344" |wc -m  #查看输出有多少个字符
6

stat命令:用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”

例如

[root@www ~]#stat abc.ph
  文件:"abc.ph"
  大小:0               块:0          IO 块:4096   普通空文件
设备:801h/2049d        Inode:1200314     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2013-05-14 13:24:30.830729223 +0800
最近更改:2013-05-14 13:24:30.830729223 +0800
最近改动:2013-05-14 13:24:30.830729223 +0800
创建时间:-

touch命令:用于创建空白文件或设置文件的时间,格式为“touch[选项] [文件]”

例如

[root@linux ~]# touch test.php                    #将test.php的档案时间改为,当前时间,文件不存在建之

[root@linux ~]# touch -c -t 05061803 test.php     #将档案时间改为,5月6日18点3分

[root@linux ~]# touch -r abc.php test.php         #将test.php档案改成跟abc.php一样

mkdir命令:用于创建空白的目录,格式为“mkdir [选项] 目录”

例如

[root@localhost ~]# mkdir aaa   #创建目录

[root@localhost ~]# mkdir -m a=rw bbb   #创建指定属性的目录

[root@localhost ~]# mkdir -p 111/abc   #创建目录,父目录存在,建之

cp命令:用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”

例如

[root@localhost www]# cp -p test.rb /home/test   #将test.rb copy到test目录,并且保留原文件的属性

[root@localhost www]# cp -r Dir/ /home/test      #将Dir目录copy到test目录下

[root@localhost www]# cp -fr Dir/* /home/test    #将Dir下面的所有文件强制copy到test目录下

[root@localhost www]# cp test.rb{,.bak}          #备份test.rb,并在尾部加上.bak后缀

mv命令:用于移动文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”

例如

[root@linux ~]# mv abc abc.php  #将abc重命名为abc.php

[root@linux ~]# mv test.php{,.sh}  #将test.php增加后辍

file命令:用于查看文件的类型,格式为“file 文件名”

例如

[root@redhat ~]# file *              #查看当前目录下的所有文件类型
abc.sh:             awk script, ASCII text
abc.sh.bz2:         bzip2 compressed data, block size = 900k
ar_test:            directory
examples.desktop:   UTF-8 Unicode text
rec00001abc.sh.bz2: bzip2 compressed data, block size = 900k
test:               ASCII text
test.bz2:           bzip2 compressed data, block size = 900k

[root@redhat ~]# file abc.sh        #查看单个文件的文件类型
abc.sh: awk script, ASCII text

root@tnak-VirtualBox:/home/tnak# file -z test.bz2    #查看压缩文件的内部信息
test.bz2: empty (bzip2 compressed data, block size = 900k)

tar命令:对文件进行打包压缩或解压,格式为“tar [选项] [文件]”

例如

[root@ubuntu ~]# tar -czvf ar_test.tar.gz ar_test  #将ar_test文件打包并且压缩

[root@ubuntu ~]# tar zxvf ar_test.tar.gz         #解压

[root@ubuntu ~]# tar -tf ar_test.tar.gz          #查看包里面的文件信息

[root@ubuntu ~]# tar -cf all.tar *.jpg         #将当前目录所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名

[root@ubuntu ~]# tar -rf all.tar *.gif         #将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

[root@ubuntu ~]# tar -uf all.tar logo.gif          #更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思

[root@ubuntu ~]# tar -xf all.tar  				#解出all.tar包中所有文件,-x是解开的意思

[root@ubuntu ~]# tar -cjf all.tar.bz2 *.jpg         #压缩成.bz2的压缩文件

[root@ubuntu ~]# tar -xjf all.tar.bz2             #解压.bz2的文件

[root@ubuntu ~]# tar -czf all.tar.Z *.jpg        #压缩成.Z的压缩文件

[root@ubuntu ~]# tar -xZf all.tar.Z        		#解压.Z的文件

find命令:用于按照指定条件查找文件,格式为“find [查找路径] 寻找条件 操作”

例如

andy@ubuntu:~$ find ./ -name "null_*" -exec basename {} \; | sort   #搜索文件,并只显示文件名,以升序排列。

null_0
null_1
null_2
null_3
null_4
null_5
null_6
null_7
null_8
null_9

二、文件管理权限命令

1、使用chmod命令进行文件的权限修改

chmod [选项] <模式,模式…> <文件名…>

例如

[root@localhost ~]# chmod ugo+r nginx_bak.conf        #所有人皆可读取
[root@localhost ~]# chmod a+r nginx_bak.conf          #所有人皆可读取
[root@localhost ~]# chmod ug+w,o-w nginx_bak.conf     #设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
[root@localhost ~]# chmod u+x nginx_bak.conf          #创建者拥有执行权限 
[root@localhost ~]# chmod -R a+r ./www/      	      #将www下的所有档案与子目录皆设为任何人可读取
[root@localhost ~]# chmod a-x nginx_bak.conf          #收回所有用户的对nginx_bak.conf的执行权限
[root@localhost ~]# chmod 777 nginx_bak.conf          #所有人可读,写,执行

2、文件和目录的权限

Linux中文件和目录的权限有所不同

(1)文件的权限

r:可以读文件,数值为4


w:可以写文件,数值为2


x:可以执行文件,数值为1

(2)目录的权限

x、r:可以读取(cp)和查看(ls)目录的内容(即文件和目录),同时还需要可执行权限


x、w:可以在目录里创建文件(touch)和目录(mkdir)和删除文件(rm)和目录(rmdir),同时还需要可执行权限;


x、x:可以进入目录(cd)和执行文件,实践过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值