Kali安全

基础配置

$ ip a s    # 查看网络IP地址,本例中查看到的是192.168.88.40

$ sudo systemctl start ssh      # 启ssh服务,弹出的窗口输入密码kali

$ sudo systemctl enable ssh     # 设置ssh服务开机自启

[root@myhost ~]# ssh kali@192.168.88.40

nmap扫描

一般来说扫描是攻击的前奏。

扫描可以识别目标对象是什么系统,开放了哪些服务。

获知具体的服务软件及其版本号,可以使得攻击的成功率大大提升。

扫描可以检测潜在的风险,也可以寻找攻击目标、收集信息、找到漏洞

windows下,扫描可以使用xscan / superscan

Linux,扫描可以采用nmap

吾爱破解:https://www.52pojie.cn/

中国黑客团队论坛:https://www.cnhackteam.org/

俄罗斯论坛:https://rutracker.org/

nmap

-sT: TCP扫描。

-U: 扫描目标的UDP端口。

-sP:ping扫描

-A:对目标系统全面分析

扫描整个网段,哪机器可以ping通

┌──(kali㉿kali)-[~]

└─$ nmap -sP 192.168.88.0/24

扫描192.168.88.100开放了哪些TCP端口

┌──(kali㉿kali)-[~]

└─$ sudo nmap -sT 192.168.88.100

扫描192.168.88.100开放了哪些UDP端口。非常耗时!

┌──(kali㉿kali)-[~]

└─$ sudo nmap -sU 192.168.88.100

全面扫描192.168.88.100系统信息

┌──(kali㉿kali)-[~]

└─$ sudo nmap -A 192.168.88.100

使用脚本扫描

在kali主机上查看有哪些脚本

┌──(kali㉿kali)-[~]

└─$ ls /usr/share/nmap/scripts/

扫描ftp服务是否支持匿名访问。ftp控制连接端口号是21

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ftp-anon.nse 192.168.88.100 -p 21

21/tcp open ftp

| ftp-anon: Anonymous FTP login allowed   # 允许匿名访问

扫描ftp相关信息,如版本号、带宽限制等

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ftp-syst.nse 192.168.88.100 -p 21

扫描ftp后门漏洞

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ftp-vsftpd-backdoor 192.168.88.100 -p 21

passwd --stdin 用户名 <<< 密码

扫描口令

穷举法 字典法

通过ssh协议,使用nmap自带的密码本扫描远程主机的用户名和密码

在目标主机上创建名为admin的用户,密码为123456

[root@web1 ~]# useradd admin

[root@web1 ~]# echo 123456 | passwd --stdin admin

在kali上扫描弱密码

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ssh-brute.nse 192.168.88.100 -p 22

使用字典法 寻找密码

通过ssh协议,使用nmap以及自己的密码本扫描远程主机的密码

1. 创建用户名文件

┌──(kali㉿kali)-[~]

└─$ sudo echo root > /tmp/users.txt

                                                       

┌──(kali㉿kali)-[~]

└─$ cat /tmp/users.txt

root

2. 生成1990-01-01到2020-12-31之间的所月日期

┌──(kali㉿kali)-[~]

└─$ vim mydate.py

from datetime import datetime, timedelta

d1 = datetime(1989, 12, 31)

d2 = datetime(2021, 1, 1)

dt = timedelta(days=1)

with open('/tmp/mima.txt', 'w') as f:

   while d1 < d2:

      d1 += dt

      f.write("%s\n" % d1.strftime('%Y%m%d'))

┌──(kali㉿kali)-[~]

└─$ python3 mydate.py

3. 修改web1的密码

[root@web1 ~]# echo 19910101 | passwd --stdin root

4. 使用自己的密码本破解密码

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ssh-brute.nse --script-args userdb=/tmp/users.txt,passdb=/tmp/mima.txt 192.168.88.100 -p 22

5. 目标主机将会记录所有的登陆事件

[root@web1 ~]# vim /var/log/secure

查看最近的登陆失败事件

[root@web1 ~]# lastb

查看最近的登陆成功事件

[root@web1 ~]# last

防护 方式 封对方的IP 锁定对方破解密码的用户

扫描windows口令

[root@myhost ~]# cat /tmp/winuser.txt   # windows用户名

administrator

admin

通过samba服务扫描密码

[root@myhost ~]# nmap --script=smb-brute.nse --script-args userdb=/tmp/winuser.txt,passdb=/tmp/mima 172.40.0.151

使用john破解密码

在线破解哈希值的网站:https://cmd5.com/

哈希是算法,英文hash的音译,包括md5、sha等

哈希算法是一种单向加密的算法,也就是将原始数据生成一串“乱码”

只能通过原始数据,生成这串“乱码”,但是不能通过“乱码”回推出原始数据

相同的原始数据,生成的乱码是相同的。

kali系统提供了一个名为john的工具,可用于密码破解

字典暴力破解,密码本是/usr/share/john/password.lst

┌──(kali㉿kali)-[~]

└─$ sudo john shadow  

直接显示破解的密码,不显示其他额外信息

┌──(kali㉿kali)-[~]

└─$ sudo john --show shadow                

root:123456:18912:0:99999:7:::

tom:abc123:18912:0:99999:7:::

jerry:123123:18912:0:99999:7:::

字典暴力破解,指定密码本文件

┌──(kali㉿kali)-[~]

└─$ sudo john --wordlist=/tmp/mima.txt shadow

john + 密码本 来破解

抓包

封装与解封装

以太网数据帧结构

MAC地址:分为目标和源MAC地址,6字节

Type:类型,说明数据帧中包含的数据类型

Data:高层数据

FCS:帧校验序列

网络层数据包结构

版本:协议版本,如IPv4

生存时间:8位,初始一个值n,每经过一个路由器减1,直到为0丢弃,目的为防止分组在网络上无限传播下去

协议号:数据部分应交付的协议号,如TCP是6,UDP是17

TCP头部结构

源端口:数据段的源端口,一般为大于1024的随机值

目标端口:数据段的目标端口

序号:在一个TCP连接中传输的数据段都按顺序编号

UDP头部结构

源端口:数据段的源端口,一般为大于1024的随机值

目标端口:数据段的目标端口

实施抓包

传输的各种数据,在网络中都是一个个的数据包

$ sudo tcpdump

-i:指定抓取哪块网卡进入的数据包

-A:转换为ASCII码,使得可读

-w:抓包写入文件

-r:从文件中读取抓包信息

抓包时可以过滤要抓哪些包

使用host过滤主机,使用net过滤网段,使用port过滤端口... ...

1. 抓包:抓取eth0上进出的、与192.168.88.100有关的、涉及TCP21端口的数据包。以下命令执行后,打开新终端。

┌──(kali㉿kali)-[~]

└─$ sudo tcpdump -i eth0 -A host 192.168.88.100 and tcp port 21

2. 在新终端登陆ftp

┌──(kali㉿kali)-[~]

└─$ ftp 192.168.88.100

Connected to 192.168.88.100.

220 (vsFTPd 3.0.2)

Name (192.168.88.11:kali): tom   # 用户名

331 Please specify the password.

Password:abc123   # 此处是tom的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit    # 退出

221 Goodbye.

3.在tcpdump终端可以看到明文的用户名和密码

保存抓包文件

1. 将抓到的包存入文件ftp.cap

┌──(kali㉿kali)-[~]

└─$ sudo tcpdump -i eth0 -A -w ftp.cap host 192.168.88.100 and tcp port 21

2. 在另一个终端访问ftp

在新终端登陆ftp

┌──(kali㉿kali)-[~]

└─$ ftp 192.168.88.100

Connected to 192.168.88.100.

220 (vsFTPd 3.0.2)

Name (192.168.88.11:kali): tom   # 用户名

331 Please specify the password.

Password:abc123   # 此处是tom的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit    # 退出

221 Goodbye.

3. 在抓包终端ctrl+c停止

4. 读取抓到的包,并过滤

┌──(kali㉿kali)-[~]

└─$ tcpdump -A -r ftp.cap | egrep 'USER|PASS'

图形工具:wireshark

yum install wireshark ftp

选择抓哪块网卡进出的数据,然后点左上角的开始

抓到包后,点击左上角同样位置停止,查看数据

安全加固

nginx安全

安装启服务

yum install -y nginx

systemctl enable nginx --now

命令行访问不存在的路径:

curl -I http://192.168.88.100/

HTTP/1.1 200 OK

Server: nginx/1.14.1       # 版本号

隐藏版本信息

vim /etc/nginx/nginx.conf

... ...

17 http {

18     server_tokens off;

... ...

systemctl restart nginx.service

再次访问不存在的路径,版本号消失

curl -I http://192.168.88.100/

HTTP/1.1 200 OK

Server: nginx     # 没有版本号了

防止DOS、DDOS攻击

DDOS:分布式拒绝服务

配置nginx连接共享内存为10M,每秒钟只接收一个请求,最多有5个请求排队,多余的拒绝

vim /etc/nginx/nginx.conf

17 http {

18     limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;   # 添加

... ...

40     server {

41         listen       80 default_server;

42         listen       [::]:80 default_server;

43         server_name _;

44         root         /usr/share/nginx/html;

45         limit_req zone=one burst=5;  # 添加

[root@web1 ~]# systemctl restart nginx.service

再次测试

就会失败一些

防止缓冲区溢出

缓冲区溢出定义:程序企图在预分配的缓冲区之外写数据。

漏洞危害:用于更改程序执行流,控制函数返回值,执行任意代码。

vim /etc/nginx/nginx.conf

... ...

17 http {

18     client_body_buffer_size     1k;

19     client_header_buffer_size   1k;

20     client_max_body_size       1k;

21     large_client_header_buffers 2 1k;

Linux加固

设置tom账号,有效期为2022-1-1

chage -l tom

最近一次密码修改时间 :10月 12, 2021

密码过期时间 :从不

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :99999

在密码过期之前警告的天数 :7

chage -E 2022-1-1 tom

chage -l tom

chage -m 1 -M 90 -W 7 -I 15 -E 2025-2-1 tom

-m 两次改变密码之间相距的最小天数

-M 两次改变密码之间相距的最大天数

-W 在密码过期之前警告的天数

-I 密码失效时间

-E 帐户过期时间

最近一次密码修改时间 :10月 12, 2021

密码过期时间 :从不

密码失效时间 :从不

帐户过期时间 :1月 01, 2022

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :99999

在密码过期之前警告的天数 :7

设置账号永不过期,注意-E后面是数字-1,不是字母l

chage -E -1 tom

chage -l tom

最近一次密码修改时间 :10月 12, 2021

密码过期时间 :从不

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :99999

在密码过期之前警告的天数 :7

设置新建用户的密码策略

[root@web1 ~]# vim /etc/login.defs

39 PASS_MAX_DAYS   99999    # 密码永不过期,设置最长有效期

40 PASS_MIN_DAYS   0        # 密码最短使用时间,0表示随时可改密码

41 PASS_MIN_LEN    5        # 密码最短长度

42 PASS_WARN_AGE   7        # 密码过期前7天发警告

47 UID_MIN                  1000   # 新建用户最小的UID

48 UID_MAX                 60000   # 新建用户最大的UID

不会对现有用户生效的 对新建后的账号才会改变

用户安全设置

锁定tom账号

[root@web1 ~]# passwd -l tom

锁定用户 tom 的密码 。

passwd: 操作成功

[root@web1 ~]# passwd -S tom   # 查看状态

tom LK 2021-10-12 0 99999 7 -1 (密码已被锁定。)

解锁tom账号

[root@web1 ~]# passwd -u tom

解锁用户 tom 的密码。

passwd: 操作成功

[root@web1 ~]# passwd -S tom

tom PS 2021-10-12 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

保护文件

会有一个备份文件如果吴删除的话 文件名- 就是备份

查看文件的特殊属性

[root@web1 ~]# lsattr /etc/passwd

---------------- /etc/passwd    # 没有特殊属性

修改属性

chattr +i 文件    # 不允许对文件做任何操作,只能看

chattr -i 文件    # 去除i属性

chattr +a 文件    # 文件只允许追加

chattr -a 文件    # 去除a属性

[root@web1 ~]# chattr +i /etc/passwd

[root@web1 ~]# lsattr /etc/passwd

----i----------- /etc/passwd

[root@web1 ~]# useradd zhangsan

useradd:无法打开 /etc/passwd

[root@web1 ~]# rm -f /etc/passwd

rm: 无法删除"/etc/passwd": 不允许的操作

[root@web1 ~]# chattr -i /etc/passwd

[root@web1 ~]# rm -f /etc/passwd   # 可以删除

[root@web1 ~]# ls /etc/passwd

ls: 无法访问/etc/passwd: 没有那个文件或目录

恢复passwd文件

[root@web1 ~]# cp /etc/passwd- /etc/passwd

追加

[root@web1 ~]# chattr +a /etc/hosts

[root@web1 ~]# echo 'hello world' >> /etc/hosts

[root@web1 ~]# rm -f /etc/hosts

rm: 无法删除"/etc/hosts": 不允许的操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SuperGluePretrainedNetwork调用接口版本(两个版本!)

本脚本是一个基于Python的应用&#xff0c;旨在演示如何使用SuperGlue算法进行图像之间的特征匹配。SuperGlue是一个强大的特征匹配工具&#xff0c;能够在不同的图像之间找到对应的关键点。这个工具尤其适用于计算机视觉任务&#xff0c;如立体视觉、图像拼接、对象识别和追踪…

0基础刷图论最短路 2(从ATcoder 0分到1800分)

AT最短路刷题2&#xff08;本文难度rated 1000~ 1200&#xff09; 题目来源&#xff1a;Atcoder 题目收集&#xff1a; https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path &#xff08;里面按tag分类好了Atcoder的所有题目&#xff0c;类似cf&#xff09; &#x…

RN封装三角形组件(只支持上下箭头)

import React from react; import { View, StyleSheet } from react-native;const Triangle ({ direction, width, height, color }) > {// 根据方向选择三角形的样式const triangleStyle direction up? {borderTopWidth: 0,borderBottomWidth: height,borderLeftWidth: …

docker完美安装分布式任务调度平台XXL-JOB

分布式任务调度平台XXL-JOB 1、官方文档 自己看 https://www.xuxueli.com/xxl-job/#1.1%20%E6%A6%82%E8%BF%B0 2、使用docker部署 本人使用的腾讯云&#xff0c;安装docker暴露一下端口&#xff0c;就很舒服的安装这个服务了。 docker pull xuxueli/xxl-job-admin:2.4.03…

Harmony鸿蒙南向驱动开发-PIN接口使用

功能简介 PIN即管脚控制器&#xff0c;用于统一管理各SoC的管脚资源&#xff0c;对外提供管脚复用功能&#xff1a;包括管脚推拉方式、管脚推拉强度以及管脚功能。 PIN接口定义了操作PIN管脚的通用方法集合&#xff0c;包括&#xff1a; 获取/释放管脚描述句柄&#xff1a;传…

代码随想录算法训练营第三十七天|● 738.单调递增的数字 ● 968.监控二叉树

738.单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string a to_string(n);int k 0;for (int i a.size() - 1; i > 0; i--) {if (a[i] < a[i - 1]) {k i;a[i-1]--;}}cout << k << endl;if (k ! 0){for (int i a.size…

c# Xml 和 Json 转换方法记录

c# xml 转 json 在C#中&#xff0c;可以使用下面几种方法将XML转换为JSON&#xff1a; 使用Newtonsoft.Json库&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.Xml;// 从XML字符串转换为JSON字符串 string …

安卓手机APP开发的媒体相关内容播放列表

安卓手机APP开发的媒体相关内容播放列表 目录 概述 修改播放列表 查询播放列表 重复模式 随机模式 设置一个定制的随机顺序 标识播放列表中的媒体项 把APP数据和播放列表媒体项关联起来

好玩的Unicode表情

Unicode表情符号是Unicode标准的一部分&#xff0c;适用于任何支持Unicode编码的语言和平台。Unicode是一种国际通用的字符编码标准&#xff0c;它涵盖了世界上几乎所有的文字、符号和表情符号&#xff0c;确保不同系统间的信息交换能够准确无误。 分类方式 表情符号&#xf…

如何保证数据库、缓存的双写一致?

文章目录 前言常见方案更新缓存的方案1. 先写缓存&#xff0c;再写数据库2. 先写数据库&#xff0c;再写缓存2.1. 写缓存失败2.2. 高并发问题2.3. 性能浪费 3. 先删缓存&#xff0c;再写数据库3.1. 高并发问题3.2. 缓存双删 4. 先写数据库&#xff0c;再删缓存5. 删除缓存失败怎…

单例模式a

为什么需要单例模式&#xff1f; 保证类的实例在全局只有一个&#xff0c;避免无效对象创建和销毁时的资源消耗。 在Java中一切都是对象&#xff0c;实例方法的调用需要通过对象&#xff0c;为了调用类中的方法而创建对象&#xff0c;方法调用完成之后对象也需要被GC回收&…

Stable Diffusion之Ubuntu下部署

1、安装conda环境 conda create -n webui python3.10.6 2、激活环境 每次使用都要激活 conda activate webui 注意开始位置的变换 关闭环境 conda deactivate webui 3、离线下载SD 代码 https://github.com/AUTOMATIC1111/stable-diffusion-webui https://github.com/Stabilit…

CentOS7.9.2009安装Kibana7.11.1

本文章使用CentOS7.9.2009服务器安装kibana7.11.1软件 1.服务器信息 [root@elasticsearch ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@elasticsearch ~]# 2.kibana安装 2.1.创建kibana用户 创建kibana用户和组 命令: useradd kibana [r…

10个大型语言模型(LLM)常见面试问题和答案解析

今天我们来总结以下大型语言模型面试中常问的问题 1、哪种技术有助于减轻基于提示的学习中的偏见? A.微调 Fine-tuning B.数据增强 Data augmentation C.提示校准 Prompt calibration D.梯度裁剪 Gradient clipping 答案:C 提示校准包括调整提示&#xff0c;尽量减少产生…

SQL注入sqli_labs靶场第九、十题

第九题 ?id1 and 11 页面正常 ?id1 and 12 页面正常 ?id1 and 11 页面正常 ?id1 and 12 页面正常 输入任何信息&#xff0c;均显示相同页面&#xff0c;尝试延时注入判断 ?id1 and if(11,sleep(5),1)-- 页面迅速显示 ?id1 and if(11,sleep(5),1)-- 页面过了5秒显示 判断为…

http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host

事实证明人有的时候也不能太偷懒&#xff0c;太偷懒容易给自己埋坑。 问题的背景&#xff1a; web端调用服务A&#xff0c;服务A异步调用服务B。服务A有四个场景需要调用服务B&#xff0c;所以&#xff0c;服务A中封装了一个公用的方法&#xff0c;唯一的区别是&#xff0c;场…

IDEA 控制台中文乱码 4 种解决方案

前言 IntelliJ IDEA 如果不进行相关设置&#xff0c;可能会导致控制台中文乱码、配置文件中文乱码等问题&#xff0c;非常影响编码过程中进行问题追踪。本文总结了 IDEA 中常见的中文乱码解决方法&#xff0c;希望能够帮助到大家。 IDEA 中文乱码 解决方案 一、设置字体为支…

手机银行客户端框架之mPaaS介绍

移动开发平台&#xff08;Mobile PaaS&#xff0c;简称 mPaaS&#xff09;是源于支付宝 App 的移动开发平台&#xff0c;为移动开发、测试、运营及运维提供云到端的一站式解决方案&#xff0c;能有效降低技术门槛、减少研发成本、提升开发效率&#xff0c;协助企业快速搭建稳定…

H. GCD is Greater

H. GCD is Greater 题意 给定一个长度为 n n n的数组 a a a&#xff0c;先手选择 [ 2 , n − 2 ] [2,n-2] [2,n−2]个数并计算所选择数的gcd&#xff0c;后手选择剩下的数&#xff0c;并计算剩下所有的数按位与的结果&#xff0c;再加上给定的 x x x&#xff0c;如果先手的结果…

Docker Redis Debian服务器版

1.使用官方安装脚本自动安装docker 安装命令如下&#xff1a; curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh 如果安装提示 -bash sudo command not found 则需要 #update sudo apt-get update sudo apt-get install sudo再执行安装脚本1 安装…