kali的安装与介绍

简介

  • VMware是运行虚拟机(虚拟机是指通过 软件 模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统 )的软件,通过VMware创建虚拟机,让我们在系统中安装系统。
    • bridged(桥接模式):同一网络环境下的两台电脑。
    • NAT(网络地址转换模式):虚拟机通过主机进行联网。
    • Host-Only(主机):主机将虚拟机与外网隔开,只能让虚拟机和虚拟机之间联网。
  • 系统镜像:文件版的光盘
  • kali:Kali Linux是专业的渗透测试系统,安装预装了许多渗透测试软件。
  • 数据包:包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。
  • 端口:端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见
  • 抓包:抓取数据包
  • kali的源:源配置(软件源)概念:源就是来,。可以把他称为软件仓库。安装软件时,就是从仓库里面调取数据放在你的机器上。
  • 更新源:相当于windows打补丁,软件更新。
  • Linux下载软件方式
    • 从源配置(软件源)所在服务器上通过特定命令获取JDK,Tomcat之类的软件包.
    • 从源配置(软件源)所在服务器上通过特定命令获取JDK,Tomcat之类的软件包.
1
2
3
4
5
6
7
8
sudo dpkg --get-selections | more
# 查看当前系统中所有软件包的状态
sudo apt-mark hold metasploit-framework
# metasploit-framework锁定当前版本不更新
sudo dpkg --get-selections | grep hold
查看当前已锁定的软件包
sudo apt-mark unhold metasploit-framework
# 取消当前已锁定软件
  • kali更新后出现问题

    • 进入/usr/share/metasploit-framework目录下
    1
    2
    gem install bundler 
    gem update --system

配置kali系统源

  1. 使用bianjiqi打开系统源文本

    1
    vim /etc/apt/sources.list
  2. 填写成阿里源

    1
    2
    3
    #阿里云#
    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
  3. 更新

    1
    2
    3
    4
    软件版本更新 && 进行一次升级 && 软件源清单更新
    apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
    apt-get clean # 删除已经下载的安装包
    reboot #重启

ssh服务

  • 使用编辑器打开ssh配置

    1
    vim /etc/ssh/sshd_config
    1
    2
    #PasswordAuthentication yes (去掉注释)
    #PermitRootLogin prohibit-password (去掉注释后面的并删除改为yes)
  • 开启ssh服务

    1
    service ssh start 
  • kali下查看服务开启状态

    1
    service ssh status 
  • 使用putty/xshell进行连接

用户组

  • linux中,每个文件都是属于一个用户组。
  • 在linux中,可以同时拥有N个用户,和用户组

用户信息

  • 查看用户信息

    1
    2
    3
    4
    5
    6
    cat /etc/passwd
    # 用户名:密码(x):UID:GID:用户名全称:用户的家目录所在的位置:用户所用的SHELL的类型
    useradd -m key # 自动在home文件下创建key目录
    useradd -g 组名 用户名 # 指定添加到某个组织里面
    passwd 用户名 # 修改key的新密码
    userdel -r 用户名 # 删除目录及用户名
  • 用户划分

    • 系统用户:root
    • 普通用户:用户所创建的用户
    • 虚拟用户:指软件所创建的虚拟用户

用户组信息

  • 查看用户组信息

    1
    2
    3
    4
    5
    6
    7
    cat /etc/group # 查看用户组信息
    # 组名:密码:UID:组成员,key(第二个组成员)
    id key # 查看组信息
    groups 用户名 # 查看用户组归属
    usermod -G 组名 用户名 # 直接添加组用户从原来组删除
    usermod -a -G 组名 用户名 # 追加到新的组
    groupdel 组名 # 删除组
  • 用户组划分

    • 文件所拥有者:文件创建者
    • 用户所在组:当linux当前用户创建了一个文件后,这个文件所属于的的组
    • 其他组:除了文件所有者以及所在组的用户外

权限管理

  • 权限划分
    • r可读:4
    • w可写:2
    • x可执行:1
  • 当前目录下ls
  • 设置权限
1
2
chmod 777 文件名 # 给当前文件设置777权限
chmod -R 777 目录名 # 给当前目录递归设置777权限

软件安装管理

  • dbkg是一个debian的命令行工具,可以用来安装,删除,构建和管理debian的软件包
1
2
3
dpkg -i xxx.deb #   安装软件
dpkg -r xxx。deb # 删除软件包
dpkg -r -purge xxx.deb # 连同配置文件一起删除
  • gdebi是一个轻量级的deb暗转工具,他替代吊臃肿的ubuntu软件中心安装deb
1
2
3
sudo apt-get update 
sudo apt-get install gdebi # 安装gdebi
sudo gdebi sougoupinyin.deb
  • linux下常用压缩文件格式
1
2
3
4
5
.zip
.gz
.bz2
.tar.gz
.tar.bz2
  • tar命令
1
2
tar -cvfz 打包后的文件名 源文件名 # 打包文件
tar -xzfv # 解包命令
  • 打包选项
    • -c 打包
    • -v 打包时显示出详细信息
    • -f 指定文件名
    • -z 打包时同时进行压缩
  • 解包选项
    • -x 解包
    • -v 解包时显示出详细信息
    • -f 指定文件名
    • -z 解包时同时进行解压

查找命令

1
2
find ./kali/ -print # 指定目录查找并输出
find ./kali/ -etc ls {} \: # etc 指定目录以shell脚本运行并输出

kali的常用命令

1.常用命令

passwd 修改密码

passwd root 修改root用户密码

date 显示系统日期

sudo 后面加命令 就可以调用管理权限

apt-get update 更新软件列表

这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在新立得软件包管理器里看到的软件列表,都是通过update命令更新的。

apt-get upgrade 更新软件

这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。如果你的软件都是最新版本,会提示: 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

apt-get dist-upgrade 更新软件

apt-get upgrade 与 apt-get dist-upgrade 的区别

upgrade:系统将现有的Package升级,如果有相依性的问题,而此相依性需要安装其它新的Package或影响到其它Package的相依性时,此Package就不会被升级,会保留下来.

dist-upgrade:可以聪明的解决相依性的问题,如果有相依性问题,需要安装/移除新的Package,就会试着去安装/移除它.
(所以通常这个会被认为是有点风险的升级)

apt-get upgrade 和 apt-get dist-upgrade 本质上是没有什么不同的。

只不过,dist-upgrade
会识别出当依赖关系改变的情形并作出处理,而upgrade对此情形不处理。

例如软件包 a 原先依赖 b c d,但是在源里面可能已经升级了,现在是 a 依赖 b c e。这种情况下,dist-upgrade 会删除 d 安装 e,并把 a 软件包升级,而 upgrade 会认为依赖关系改变而拒绝升级 a
软件包。

clear 清屏

sudo gpedit 特权调用gpedit编辑器

reboot 重启

apt-get install XXXXX 安装缺少的依赖包,(XXX)里面输入缺少依赖包的名字

apt-get autoremove –purge 软件名 删除包及其依赖的软件包+配置文件等

apt-get install +模块名 这种方法也可以安装模块,或者apt-get install python-模块名

firefox 浏览器打开

shutdown -h now 关闭系统(1)

init 0 关闭系统(2)

telinit 0 关闭系统(3)

shutdown -h hours:minutes & 按预定时间关闭系统

shutdown -c 取消按预定时间关闭系统

shutdown -r now 重启(1)

reboot 重启(2)

su -l 切换登陆用户

logout 注销用户登陆

pwd 当前路径

2.文件夹或文本操作

cd .. 返回上一级目录

cd ../.. 返回上级两级目录

cd - 返回上次所在的目录

cd 文件夹名 进去文件夹

cd ~ 进去当前用户主目录

pwd 显示当前工作路径

touch 文件名 常见文件

cat 文件名 读取文档内容

mkdir 文件名 创建文件夹

mkdir -p 文件夹 递归创建文件夹

cp 复制命令

cp -r moon moons 复制moon 文件夹到当前 moons 如果有里面有文件 使用-r

mv 移动命令

mv moon moon 也可以说是改名

mkdir 文件名 文件名 创建多个文件夹

ls 显示文件和文件夹名

ls -a 显示所有的文件和文件夹 包含隐藏文件

ls -l 显示文件和目录的详细资料

删除

rm -f 文件 删除文件

rm 文件夹名 删除文件夹

rm -rf 文件/文件夹 删除文件夹 及其目录下的文件

压缩和解压
bzip2 file1 压缩一个叫做 ‘file1’ 的文件

gunzip file1.gz 解压一个叫做 ‘file1.gz’的文件

gzip file1 压缩一个叫做 ‘file1’的文件

gzip -9 file1 最大程度压缩

rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包

rar x file1.rar 解压rar包

unrar x file1.rar 解压rar包

DEB 包 (Debian, Ubuntu 以及类似系统)
dpkg -i package.deb 安装/更新一个 deb 包

dpkg -r package_name 从系统删除一个 deb 包

dpkg -l 显示系统中所有已经安装的 deb 包

dpkg -l | grep httpd 显示所有名称中包含 “httpd” 字样的deb包

dpkg -s package_name 获得已经安装在系统中一个特殊包的信息

dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表

dpkg –contents package.deb 显示尚未安装的一个包所提供的文件列表

tar zcvf +压缩文件名 压缩文件

tar zxvf +解压包名 解压文件

tar -jcvf renwolesshel.tar.bz2 打包

tar jxvf renwolesshel.tar.bz2 解压

压缩成zip格式

zip -q -r renwolesshel.zip renwolesshel/
解压zip格式的压缩包

unzip renwolesshel.zip

which 加软件名 可以查出软件目录在哪

./+文件名或者apt-get +文件名 安装文件

3.系统信息

arch 显示机器的处理器架构(1)

uname -m 显示机器的处理器架构(2)

uname -r 显示正在使用的内核版本

cat /proc/version 显示内核的版本

cat /proc/net/dev 显示网络适配器及统计

cat /proc/cpuinfo 显示CPU info的信息

cat /proc/mounts 显示已加载的文件系统

4.文件搜索

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 f -mtime 1

查找当前目录下,最近24-48小时修改过的常规文件。
find . -type f -mtime +1
查找当前目录下,最近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’ 结尾的文件 - 先运行 ‘updatedb’ 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径

grep kali /etc/passwd grep关键词搜索

find / -name moonsec 2>/dev/null 搜索某个文件/文件夹 屏蔽出错信息

6.用户和群组

groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组

cat /etc/group | grep group_name

usermod -a -G moontea k1把用户k1附加其他用户组

  • 创建目录

useradd 目录

passwd 目录

  • 创建用户以及分配目录

useradd -r -m -s /bin/bash moonsec

参数的意思:
-r 建立系统账号
-m 自动建立用户的登入目录
-s /bin/bash 指定用户登入后所使用的shell

  • 切换用户

su - root 切换到root用户

su 用户名 切换到普通用户

7.系统管理top # 查看正在指向的程序信息

top # 查看正在指向的程序信息

ps -ef 查看所有进程信息

ps -ef | grep tomcat 查找指定进程

kill -9 id 强制杀死进程

env 当前的变量

查看系统变量

echo $PATH

hostname 查看主机名

history 查看历史命令

8.查看磁盘信息

df 默认不带单位,挂载点、总容量、已用、可用

df -h 友好显示(带单位),很多命令的友好显示都是-h

9.查看内存信息

free 默认以KB为单位,总容量、已用、可用、缓存大小

free -m 默认以MB为单位

free -h 上面2种都不带单位、只显示数值,这种是友好显示的,会带单位G、M等

10.查看环境变量

1
2
echo  $JAVA_HOME
echo $PATH | grep jdk

11.linux常用网络命令

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等。下面让我们看看在 Linux 下的网络和监控命令的使用。

hostname 查看本机名

ping 一般用于测试网络是否通 内网icmp

ping www.baidu.com -c 3 执行3次

ifconfig 网卡信息

iwconfig 用于配置或获取无线网络设备信息

  • netstat

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

常用命令

1
2
3
4
5
6
7
8
netstat -ano

-an 查看当前所有已连接端口
-nlpt 查看当前所有tcp端口
-nlpu 查看当前所有udp端口
-nlpt | grep 80 查看所有80端口使用情况

netstat -lntup 查看所有的tcp和upd端口
  • nslookup 查询其他记录

直接查询返回的是A记录,我们可以指定参数,查询其他记录,比如AAAA、MX等。

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地址记录

  • http协议

  • curl

  • wget

  • traceroute

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

Linux telnet命令用于远端登入。

执行telnet指令开启终端机阶段作业,并登入远端主机。

现在多数用于检测某个端口是否开放

12.防火墙iptables

查看防火墙规则

1
iptalbes -L

清除规则

1
iptables -F

关闭防火墙

1
2
3
/etc/init.d/iptables stop

service iptables stop

安装:apt-get install ufw

关闭:ufw disable # To disable the firewall

开启:ufw enable # To enable the firewall