kali 软件管理

发布时间 2023-08-24 12:03:15作者: depressiom

kali 更新

1. 查看发行版本

┌──(root㉿kali)-[~]
└─# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description:    Kali GNU/Linux Rolling
Release:        2023.2
Codename:       kali-rolling
 

2. 查看内核版本

┌──(root㉿kali)-[~]
└─# uname -r 
6.3.0-kali1-amd64

3. 软件仓库配置文件(.list结尾)

软件存储库存储在 /etc/apt/sources.list 文件中

还可以把一些自定义或单独的应用配置文件放在 /etc/apt/sources.list.d/*.list 中

配置文件

4. 更新工具(apt-get 命令)

──(root㉿kali)-[~]
└─# apt-get -h         
apt 2.6.1 (amd64)
用法: apt-get [选项] 命令
    apt-get [选项] install|remove 软件包1 [软件包2 ...]
    apt-get [选项] source 软件包1 [软件包2 ...]

apt-get 可以从认证软件源下载软件包及相关信息,以便安装和升级软件包,
或者用于移除软件包。在这些过程中,软件包依赖会被妥善处理。

常用命令:
  update - 取回更新的软件包列表信息
  upgrade - 进行一次升级
  install - 安装新的软件包(注:软件包名称应当类似 libc6 而非 libc6.deb)
  reinstall - 重新安装软件包(注:软件包名称应当类似 libc6 而非 libc6.deb)
  remove - 卸载软件包
  purge - 卸载并清除软件包的配置
  autoremove - 卸载所有自动安装且不再使用的软件包
  dist-upgrade - 发行版升级,见 apt-get(8)
  dselect-upgrade - 根据 dselect 的选择来进行升级
  build-dep - 为源码包配置所需的编译依赖关系
  satisfy - 使系统满足依赖关系字符串
  clean - 删除所有已下载的包文件
  autoclean - 删除已下载的旧包文件
  check - 核对以确认系统的依赖关系的完整性
  source - 下载源码包文件
  download - 下载指定的二进制包到当前目录
  changelog - 下载指定软件包,并显示其变更日志(changelog)

Kali 的更新步骤:

1. apt-get update 更新软件包的列表 (索引)

解决更新软件包列表失败: apt-get update --fix-missing

┌──(root㉿kali)-[~]
└─# apt-get update
获取:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease [41.2 kB]
获取:2 http://mirrors.ustc.edu.cn/kali kali-rolling/main Sources [15.8 MB]
获取:3 http://mirrors.ustc.edu.cn/kali kali-rolling/contrib Sources [78.0 kB]                 
获取:4 http://mirrors.ustc.edu.cn/kali kali-rolling/non-free Sources [129 kB]                 
获取:5 http://mirrors.ustc.edu.cn/kali kali-rolling/main amd64 Packages [19.4 MB]             
获取:6 http://mirrors.ustc.edu.cn/kali kali-rolling/main amd64 Contents (deb) [45.7 MB]       
获取:7 http://mirrors.ustc.edu.cn/kali kali-rolling/non-free amd64 Packages [218 kB]          
获取:8 http://mirrors.ustc.edu.cn/kali kali-rolling/non-free amd64 Contents (deb) [907 kB]    
获取:9 http://mirrors.ustc.edu.cn/kali kali-rolling/contrib amd64 Packages [115 kB]           
获取:10 http://mirrors.ustc.edu.cn/kali kali-rolling/contrib amd64 Contents (deb) [220 kB]    
已下载 82.6 MB,耗时 4分 14秒 (325 kB/s)                                                      
正在读取软件包列表... 完成

2. apt-get upgrade更新软件包(进行一次升级)

┌──(root㉿kali)-[~]
└─# apt-get upgrade
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
正在计算更新... 完成
下列软件包是自动安装的并且现在不需要了:

3. apt-get dist-upgrade将系统升级到最新版本

┌──(root㉿kali)-[~]
└─# apt-get dist-upgrade
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
正在计算更新... 完成

4. apt-get clean #清除更新痕迹//可选

搜索 - 安装 - 删除软件

Advanced Packaging Tool, or apt 主要的命令就是apt-get,通过软件仓库实现对软件包的管理,可以很好地解决软件包之间的相互依赖关系

1. 搜索

apt-cache 可以查询和显示已安装和可安装软件包的可用信息它专门工作在本地的数据缓存上,而这些缓存可以通过比如apt-get 的“update’命令来更新

┌──(root㉿kali)-[~]
└─# apt-cache -h               
apt 2.7.3 (amd64)
用法: apt-cache [选项] 命令
       apt-cache [选项] show 软件包1 [软件包2 ...]

apt-cache 可以查询和显示已安装和可安装软件包的可用信息。
它专门工作在本地的数据缓存上,而这些缓存可以通过比如
apt-get 的 'update' 命令来更新。如果距离上一次更新的时间太久,
那么它显示的信息可能就会过时。不过作为交换,apt-cache 不依赖
当前软件源的可用性(比如:离线状态)。

常用命令:
  showsrc - 显示源文件的各项记录
  search - 根据正则表达式搜索软件包列表
  depends - 显示该软件包的依赖关系信息
  rdepends - 显示所有依赖于该软件包的软件包名字
  show - 以便于阅读的格式介绍该软件包
  pkgnames - 列出所有软件包的名字
  policy - 显示软件包的安装设置状态

常用的命令选项

  • search- 根据正则表达式搜索软件包列表
  • show-以便于阅读的格式介绍该软件包
┌──(root㉿kali)-[~]
└─# apt-cache search vsftpd    
ccze - robust, modular log coloriser
resource-agents - Cluster Resource Agents
vsftpd - lightweight, efficient FTP server written for security
vsftpd-dbg - lightweight, efficient FTP server written for security (debug)
yasat - simple stupid audit tool


## 正则表达式
┌──(root㉿kali)-[~] ## ^ 开始
└─# apt-cache search ^vsftpd
vsftpd - lightweight, efficient FTP server written for security
vsftpd-dbg - lightweight, efficient FTP server written for security (debug)


┌──(root㉿kali)-[~] ## 查看
└─# apt-cache show vsftpd   
Package: vsftpd
Source: vsftpd (3.0.3-13)
Version: 3.0.3-13+b2
Installed-Size: 343
Maintainer: Keng-Yu Lin <kengyu@debian.org>
Architecture: amd64
Replaces: ftp-server
Provides: ftp-server
Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libcap2 (>= 1:2.10), libpam0g (>= 0.99.7.1), libssl3 (>= 3.0.0), libwrap0 (>= 7.6-4~), adduser, libpam-modules, lsb-base (>= 3.0-6), netbase, procps, sysvinit-utils (>= 2.96)

管理工具 dpkg

Debian的软件包格式 *.deb (管理工具是dpkg) dpkg - package manager for

┌──(root㉿kali)-[~]
└─# dpkg --help
用法:dpkg [<选项>...] <命令>

命令:
  -i|--install       <.deb 文件名> ... | -R|--recursive <目录> ...
  --unpack           <.deb 文件名> ... | -R|--recursive <目录> ...
  -A|--record-avail  <.deb 文件名> ... | -R|--recursive <目录> ...
  --configure        <软件包名>    ... | -a|--pending
  --triggers-only    <软件包名>    ... | -a|--pending
  -r|--remove        <软件包名>    ... | -a|--pending
  -P|--purge         <软件包名>    ... | -a|--pending
  -V|--verify <软件包名> ...       检查包的完整性。
  --get-selections [<表达式> ...]  把已选中的软件包列表打印到标准输出。
  --set-selections                 从标准输入里读出要选择的软件。
  --clear-selections               取消选中所有非必需的软件包。
  --update-avail <软件包文件>      替换现有可安装的软件包信息。
  --merge-avail  <软件包文件>      把文件中的信息合并到系统中。
  --clear-avail                    清除现有的软件包信息。
  --forget-old-unavail             忘却已被卸载的不可安装的软件包。
  -s|--status      <软件包名> ...  显示指定软件包的详细状态。
  -p|--print-avail <软件包名> ...  显示可供安装的软件版本。
  -L|--listfiles   <软件包名> ...  列出属于指定软件包的文件。
  -l|--list  [<表达式> ...]        简明地列出软件包的状态。
  -S|--search <表达式> ...         搜索含有指定文件的软件包。
  -C|--audit [<表达式> ...]        检查是否有软件包残损。
  --yet-to-unpack                  列出标记为待解压的软件包。
  --predep-package                 列出待解压的预依赖。
  --add-architecture    <体系结构> 添加 <体系结构> 到体系结构列表。
  --remove-architecture <体系结构> 从体系结构列表中移除 <体系结构>。
  --print-architecture             显示 dpkg 体系结构。
  --print-foreign-architectures    显示已启用的异质体系结构。
  --assert-<特性>                  对指定特性启用断言支持。
  --validate-<属性> <字符串>       验证一个 <属性>的 <字符串>。
  --compare-versions <a> <关系> <b> 比较版本号 - 见下。
  --force-help                     显示本强制选项的帮助信息。
  -Dh|--debug=help                 显示有关出错调试的帮助信息。

  -?, --help                       显示本帮助信息。
      --version                    显示版本信息。

可验证的属性:pkgname, archname, trigname, version.

调用 dpkg 并带参数 -b, --build, -c, --contents, -e, --control, -I, --info,
  -f, --field, -x, --extract, -X, --vextract, --ctrl-tarfile, --fsys-tarfile
是针对归档文件的。 (输入 dpkg-deb --help 获取帮助)

选项:
  --admindir=<目录>          使用指定 <目录> 而非 /var/lib/dpkg。
  --root=<目录>              安装到另一个根目录下。
  --instdir=<目录>           改变安装目录的同时保持管理目录不变。
  --pre-invoke=<命令>        设置调用前钩子。
  --post-invoke=<命令>       设置调用后钩子。
  --path-exclude=<表达式>    不要安装匹配Shell表达式的路径。
  --path-include=<表达式>    在排除模式后再包含一个模式。
  -O|--selected-only         跳过没有被选中安装或升级的软件包。
  -E|--skip-same-version     跳过版本与已安装软件版本相同的软件包。
  -G|--refuse-downgrade      跳过版本早于已安装软件版本的的软件包。
  -B|--auto-deconfigure      就算会损坏其他软件包,也要安装。
  --[no-]triggers            跳过或强制随之发生的触发器处理。
  --verify-format=<格式>     检查输出格式(支持的值:'rpm')
  --no-pager                 禁用任何分页器。
  --no-debsig                不去尝试验证软件包的签名。
  --no-act|--dry-run|--simulate
                             仅报告要执行的操作 - 但是不执行。
  -D|--debug=<八进制数>      开启调试(参见 -Dhelp 或者 --debug=help)。
  --status-fd <n>            发送状态更新到文件描述符<n>。
  --status-logger=<命令>     发送状态更新到 <命令> 的标准输入。
  --log=<文件名>             将状态更新和操作信息到 <文件名>。
  --ignore-depends=<软件包>[,...]
                             忽略关于 <软件包> 的所有依赖关系。
  --force-<项目>...          忽视遇到的问题(参见 --force-help)。
  --no-force-<项目>[,...]    遇到指定问题时停止。
  --refuse-<项目>[,...]      同上。
  --abort-after <n>          累计遇到 <n> 个错误后中止。
  --robot                    对某些命令使用机器可读的输出。

可供--compare-versions 使用的比较运算符有:
 lt le eq ne ge gt        (如果版本号为空,那么就认为它先于任意版本号);
 lt-nl le-nl ge-nl gt-nl  (如果版本号为空,那么就认为它后于任意版本号);
 < << <= = >= >> >        (仅仅是为了与主控文件的语法兼容)。

'apt' 和 'aptitude' 提供了更为便利的软件包管理。

DebianCentos、RedHat的软件包格式*.rpm (管理工具是rpm)

┌──(root㉿kali)-[~]
└─# dpkg -l      
期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
| 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触 >
|/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)
||/ 名称                                           版本                                 体系结>
+++-==============================================-====================================-======>
ii  acl                                            2.3.1-3                              amd64 >
ii  adduser                                        3.137                                all   >
ii  adwaita-icon-theme                             43-1                                 all   >
ii  aircrack-ng                                    1:1.7-5                              amd64 >
ii  alsa-topology-conf                             1.2.5.1-2                            all   >
ii  alsa-ucm-conf                                  1.2.9-1                              all   >
ii  amass                                          4.1.0-0kali1                         amd64 >
ii  amass-common                                   4.1.0-0kali1                         all   >
ii  amd64-microcode                                3.20230808.1.1                       amd64 >
ii  apache2                                        2.4.57-2                             amd64 >
ii  apache2-bin                                    2.4.57-2                             amd64 >
ii  apache2-data                                   2.4.57-2                             all   >
ii  apache2-utils                                  2.4.57-2                             amd64 >
ii  apparmor                                       3.0.8-3                              amd64 >
ii  apt                                            2.7.3                                amd64 >


## 查询 dpkg -l | grep less
                                                                                               
┌──(root㉿kali)-[~]
└─# dpkg -l | grep less
ii  aircrack-ng                                    1:1.7-5                              amd64        wireless WEP/WPA cracking utilities
ii  default-jre-headless                           2:1.17-74                            amd64        Standard Java or Java compatible Runtime (headless)
ii  firmware-ath9k-htc                             1.4.0-108-gd856466+dfsg1-2+kali2     all          firmware for AR7010 and AR9271 USB wireless adapters
ii  firmware-atheros                               20230515-3+kali1                     all          Binary firmware for Qualcomm Atheros wireless cards
ii  firmware-brcm80211                             20230515-3+kali1                     all          Binary firmware for Broadcom/Cypress 802.11 wireless cards
ii  firmware-iwlwifi                               20230515-3+kali1                     all          Binary firmware for Intel Wireless cards
ii  firmware-libertas                              20230515-3+kali1                     all          Binary firmware for Marvell wireless cards

2. 安装软件

## 查询 dpkg -l | grep vsftpd
┌──(root㉿kali)-[~]
└─# dpkg -l | grep vsftpd

## 安装 apt-get install vsftpd                                                                                               
┌──(root㉿kali)-[~]
└─# apt-get install vsftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成   


┌──(root㉿kali)-[~]
└─# dpkg -l | grep vsftpd 
ii  vsftpd                                         3.0.3-13+b2                          amd64        lightweight, efficient FTP server written for security
     

3. 删除软件包

ot㉿kali)-[~]
└─# apt-get remove vsftpd

## 以上命令删除 软件后还会存在配置文件
┌──(root㉿kali)-[~]
└─# dpkg -L vsftpd       
/etc
/etc/ftpusers
/etc/init.d
/etc/init.d/vsftpd
/etc/logrotate.d
/etc/logrotate.d/vsftpd
/etc/pam.d
/etc/pam.d/vsftpd
/etc/vsftpd.conf
                                                                                               
┌──(root㉿kali)-[~]
└─# dpkg -l | grep vsftpd
rc  vsftpd                                         3.0.3-13+b2                          amd64        lightweight, efficient FTP server written for security
  


## 删除2 apt-get purge vsftpd
┌──(root㉿kali)-[~]
└─# apt-get purge vsftpd  
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
下列软件包是自动安装的并且现在不需要了 

                                                                                        
┌──(root㉿kali)-[~]
└─# dpkg -L vsftpd        
dpkg-query: 软件包 vsftpd 没有被安装
通过 dpkg --contents (= dpkg-deb --contents) 来列出档案文件清单。
                                                                                               
┌──(root㉿kali)-[~]
└─# dpkg -l | grep vsftpd 

4. 搜索 apt-file

apt-file 可以根据命令搜索软件包

┌──(root㉿kali)-[~]
└─# apt-file -h    

apt-file [options] action [pattern]
apt-file [options] -f action <file>
apt-file [options] -D action <debfile>

Pattern options:
================

    --fixed-string     -F               Do not expand pattern
    --from-deb         -D               Use file list of .deb package(s) as
                                        patterns; implies -F
    --from-file        -f               Read patterns from file(s), one per line
                                        (use '-' for stdin)
    --ignore-case      -i               Ignore case distinctions
    --regexp           -x               pattern is a regular expression
    --substring-match                   pattern is a substring (no glob/regex)


Search filter options:
======================

    --architecture     -a  <arch>       Use specific architecture [L]
    --index-names      -I  <names>      Only search indices listed in <names> [L]
    --filter-suites        <suites>     Only search indices for the listed <suites> [L]
                                        (E.g. "unstable")
    --filter-origins       <origins>    Only search indices from <origins> [L]
                                        (E.g. "Debian")

Other options:
==============

    --config           -c <file>        Parse the given APT config file [R]
    --option           -o <A::B>=<V>    Set the APT config option A::B to "V" [R]
    --package-only     -l               Only display packages name
    --stream-results                    Emit results immediately (without deduplication)
    --verbose          -v               run in verbose mode [R]
    --help             -h               Show this help.
                       --               End of options (necessary if pattern
                                        starts with a '-')

[L]: Takes a comma-separated list of values.
[R]: The option can be used repeatedly

Action:
    list|show          <pattern>        List files in packages
    list-indices                        List indices configured in APT.
    search|find        <pattern>        Search files in packages
    update                              Fetch Contents files from apt-sources.

  • Step0: apt-get install apt-file .

  • Step1: 更新缓存:apt-file update

┌──(root㉿kali)-[~]
└─# apt-file update
命中:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
所有软件包均为最新。
     
  • Step2: 举例 :apt-file search arpspoof.//搜索 arpspoof 命令由哪个软件包提供
┌──(root㉿kali)-[~]
└─# apt-file search arpspoof
bash-completion: /usr/share/bash-completion/completions/arpspoof
dsniff: /usr/sbin/arpspoof
dsniff: /usr/share/man/man8/arpspoof.8.gz

Ps: arpspoof ,arp 欺骗的工具

正则表达式

正则表达式(regular expression),可简写为 regex或re,是一种指定字符串模式的简洁方式即一种用来描述文本模式的特殊语法。由普通字符(例如字符 a 到2)以及特殊字符(称为元字符,如/、*、?等) 组成,常用于字符串的搜索与替换操作。.例如,下面的一组字符串

  • 例如:

    • 作为正则表达式,可以使用 xiao[123]表示:
      xiao1 、xiao2 、xiao3 .
  • 很多UNIX工具都使用正则表达式来强化其自身的功能,例如:

    • (1)查找匹配文本的grep 家族(grep/egrep/agrep)
    • (2)大名鼎鼎的流编辑器 sed
    • (3)字符串程序处理语言 awk、perl 等
    • (4)文本查看程序,例如 more、less 等
    • (5)文本编辑器,例如 vi、emacs、jed 等
  • 特殊的元字符

    • . :除新行(如换行)字符外,匹配任意的单个字符,即一定有一个任意字符
    • ^ :锚:匹配行的开头
    • $ :锚:匹配行的末尾
    • \< :锚:匹配单词的开头 (\b)
    • \> :锚:匹配单词的末尾 (\b)
    • [list] :字符类:匹配 list 列表中的任一字符字符类
    • [^list] :字符类:匹配不在 list 列表中的任何字符
    • ( ) :分组:视为一个单独的单元
    • | :交替:匹配选择之一,为 ERE 运算符里优先级最低
    • \ :引用:从字面上解释元字符,通常用以关闭后续字符的特殊含义。
    • * :匹配在它之前的任何数目《或没有)的单个字符,重复前一个0到无穷多注

注 1:锚(anchor), 用来匹配在字符串的开头或末尾的位置。

注 2:分组,由于()--圆括号提供分组功能,让运算符可以被应用到“前置的正则表达式”