• kali 基础篇 学习笔记


    # install

    # B站地址

    https://live.bilibili.com/24768160

    # 参考文案

    http://book.fsec.io/

    # 注意事项

    1 不在没有直接或间接授权的情况下,对公网的任何设施进行安全检测。
    2 在测试的过程中,不做任何可能导致业务遇到干扰的动作。
    3 任何的测试中,不查看与下载任何敏感的数据。
    4 发现漏洞后,第一时间通过企业SRC进行报告。
    5 不在目标站点使用后门类工具,如需必要的测试,可通过替代的方案(如webshell替换为phpinfo页面)

    # Base

    修改源

    修改 /etc/apt/sources.list ,注释掉官方源, 将相关 url 改成阿里云的源

    deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
    deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib

    最后, 输入sudo apt-get update和sudo apt-get upgrade两个命令,更新软件和升级

    Note:遇到一个报错  The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository 

    root@kali:~# apt-get update
    Get:1 http://mirrors.zju.edu.cn/kali kali-rolling InRelease [30.6 kB]
    Err:1 http://mirrors.zju.edu.cn/kali kali-rolling InRelease
      The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
    Reading package lists... Done
    W: GPG error: http://mirrors.zju.edu.cn/kali kali-rolling InRelease: The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
    E: The repository 'http://mirrors.zju.edu.cn/kali kali-rolling InRelease' is not signed.
    N: Updating from such a repository can't be done securely, and is therefore disabled by default.
    N: See apt-secure(8) manpage for repository creation and user configuration details.

    首先检查,系统时间是否正常,如果不正常使用下面命令修改

    date -s "2022-05-10 17:19"  # 手动设置日期

    tzselect 命令可以修改时区

    # 或者手动修改时区

    echo "ZONE=Asia/Shanghai" >> /etc/sysconfig
    rm -f /etc/localtime     # 上海时区文件       
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    开启ssh

    打开25行注释,保存

     /etc/init.d/ssh start命令启动ssh服务

    开启root用户登录

    apt-get install kali-root-login

    PS:# 处理resolv.conf重启后丢失问题

    apt-get install resolvconf

    安装搜狗输入法和WSP

    安装过程:略

    安装注意:出现依赖问题使用apt install -f 命令后,再使用dpkg -i 进行安装

    PS:切换搜狗输入法。部分系统可能会遇到打开WPS后搜狗输入法切换不出来的情况。需要在三个配置文件中加入环境变量。同时卸载英文输入法解决这个问题。

     vim /usr/bin/wps;vim /usr/bin/et;vim /usr/bin/et    修改内容一致,如下:

    export XMODIFIERS="@im=fcitx"
    export QT_IM_MODULE="fcitx"

    apt-get remove --purge ibus     卸载英文输入法

    查看kali内核版本

    cat /proc/version

    查询kali系统最新版本内核

    apt-cache search linux-image

    apt-cache search linux-header

    安装virtualBox

    apt-get install virtualbox virtualbox-guest-additions-iso 

    Firefox调优

    about:config

    输入network.captive,将network.captive-portal-service.enadbled那一行双击改为false​(默认是false)

    ## 火狐浏览器安装插件提示:“此附加组件无法安装,因为他有可能已损坏”

    输入xpinstall.signatures,将xpinstall.signatures.required那一行双击改为false

    执行apt-get install firefox-esr命令可将Firefox浏览器升级到最新版本

    Chrome安装与调优

    apt-get install chromium

    vi /usr/share/applications/chromium.desktop

    Exec=/usr/bin/chromium --no-sandbox %U

    typora 安装

    wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -add-apt-repository 'deb https://typora.io/linux ./'
    apt-get update
    apt-get install typora
    vi /usr/share/applications/typora.desktop
    修改exec为:/usr/bin/typora --no-sandbox

    flameshot 截图工具

    apt-get install flameshot

    为了方便使用可以自定义一个快捷键;

    设置-键盘-键盘快捷键(查看及自定义快捷键)-自定义快捷键- + 设置自定义快捷键

     安装 python-pip

    # pip3 安装

    apt-get install python3-pip

    # pip2 安装

    curl -O https://bootstrap.pypa.io/pip/2.7/get-pip.py
    python2 get-pip.py

    # 验证

    pip2 -V;pip3 -V

     

    PS:挂起后无法唤醒的问题,修改kali界面里面设置-电源管理器(测试中...)

    安装laptop-mode-tools工具包

    apt-get install laptop-mode-tools

    确认配置文件下面值/etc/laptop-mode/laptop-mode.conf 

    ENABLE_LAPTOP_MODE_ON_BATTERY=1  # 使用电池是否

    ENABLE_LAPTOP_MODE_ON_AC=1

    ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1

    debian体系

    dpkg命令

    dpkg 是为"Debian"操作系统专门开发的套件管理系统,用于软件的安装,更新和移除。能被dpkg命令安装的软件包一般以.deb为文件后缀

    dpkg -i     # 安装软件包                           dpkg -i *.deb
    dpkg -r     # 移除软件(保留配置)                   dpkg -r <name>
    dpkg -P     # 移除软件(不保留配置)                 dpkg -P <name>       
    dpkg -c     # 列出deb包的内容                      dpkg -c *.deb
    dpkg -l     # 配合|grep,查找主机包                 dpkg -l |grep <关键字>
    dpkg -s     # 查找包的详细信息                      dpkg -s  <name>
    dpkg -L     # 查看已安装的软件包,都存在系统哪有文件    dpkg -L <name>
    dpkg -S     # 显示指定包的状态信息                   dpkg -S </PATH/filename>

    # dpkg -S 用于通过文件绝对路径反查 包名

     apt 命令

    apt是一个在Debian中的Shell前端软件包管理器

    apt-get install      #安装软件包                
    apt-get remove       #仅卸载软件,但是并不卸载配置文件
    apt-get purge        #卸载指令,同时卸载相应的配置文件
    apt-get update       #将所有包的来源更新(更新源)
    apt-get upgrade      #将系统中旧版本的包升级成最新的    (生产环境,慎用) # 和CentOS相反
    apt-cache search     #用关键字搜索包
    apt-cache show       #显示特定包的基本信息
    apt-cache depends    #列出包的依赖
    apt-get clean        #清理本地包占用的磁盘空间(/var/cache/apt/archives)
    apt-get autoremove   #卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包

    PS:apt-cache depends 显示包所需依赖

    PS:*.deb 包情况下;dpkg 和 apt 是相同的

    # apt-get install <包名> 下载包默认存储到下面的目录;

      

    源的配置

    apt命令更新和安装软件包是从软件安装源中请求的

    /etc/apt/sources.list

    常见的kali源:

    #官方源
    deb http://http.kali.org/kali kali-rolling main contrib non-free
    #中科大
    deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
    deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
    #阿里云
    deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
    deb-src https://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

    Redhat体系

      rpm 命令

    命令用于管理软件。rpm原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。能被rpm命令安装的软件包一般以.rpm为文件后缀。

    rpm -ivh [package_name]         #安装软件包
    rpm -evh [package_name]         #卸载软件
    rpm -qlp *.rpm                  #列出rpm包的内容
    rpm -qa |grep [字符串]           #在已安装的所有软件中查询包含某字符串的软件版本
    rpm -ql [软件名]                 #列出该软件所有文件与目录所在的完整文件名
    rpm -qc [软件名]                 #列出软件的所有设置文件
    rpm -qR [软件名]                 #查询某软件依赖的其他软件
    rpm -qf [文件名]                 #查询文件属于哪个软件包

    yum 命令

    命令是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器

    yum 源配置

    [baseos]
    name=Rocky Linux $releasever - BaseOS
    mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
    #baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

    epel 源是redhat系比较常用的源

    EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux

    命令为:dnf install -y epel-release

    yum makecache                         #更新源(安装新源后执行)
    yum clean all                         #清除缓存目录(/var/cache/yum)下的软件包及旧的headers
    yum list |grep                        #显示所有已经安装和可以安装的程序包
    yum info [package-name]               #显示安装包信息
    yum -y install [package-name]         #安装软件,默认选yes
    yum remove [package-name]             #卸载
    yum deplist rpm                       #查看程序rpm依赖情况
    yum update                            #更新全部软件包         # 等同于debian 的apt-get upgrade(生产环境,慎用yum group list                        #列出组
    yum group install "Security Tools"    #安装‘Security Tools’软件组
    yum search                            #检索安装包

    dnf 命令

    是新一代的rpm软件包管理器。它正在逐步取代yum命令

    dnf repolist                                           #该命令用于显示系统中可用的 DNF 软件库
    dnf repolist all                                       #该命令用于显示系统中可用和不可用的所有的 DNF 软件库
    dnf list                                               #用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
    dnf list installed                                     #该命令用于列出所有安装了的 RPM 包
    dnf list available                                     #用于列出来自所有可用软件库的可供安装的软件包
    dnf search [pakage]                                    #用该命令来搜索软件包
    dnf provides /bin/bash                                 #查找某一文件的提供者
    dnf info nano                                          #查看软件包详情
    dnf install [pakage]                                   #安装软件包
    dnf update systemd                                     #该命令用于升级指定软件包
    dnf check-update                                       #该命令用于检查系统中所有软件包的更新
    dnf update                                             #该命令用于升级系统中所有有可用升级的软件包  PS:可以指定更新某一个包;dnf update XXX
    dnf remove [pakage]                                    #删除系统中指定的软件包
    dnf autoremove                                         #删除无用孤立的软件包
    dnf clean all                                          #删除缓存的无用软件包
    dnf history                                            #查看您系统上 DNF 命令的执行历史
    dnf grouplist                                          #该命令用于列出所有的软件包组
    dnf groupinstall ‘Educational Software’                #该命令用于安装一个软件包组
    dnf groupupdate ‘Educational Software’                 #升级一个软件包组中的软件包
    dnf groupremove ‘Educational Software’                 #该命令用于删除一个软件包组
    dnf reinstall [pakage]                                 #该命令用于重新安装特定软件包

    课外阅读:linux配置文件上使用密文,linux中的shadow文件以及所采用的加密算法

    七个运行级别

    所谓运行级别,简单点来说,运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具有不同的功能。

    • 0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。
    • 1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
    • 2:多用户状态,没有NFS支持。
    • 3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。
    • 4:系统未使用。
    • 5:X11控制台,登陆后进入图形GUI模式,XWindow系统。
    • 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启。

    设置网卡状态两种方法

    systemctl restart/stop/start/status network         #重启/停止/启动/查看状态
    service network restart/stop/start/status           #重启/停止/启动/查看状态

    nmcli 命令

    nmcli c show                 #查看状态
    nmcli c up/down [网卡名]      #启动/关闭
    nmcli c reload [网卡名]       #重启
    nmcli c modify enp0s3 ipv4.addresses 192.168.0.62/24
    nmcli c modify enp0s3 ipv4.gateway 192.168.0.1
    nmcli c modify enp0s3 ipv4.dns 8.8.8.8

     网卡配置

    Ubuntu/kali上的网卡配置文件存储于/etc/network/interfaces

    # 若设置静态IP
    auto [网卡名]            
    iface [网卡名] inet static                            
    address 192.168.x.x                #ip地址
    gateway 192.168.x.x                 #网关
    netmask 255.255.255.0               #子网掩码
    
    # 若设置动态IP
    auto [网卡名]
    iface eth0 inet dhcp

    /etc/init.d/networking restart #重启网卡
    /etc/init.d/networking start #启动网卡
    /etc/init.d/networking stop #关闭网卡

     目录的第一个字符:

    -:常规文件
    b:块特殊文件
    c:字符特殊文件
    C:高性能(”连续数据“)文件
    d:目录
    D:门(Solaris 2.5及以上版本)
    l:符号链接
    M:离线(”前已“)文件(Cray DMF)
    n:网络专用文件(HP-UX)
    p:FIFO(命名管道)
    P:断开(Solaros 10及以上)
    s:套接字
    ?:其他文件

    lsof 命令

       用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

    lsof | more

     lsof  输出信息注释

    COMMANDPID TID TASKCMDUSERFDTYPEDEVICESIZE/OFFNODENAME
    进程的名称 进程ID 进程所有用户 文件描述符,应用程序通过文件描述符识别该文件 文件类型 指定磁盘的名称 文件的大小 索引节点(文件在磁盘上的标

    lsof常用指令:

    lsof |grep abc.txt     #查看哪些进程打开了abc.txt文件
    lsof -c sshd         #查看sshd服务所打开的文件
    lsof -i :22          #查看22端口有哪些进程在访问
    lsof -p 1168         #查看1168进程号所打开的文件
    lsof -u 0            #查看uid为0的用户打开的文件
    lsof|grep /var/log/  #查看/var/log/下的文件被哪些进程打开

    PS: 利用 lsof 命令恢复已删除的文件(在特定的场景下,如果有文件别删除且文件对应的进程没有结束,并且没有重启服务器)

    首先查找文件对应的PID, lsof |grep /var/log/messages

    然后进入pid对应的目录;cd/proc/<PID>/fd 

    # 系统完整性检查工具 lynins,aide,tripwire等防御工具

    rpm -Va

    dpkg -Va

    SM5DLUGT c
    
    ​ 其中每当发现一个不一致的文件就会有一行类似的输出,一下是每个字符的含义:
    
    ​ S:表示对应文件的大小(Size)不一致;
    
    ​ M:表示对于文件的mode不一致;
    
    ​ 5:表示对应文件的MD5不一致;
    
    ​ D:表示文件的major和minor号不一致;
    
    ​ L:表示文件的符号连接内容不一致;
    
    ​ U:表示文件的owner不一致;
    
    ​ G:表示文件的group不一致;
    
    ​ T:表示文件的修改时间不一致;
    
    ​ c:只有文件是一个配置文件时才会有此标志,可以用这种方法快速定位rpm包的配置文件安装位置。(不是说只有文件不一致情况下才会显示吗?没错,但是配置文件通常会被修改,所以通常都会被检测出不一致)
    
    ​ file:检测出不一致的文件安装路径;
    
    ​ 当然一般不可能一个文件的所有以上属性都不一致,所以检测通过的属性就会用一个“.”表示。

    xargs 命令

    xargs是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

    # 临时生成数字序列
    方法一:echo {1..9}  # 生成行序列1~9
    方法二:seq 1 9      # 生成列序列1~9

    # 排序

     # 多线程处理参数 -P

    grep命令  这个名字来自于短语“global regular expression print”,所以我们能看出 grep 程序和正则表达式有关联。

    cat passwd |grep root                          # 只显示带有root关键字的行
    grep -e root passwd                            # 匹配有root的行
    grep -v root passwd                            # 忽略匹配到的行
    cat passwd |grep -E "root|sshd"                # 包含多个可能性的行
    cat passwd |grep -E '^r'                       # 以r开头的行
    cat passwd |grep -E 'n$'                       # 以n结尾的行
    grep “root” /etc/passwd /etc/shadow            # 查询多个文件
    grep "passwd" /etc -rn                         # -r 为递归 -n 显示关键字出现在第几行   在多级目录中对文本进行递归查找

     find 命令  用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

    find / -size 1000k                #从根目录查找大小为1000K的文件
    find   -name '1*'                 #在当前目录下查找文件名以1开始的文件
    find / -name '1*'                 #从根目录查找文件名以1开始的文件
    find / -user farmsec1             #从根目录查找属主为farmsec1的文件
    find / -group farmsec             #从根目录查找属组为farmsec的文件
    find /etc -type f/d               #按sock类型查找,f代表文件,d代表目录
    find . -type f -mtime -7          #搜索7天内当前目录下修改过的文件(-7代表7天内,7代表前7天那一天,+7代表7天前)
    find . -type f -mmin -10          #搜索10分钟内当前目录下修改过的文件 
    find . -atime -1 -type f          #搜索当前目录下一天内被访问的文件(-1代表1天内,1代表前1天那一天,+1代表1天前)
    find . -amin -10 -type f          #搜索当前目录下10分钟内被访问的文件
    find . -ctime -1 -type f          #搜索当前目录下一天内状态被改变(列如权限)的文件(-1代表1天内,1代表前1天那一天,+1代表1天前)
    find . -cmin -10 -type f          #搜索当前目录下10分钟内状态被改变的文件
    find . -perm 777                  #搜索处当前文件下符合777权限的文件

    exec选项

    find 搜索路径 [选项] 搜索内容 -exec 命令2{}\;
    find . -type f -perm 644 -exec ls -l {} \;
    find / -exec grep "Hello" {} \;
    
    find / -name "*.tmp" -exec rm -f {} \; (危险)
    find / -name "*" -ctime +2 -exec rm -f {} \;(危险,别敲

    ag 命令  类似grep和find,但是执行效率比后两者高。

    ag -g <File Name>            # 类似于 find . -name <File Name>
    ag -i PATTERN                # 忽略大小写搜索含PATTERN文本
    ag -A [number] PATTERN       #搜索含PATTERN文本,并显示匹配内容之后的n行文本,例如:ag -A 5  abc会显示搜索到的包含abc的行以及它之后5行的文本信息。
    ag -B [number] PATTERN       #搜索含PATTERN文本,并显示匹配内容之前的n行文本
    ag -C [number] PATTERN       #搜索含PATTERN文本,并同时显示匹配内容以及它前后各n行文本的内容。
    ag --ignore-dir <Dir Name>   #忽略某些文件目录进行搜索。
    ag -w PATTERN                #全匹配搜索,只搜索与所搜内容完全匹配的文本。
    ag --java PATTERN            #在java文件中搜索含PATTERN的文本。
    ag --xml PATTERN             #在XML文件中搜索含PATTERN的

    split 命令  命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等

    参数:
    -b 按文件大小进行切割
    -l 按行数来进行切割
    -d 为使用数字为生成文件的后缀
    -a 指定后缀的长度
    -C 限制每个分隔文件大小
    
    split -b 30k messages    # 按照每个文件30K大小切割messages文件。
    split -l 300 messages    # 将messages文件切割为每3行一份。

    sort 命令  命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

    参数:
    -r 反序
    -n 按数字进行排序
    -M 按月份排序
    -b 忽略空白
    -R 随机排序
    -k 根据第几列进行排序(默认以空格分隔)
    -t 指定分隔符字段

    cat test |sort -t ":" -k 3n  

    -t 按照字段“:” 进行分隔;

    -k 指定第几列进行排序

    uniq 命令  用于报告或忽略文件中的重复行,一般与sort命令结合使用

    PS:排序(sort),后去重。因为uniq命令只能消除相邻且相同的行。

    cat 1.txt |sort -n |uniq              #排序去重
    cat 1.txt|sort -n |uniq -c            #列出重复的次数
    cat 1.txt |sort -n |uniq -d           #列出有哪些行是重复的

    # geoiplookup 查询ip地址区域

    yum install geoip

    apt-get install geoip

    geoiplookup 114.114.114.114

  • 相关阅读:
    支付扣款 并发 异步
    Floyd-Warshall算法
    black arch
    ChromeDriver only supports characters in the BMP
    Getting console.log output with Selenium Python API bindings
    微信公众号文章批量采集系统的构建
    node npm Bower
    PyPy CPython C++ connects programs written in C and C++ with a variety of high-level programming languages
    timeout connect 10000 # default 10 second time out if a backend is not found
    timeout connect 10000 # default 10 second time out if a backend is not found
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/16151594.html
Copyright © 2020-2023  润新知