Linux kali的基本使用
1、 Linux-kali
Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。
Kali Linux预装了许多渗透测试软件,包括nmap 、Wireshark 、John the Ripper,以及Aircrack-ng.[2] 用户可通过硬盘、live CD或live USB运行Kali Linux。Kali Linux既有32位和64位的镜像。可用于x86 指令集。同时还有基于ARM架构的镜像,可用于树莓派和三星的ARM Chromebook
下载:https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/
账号和密码都是kali
2、配置
2.1 安装虚拟机open-vm-tools-desktop模块
sudo apt-get install open-vm-tools-desktop
2.2 设置中文
sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy
sudo dpkg-reconfigure locales
看到有*的空格取消
拉到最下面找到 zh_CN.UTF-8 选择字符 zh_CN.UTF-8
重启 reboot
2.3 安装python3的pip
sudo apt-get install python3-pip
有可能会安装失败
解决pip3 超时下载或失败
# python3的pip3默认源太慢,所以我们为了提升使用效果,通常选择国内源。
# 其实方法很简单,脚本如下:
mkdir -p ~/.pip
vim ~/.pip/pip.conf
# 然后将下列的内容写入~/.pip/pip.conf即可。
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
然后执行
sudo apt-get update
pip3 -V
如果还不行就需要换源
2.4 更新源
先执行这两步
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
然后在打开的vim窗口里按i
键,光标移动到最后复制下面内容,把阿里云的下面的两个的注释打开,然后按ESC
,vim窗口下面的insert
消失,输入:wq
保存,然后重新下载pip3
#阿里云
#deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
#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
#浙大
#deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
#deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
保存完之后的一些其他操作
apt-get update 更新系统
apt-get upgrade 升级已安装的所有软件包
apt-get dist-upgrade 升级软件 会自动处理依赖包
vim 编辑器
sudo 使用特权 root权限
:wq 保存
3、常用命令
id
:查看当前用户idpasswd
:修改密码passwd root
:修改root用户密码date
:显示系统日期sudo
:后面加命令就可以以管理员权限执行apt-get update
:更新软件列表,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑,在软件包管理器里看到的软件列表都是通过update命令更新的apt-get upgrade
:更新软件,这个命令会把下载的软件列表里的软件与本地安装的软件对比,如果反向本地安装的版本低,就会提示更新apt-get dist-upgrade
:更新软件,upgrade
在更新的时候如果发现有其他依赖受到影响就不会更新,而dist-upgrade
会去尝试更新,所以dist-upgrade
是会有点风险的clear
:清屏reboot
:重启apt-get install xxxxx
:安装某个依赖包apt-get autoremove -purge 软件名
:删除包及其依赖的软件包+配置文件apt-get install 模块名
:安装模块firefox
:火狐浏览器打开shutdown -h now
:立刻关闭系统init 0
:关闭系统su -l
:切换登录用户,比如切换到root用户sudo su -l root
就切换了,想退出的话输入logout
logout
:注销
4、系统信息
arch
:显示机器的处理器架构uname -m
:显示机器的处理器架构,同上uname -r
:显示正在使用的内核版本cat /proc/version
:显示内核版本cat /proc/net/dev
:显示网络适配器及统计cat /proc/cpuinfo
:显示cpu info的信息cat /proc/mounts
:显示已加载的文件系统man + 某个命令
:可以查看这个命令的帮助文档,比如man ls
或者ls --help
5、文本或文件夹操作
5.1 文件
- 读取文件:
cat 文件名
比如cat /etc/passwd
less /etc/passwd
more /etc/passwd
- 解压和压缩
- 创建一个文件
touch t.txt
压缩gzip t.txt
- 解压:
gunzip t.txt
- 压缩一个文件夹
mkdir test
,压缩tar -zcvf test.tar.gz test
- 解压:
tar -zxvf test.tar.gz test
- zip压缩:
zip -q -r test.zip test
- zip解压:
unzip test.zip
- 创建一个文件
- 删除
rm -f 文件
:删除文件rm 文件夹名
:删除文件夹rm -rf 文件/文件夹
:删除文件夹及其目录下的文件rm -d
:清空目录
5.2 文件夹
cd
:移动目录,比如cd ..
退回上一级mkdir test
:创建一个test文件夹mkdir -p
test/t/t/t:递归创建文件夹touch t.txt
:创建一个t.txt文件cp
:复制命令,如cp t.txt t1.txt
mv
:移动命令,如mv t1.txt t2.txt
,相当于给t1改名mv -r
:如果文件夹里面有文件,使用-r
参数ls
:显示文件和文件夹名ls -a
:显示所有文件和文件夹 包括隐藏ls -l
:显示文件和目录的详细资料pwd
:显示当前工作路径
文件和文件夹的一些命令是互通的。
5.3 其他
-
which+软件名
:可以查出软件的目录在哪 -
./+文件名或apt-get+文件名
:安装文件
6、vi编辑器
vi编辑器是系统自带的,它有三种状态
- 命令模式
command mode
:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 - 插入模式
insert mode
:只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 底行模式
last line mode
:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串,列出行号等
vi编辑器的使用
-
打开一个文件
vi filename
:打开或新建文件,并将光标置于第一行首.vi t.txt
vi +n filename
:打开文件,并将光标置于第n行首vi +filename
:打开文件,并将光标置于最后一行首
-
退出,如果不在命令模式下,按
esc
退到命令模式下:wq
:退出并保存:q!
:退出并忽略更改:e!
:放弃所有修改,并打开源文件:w
:保存修改
-
编辑,前提在命令模式下
i
:按i
键进入编辑模式,在当前位置前插入I
:在当前行首插入a
:在当前位置后插入A
:在当前行尾插入o
:在当前行之后插入一行O
:在当前行之前插入一行
-
查找 ,在命令模式下
/test
:查找test,按n查找下一个。按N查找上一个?test
:查找test,反向查找
查找很长的词,可以用光标移动到该词上,按
*
或#
进行搜索,*
相当于/
,#
相当于?
-
删除,在命令模式下
dd
:删除当前行2dd
:删除2行
-
拷贝,在命令模式下,拷贝有两个操作。一个是复制一个是粘贴
yy
:拷贝当前行nyy
:拷贝当前行后开始的n行,比如2yy
拷贝当前行及下一行p
:在当前光标后粘贴
-
区块拷贝,拷贝一部分
- 将光标移动到要复制的文本开始的地方,按
v
进入可视模式 - 将光标移动到要复制文本结束的if,按
y
复制,此时会自动定位到开始的位置,并退出可视模式 - 将光标移动到文本结束的地方,按
p
粘贴
- 将光标移动到要复制的文本开始的地方,按
-
行数操作,在命令模式
set nm 或 set number
:显示行号:n
:比如:222
跳到第222行
-
撤销操作,
u
,在命令模式下按u
可以执行撤销
vi和vim的区别不太大,在vim里面写的代码会高亮。
7、文件搜索
find / -name file1
:从/
开始进入根文件系统搜索文件和目录find / -user user1
:搜索用户user1的文件和目录find /home/user1 -name *.bin
在目录/home/user1
:中搜索带有.bin
结尾的文件find /usr/bin -type f -atime +100
:搜索在过去100天内未被使用的执行文件find /usr/bin -type f -mtime -10
:搜索在10天内未被创建或修改过的文件find .-name'.php' -mmin -30
:查找最近30分钟内修改的当前目录下的’.php’文件find .-name '.php' -mtime 0
:查找最近24小时修改的当前目录下的.php文件find .-name '*.inc' -mtime 0 -ls
:查找最近24小时修改的当前目录下的.php文件,并列出详细信息find . -type -mtime 1
:查找当前目录下,最近24-48小时内修改过的常规文件find . -type -mtime +1
:查找当前目录下,最近一天前修改过的常规文件
上面的一些参数的具体含义如下
-atime
:文件访问时间-ctime
:文件创建时间-mtime
:文件修改时间-mtime n
:n为数字,意思为在n天之前的‘一天之内’被更改过内容的文件-mtime +n
:列出在n天之前,不含n天本身被更改过内容的文件-mtime -n
:列出在n天之内,含n天本身,被更改过内容的文件名-type f
:代表一个普通格式的文件 二进制文件-type d
:代表文件夹
其他一些搜索操作
find / -name *.rpm -exec chmod 755 '{}'
:搜索以‘.rpm’结尾的文件并定义其权限find / -xdev -name *.rpm
:搜索以‘.rpm’结尾的文件,忽略光驱、捷盘等可移动设备locate *.ps
:寻找以‘.ps’结尾的文件whereis halt
:显示一个二进制文件、源码或man的位置which halt
:显示一个二进制文件或可执行文件的完整路径grep kali /etc/passwd grep
:关键词搜索find / -name 文件名 2>/dev/null
:搜索某个文件/文件夹 屏蔽出错信息
8、用户和群组
创建和修改用户组,都需要用到sudo
管理员权限
groupadd group_name
:创建一个新用户组groupdel group_name
:删除一个用户组cat /etc/group | grep group_name
usermod -a -G m k1
:-G m k1
把用户k1附加到m组,-a
是保留原来的组
查看用户id/组
<!-- m1 是用户名 -->
id m1
创建用户的目录
useradd test
:创建一个用户叫testpasswd test
:设置它的密码为 test
创建以及分配目录
useradd -r -m -s /bin/bash test
参数的意思:
-r
:建立系统账号-m
:自动建立用户的登入目录-s /bin/bash
:指定用户登入后所使用的shell
切换用户:
su -root:切换到root用户
su 用户名:切换到普通用户
9、系统管理
top
:查看正在执行的程序信息ps -ef
:查看所有进程信息ps -ef | grep tomcat
:查找指定进程kali -9 id
:杀死进程,id是进程idenv
:环境变量echo $PATH
:查看系统变量hostname
:查看主机名history
:查看历史命令
10、查看磁盘信息
df
:默认不带单位,挂载点,总容量、已用、可用df -h
:友好显示(带单位),很多命令的友好显示都是-h
11、查看内存信息
free
:默认以KB为单位,总容量、已用、可用、缓存大小free -m
:以MB为单位free -h
:上面两种都不带单位,只显示数值,这个会带单位
12、查看环境变量
echo $JAVA_HOME
:查看Java环境变量echo $PATH | grep jdk
:查看jdk
13、开机自启
很多程序都需要开机自启,比如tomcat\mysql\nginx等
在etc/rc.d/rc.local
文件中加入开启要自动执行的程序
vim /etc/rc.d/rc.local
#挂载一个windows网络共享
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share
14、修改网卡配置
vi /etc/network/interfaces
auto eth0 #指定网卡,根据ifconfig结果修改
iface eth0 inet static #启动静态ip
address 192.168.0.66 # 设置静态ip
netmask 255.255.255.0 # 子网掩码
gateway 192.168.0.1 # 指定网关
# 重启网络
service networking resteat
# 或者
systemctl restart networking
# 设置临时ip
ifconfig eth0 192.168.0.33
15、修改网卡DNS服务器
vi /etc/resovl.conf
nameserver 114.114.114.114
# 重启网卡 有时候重启才生效
service networking restart
16、服务相关
# 启动apache2服务器
/etc/init.d/apache2 start
# 打开
/etc/init.d/apache2 start
# 重启
/etc/init.d/apache2 stop
# 启动网卡
/etc/init.d/network start
# 开启路由转发
sudo su root
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
17、常用网络命令
网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等。
- hostname:查看主机名
- ping:用于测试网络是不是通
- ifconfig:网卡信息
- iwconfig:用于配置或获取无线网络设备信息
- netstat:命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。ps:LISTEN和LISTENING的状态只有用-a或者-l才能看到
- -a (all):显示所有选项,默认不显示listen相关
- -t(tcp):仅显示tcp相关选项
- -u(udp):仅显示udp相关
- -n:拒绝显示别名,能显示数字的全部转化为数字
- -l:仅列出有在listen的服务状态
- -p:显示建立相关链接的程序名
- -r:显示路由信息,路由表
- -e:显示扩展信息,例如uid
- -s:按各个协议进行统计
- -c:每隔一个固定时间,执行该netstat命令
常用命令:
- netstat -ano:查看本机所有开放端口
- netstat -an:查看当前所有已连接端口
- netstat -nlpt:查看当前所有的tcp端口
- netstat -nlpu:查看当前所有的udp端口
-
netstat -nlpt grep 80:查看所有的80端口使用情况 - netstat -Intup:查看所有的tcp和udp端口
nslookup
:查询dns记录
nslookup -qt=type domain [dns-server]
其中type
可以是以下类型
A 地址记录
AAAA 地址记录
AFSDB Andrew文件系统数据库服务器记录
ATMA ATM地址记录
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录
RP 负责人记录
RT 路由穿透记录
SRV TCP服务器信息记录
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录
curl:是一个利用URL语法在命令行下工作的文件传输工具
# 不带参数 就是发get请求
curl https://www.example.com
# 其他参数看:http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
wget
:是Linux中的一个下载文件的工具
wget [选项]... [URL]...
traceroute
:是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具,traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为38个字节。
有以下的参数:
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
telnet
:用于远端登入,多数用于检测某个端口是否开放
telnet url 80
Finger
:Finger是一种用户信息分享服务。它工作在TCP 79端口,可以用来公开用户的特定信息。Nmap的finger的脚本可以向Finger服务器发送请求,查询并获取用户的相关信息,如登录名、用户名、TTY类型、登录时间等。
ethtool
:是用于查询及设置网卡参数的命令
18、防火墙iptables
# 查看防火墙规则
iptalbes -L
# 清除规则
iptables -F
# centOS关闭防火墙
sudo /etc/init.d/iptables stop
sudo service iptables stop
# kali关闭需要安装下面的
# 安装:apt-get install ufw
#关闭:ufw disable # To disable the firewall
#开启:ufw enable # To enable the firewall
19、文件属性和权限设置
查看文件的详细信息
ls -al
# 大概内容就是如下
# drwxr-xr-x 2 root root 4096 0ct 9.21.22
# 1rwxrwxrwx 2 root root 4096 0ct 9.21.22
# -rw-r--r-- 2 root root 4096 0ct 9.21.22
# 权限 连接数 文档拥有者 文档所属群组 文档大小 最后修改日期
其中的一些意思:
d
:是目录-
:普通文件1
: 软连接
19.1 用户权限
文件中r w x -
的含义
r
:只读权限w
:写权限x
:执行权限-
:没有任何权限
目录中r w x
的含义
r
:具有ls权限w
:在目录上有增加、删除、创建权限x
:ls -1权限
19.2 权限设置
设置权限的时候需要对三个角色进行设置
- 文件所有者
- 文件所属组用户
- 其他用户
权限设置每个角色有三个权限可以设置
- 读权限 数字用4表示
- 写权限 数字用2表示
- 执行权限 数字用1表示
当给一个角色设置了7
就代表给这个角色赋有所有权限,当给一个文件权限设置为777
就代表所有人所有用户都可以进行所有权限
chmod 777 + 文件名 # 给单独文件赋所有权限
chmod -R 777 /home/user # 表示给整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx,也就是777
想更改文件权限的话可以
chmod 654 /test
# 对用户可读可写:4(读取)+ 2(写入)= 6 ;
# 对用户组可读可执行:4(读取)+ 1(执行)= 5 ;
# 对其他用户仅可读:4(读取);
常用权限:
-rw-------
(600):只有所有者才有读和写的权限-rw-r--r--
(644):只有所有者才有读和写的权限,组群和其他人只有读的权限-rwx------
(700) :只有所有者才有读,写,执行的权限-rwxr-xr-x
(755) :只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限-rwx--x--x
(711) :只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限-rw-rw-rw-
(666) :每个人都有读写的权限-rwxrwxrwx
(777) :每个人都有读写和执行的权限。
也可以使用字母模式设置,效果是一样的
u
:代表用户g
:代表用户组o
:代表其他a
:代表所有
chmod u+x 文件 # 赋予这个文件的所属者执行的权限
创建一个文件只有用户具有完全控制的权限
touch myfile
给他授权
chmod u+rwx myfile # 当前用户有全部权限
chmod g-r myfile # 群组把读取权限去掉
chmod o-r myfile # 其他用户读取权限去掉