kali系统概述、nmap扫描应用、john破解密码、抓包概述、以太网帧结构、抓包应用、wireshark应用、nginx安全加固、Linux系统加固

目录

kali

nmap扫描

使用john破解密码

抓包

封装与解封装

网络层数据包结构

TCP头部结构​编辑

UDP头部结构

实施抓包

安全加固

nginx安全

防止缓冲区溢出

Linux加固


kali

  • 实际上它就是一个预安装了很多安全工具的Debian Linux
[root@myhost ~]# kali resetkali reset OK.该虚拟机系统用户名为:kali,密码为: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.40kali@192.168.88.40's password: kali┌──(kali㉿kali)-[~]└─$ 

nmap扫描

  • 一般来说扫描是攻击的前奏。
  • 扫描可以识别目标对象是什么系统,开放了哪些服务。
  • 获知具体的服务软件及其版本号,可以使得攻击的成功率大大提升。
  • 扫描可以检测潜在的风险,也可以寻找攻击目标、收集信息、找到漏洞
  • windows下,扫描可以使用xscan / superscan
  • Linux,扫描可以采用nmap
  • 吾爱破解:吾爱破解 - LCG - LSG|安卓破解|病毒分析|www.52pojie.cn
  • 中国黑客团队论坛:https://www.cnhackteam.org/
  • 俄罗斯论坛:https://rutracker.org/
┌──(kali㉿kali)-[~]└─$ 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
  • 使用脚本扫描
# 通过脚本扫描目标主机的ftp服务# 在目标主机上安装vsftpd服务[root@web1 ~]# yum install -y vsftpd[root@web1 ~]# vim /etc/vsftpd/vsftpd.conf 12 anonymous_enable=YES[root@web1 ~]# systemctl enable vsftpd --now# 在kali主机上查看有哪些脚本┌──(kali㉿kali)-[~]└─$ ls /usr/share/nmap/scripts/# 扫描ftp服务是否支持匿名访问。ftp控制连接端口号是21┌──(kali㉿kali)-[~]└─$ sudo nmap --script=ftp-anon.nse 192.168.88.100 -p 2121/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
  • 扫描口令
# 通过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.pyfrom datetime import datetime, timedeltad1 = 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 += dtf.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
  • 扫描windows口令
[root@myhost ~]# cat /tmp/winuser.txt    # windows用户名administratoradmin# 通过samba服务扫描密码[root@myhost ~]# nmap --script=smb-brute.nse --script-args userdb=/tmp/winuser.txt,passdb=/tmp/mima 172.40.0.151

使用john破解密码

  • 在线破解哈希值的网站:md5在线解密破解,md5解密加密

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

    • 哈希算法是一种单向加密的算法,也就是将原始数据生成一串“乱码”
    • 只能通过原始数据,生成这串“乱码”,但是不能通过“乱码”回推出原始数据
    • 相同的原始数据,生成的乱码是相同的。
  • kali系统提供了一个名为john的工具,可用于密码破解

[root@web1 ~]# echo 123456 | passwd --stdin root[root@web1 ~]# useradd tom[root@web1 ~]# echo abc123 | passwd --stdin tom[root@web1 ~]# useradd jerry[root@web1 ~]# echo 123123 | passwd --stdin jerry[root@web1 ~]# scp /etc/shadow kali@192.168.88.40:/home/kali/# 字典暴力破解,密码本是/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

抓包

封装与解封装

  • MAC地址:分为目标和源MAC地址,6字节
  • Type:类型,说明数据帧中包含的数据类型
  • Data:高层数据
  • FCS:帧校验序列

网络层数据包结构

  • 版本:协议版本,如IPv4
  • 生存时间:8位,初始一个值n,每经过一个路由器减1,直到为0丢弃,目的为防止分组在网络上无限传播下去
  • 协议号:数据部分应交付的协议号,如TCP是6,UDP是17

TCP头部结构

  • 源端口:数据段的源端口,一般为大于1024的随机值
  • 目标端口:数据段的目标端口
  • 序号:在一个TCP连接中传输的数据段都按顺序编号

UDP头部结构

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

实施抓包

  • 传输的各种数据,在网络中都是一个个的数据包
┌──(kali㉿kali)-[~]└─$ 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.100Connected 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.100Connected 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
[root@myhost ~]# yum install wireshark ftp

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

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

安全加固

nginx安全

  • 安装启服务
[root@web1 ~]# yum install -y nginx[root@web1 ~]# systemctl enable nginx --now
  • 命令行访问不存在的路径:
[root@web1 ~]# curl -I http://192.168.88.100/HTTP/1.1 200 OKServer: nginx/1.14.1       # 版本号Date: Mon, 02 Jan 2023 02:54:45 GMTContent-Type: text/htmlContent-Length: 3429Last-Modified: Thu, 10 Jun 2021 09:09:03 GMTConnection: keep-aliveETag: "60c1d6af-d65"Accept-Ranges: bytes
  • 隐藏版本信息
[root@web1 ~]# vim /etc/nginx/nginx.conf... ...17 http {18     server_tokens off;... ...[root@web1 ~]# systemctl restart nginx.service 
  • 再次访问不存在的路径,版本号消失
[root@web1 ~]# curl -I http://192.168.88.100/HTTP/1.1 200 OKServer: nginx     # 没有版本号了Date: Mon, 02 Jan 2023 02:56:26 GMTContent-Type: text/htmlContent-Length: 3429Last-Modified: Thu, 10 Jun 2021 09:09:03 GMTConnection: keep-aliveETag: "60c1d6af-d65"Accept-Ranges: bytes
  • 防止DOS、DDOS攻击
  • DDOS:分布式拒绝服务
# 压力测试,每批次发送100个请求给web服务器,一共发200个[root@myhost ~]# yum install -y httpd-tools[root@myhost ~]# ab -c 100 -n 200 http://192.168.88.100/ ... ...Benchmarking 192.168.88.100 (be patient)Completed 100 requestsCompleted 200 requestsFinished 200 requests    # 发送200个请求完成... ... Complete requests:      200   # 完成了200个请求Failed requests:        0     # 0个失败... ...
  • 配置nginx连接共享内存为10M,每秒钟只接收一个请求,最多有5个请求排队,多余的拒绝
[root@web1 ~]# vim /etc/nginx/nginx.conf17 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 # 再次测试[root@myhost ~]# ab -c 100 -n 200 http://192.168.88.100/ ... ...Benchmarking 192.168.88.100 (be patient)Completed 100 requestsCompleted 200 requestsFinished 200 requests... ...Complete requests:      200Failed requests:        194   # 失败了194个... ...

防止缓冲区溢出

  • 缓冲区溢出定义:程序企图在预分配的缓冲区之外写数据。
  • 漏洞危害:用于更改程序执行流,控制函数返回值,执行任意代码。
# 配置nginx缓冲区大小,防止缓冲区溢出[root@web1 ~]# 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;... ...[root@web1 ~]# systemctl restart nginx.service 

Linux加固

  • 设置tom账号,有效期为2022-1-1
# 查看tom的账号信息[root@web1 ~]# chage -l tom最近一次密码修改时间                  :10月 12, 2021密码过期时间                  :从不密码失效时间                  :从不帐户过期时间                      :从不两次改变密码之间相距的最小天数     :0两次改变密码之间相距的最大天数     :99999在密码过期之前警告的天数    :7[root@web1 ~]# chage -E 2022-1-1 tom[root@web1 ~]# chage -l tom最近一次密码修改时间                  :10月 12, 2021密码过期时间                  :从不密码失效时间                  :从不帐户过期时间                      :1月 01, 2022两次改变密码之间相距的最小天数     :0两次改变密码之间相距的最大天数     :99999在密码过期之前警告的天数    :7# 设置账号永不过期,注意-E后面是数字-1,不是字母l[root@web1 ~]# chage -E -1 tom[root@web1 ~]# 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   # 新建用户最小的UID48 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 tomtom 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 zhangsanuseradd:无法打开 /etc/passwd[root@web1 ~]# rm -f /etc/passwdrm: 无法删除"/etc/passwd": 不允许的操作[root@web1 ~]# chattr -i /etc/passwd[root@web1 ~]# rm -f /etc/passwd   # 可以删除[root@web1 ~]# ls /etc/passwdls: 无法访问/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/hostsrm: 无法删除"/etc/hosts": 不允许的操作

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

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

相关文章

一、Docker/安装包部署ClickHouse

Docker/安装包部署ClickHouse 一、docker部署1.安装Docker2.拉取ClickHouse镜像2.1 选择拉取版本2.2 拉取镜像 3.启动ClickHouse3.1 确定好挂载目录3.2 测试环境3.3 生产环境3.1.1 获取配置文件3.1.2 配置文件中添加用户3.1.3 启动容器 4.使用DBeaver连接 二、安装包安装1.准备…

数据结构——线性表

逻辑结构——线性表 1.线性表的定义&#xff08;逻辑结构&#xff09; 要点&#xff1a; 相同数据类型有限序列 几个概念&#xff1a; 是线性表中的“第i个”元素线性表中的位序 是表头元素&#xff1b;是表尾元素。 除第一个元素外&#xff0c;每个元素有且仅有一个直接前驱&…

用C语言列出Linux或Unix上的网络适配器

上代码&#xff1a; 1. #include <sys/socket.h> 2. #include <stdio.h> 3. 4. #include <netdb.h> 5. #include <ifaddrs.h> 6. 7. int main() { 8. struct ifaddrs *addresses; 9. if(getifaddrs(&addresses) -1) { 10. printf("…

股票K线简介

股票K线&#xff08;K-Line&#xff09;是用于表示股票价格走势的图形&#xff0c;主要由四个关键价格点组成&#xff1a;开盘价、收盘价、最高价和最低价。K线图广泛应用于股票市场技术分析中&#xff0c;它提供了丰富的信息&#xff0c;帮助分析师和投资者理解市场的行情走势…

微信小程序(四十四)鉴权组件插槽-登入检测

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.鉴权组件插槽的用法 2.登入检测示范 源码&#xff1a; app.json {"usingComponents": {"auth":"/components/auth/auth"} }app.js App({globalData:{//定义全局变量isLoad:false} })…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表&#xff0c;也没有返回值的一个函数 定义一个有参数列表 &#xff0c;有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

七、热身仪式(Warm-Up Rituals)

5.Warm Up Rituals 五、热身仪式 A warm up ritual is your per flight checklist you go through before you start focusing for a big session.It may be checking that you have water, that you don’t need to use the bathroom, that your phone is turned off or you’…

docker 3.1 镜像

docker 3.1 镜像命令 拉取镜像 docker pull debian #从 Docker Hub 拉取名为 debian 的镜像docker pull hello-world #从 Docker Hub 拉入名为 hello-world 的镜像‍ 运行镜像/容器 docker run hello-world ‍ 查看本地所有的镜像 docker images​​ 容器生成镜像…

STM32 cubemx配置DMA+空闲中断接收不定长数据

文章目录 前言一、串口空闲中断二、DMA空闲中断接收不定长数据实现思路三、STM32Cubemx配置DMA空闲中断接收不定长数据四、代码编写总结 前言 本篇文章给大家讲解一下DMA串口空闲中断接收串口不定长数据&#xff0c;之前我们也是讲解过串口接收不定长数据的&#xff0c;那么本…

2024.2.14

二维数组实现杨辉三角形 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {int n;scanf("%d",&n);int a[n][n];for(int i0;i<n;i){for(int j0;j<i;j){if(j0||ij){ a[i][j]1;}else{a[i][j]a[i-1][j]a[i-1][j-…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议&#xff08;编码格式&#xff09;&#xff08;传输数据的格式&#xff09; 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…

函数求导法则【高数笔记】

【分类】 1. 四则运算求导 2. 复合运算求导 3. 整体思想求导 #整体思想求导本质是运用复合运算求导&#xff0c;只不过是对复合运算求导的一种精炼 #无论是具体函数还是抽象函数求导&#xff0c;方法是一致的 【四则运算求导】 加&#xff0c;减&#xff0c;乘&#xff0c;除&a…

代码随想录算法训练营第四十九天(动态规划篇)| 474. 一和零, 完全背包理论基础

474. 一和零 题目链接&#xff1a;https://leetcode.cn/problems/ones-and-zeroes/submissions/501607337/ 思路 之前的背包问题中&#xff0c;我们对背包的限制是容量&#xff0c;即每个背包装的物品的重量和不超过给定容量&#xff0c;这道题的限制是0和1的个数&#xff0…

寒假 day13

1.请编程实现二维数组的杨慧三角 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) { int n,i,j;printf("please enter n:");scanf("%d",&n);int arr[n][n];for(i0;i<n;i){for(j0;j<i;j){if(j0 || ij…

【51单片机】LCD1602(江科大)

1.LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:162个字符,每个字符为5*7点阵 2.引脚及应用电路 3.内部结构框图 屏幕: 字模库:类似于数码管的数…

HTML 超文本标记语言

超文本标记语言 HTML 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。 页面制作的标准语言&#xff1a;HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言&#xff0c;它消除了不同计算机之间信息交流的障碍&#xff0c…

“掌握温度,感知湿度,一触即知!”DHT11温湿度传感器,为您的生活增添一份关怀与精准。#非标协议【下】

“掌握温度&#xff0c;感知湿度&#xff0c;一触即知&#xff01;”DHT11温湿度传感器&#xff0c;为您的生活增添一份关怀与精准。#非标协议【下】 前言预备知识1.DHT11温湿度传感器初识1.1产品概述1.2与51单片机接线1.3数据传送逻辑和数据格式 2.发送时序检测DHT11温湿度传感…

2.14 指针练习

1、选择题 1.1、若有下面的变量定义&#xff0c;以下语句中合法的是&#xff08; A &#xff09;。 int i&#xff0c;a[10]&#xff0c;*p&#xff1b; A&#xff09; pa2; B&#xff09; pa[5]; C&#xff09; pa[2]2; D&#xff09; p&(i2); 解析&am…

数据库管理-第150期 Oracle Vector DB AI-02(20240212)

数据库管理150期 2024-02-12 数据库管理-第150期 Oracle Vector DB & AI-02&#xff08;20240212&#xff09;1 LLM2 LLM面临的挑战3 RAG4 向量数据库LLM总结 数据库管理-第150期 Oracle Vector DB & AI-02&#xff08;20240212&#xff09; 作者&#xff1a;胖头鱼的鱼…