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.mzph.cn/news/681656.shtml

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

相关文章

C#一维数组排序方法:选择排序法

目录 一、数组元素常见的排序法 1.选择排序法 二、实例1&#xff1a;选择排序法 1.源码 2.生成效果 一、数组元素常见的排序法 常见的排序法&#xff1a;选择排序法、冒泡排序法、快速排序法、直接插入法、希尔排序法、Array.Sort方法。 1.选择排序法 通过遍历实现排序&…

基于Qt的人脸识别项目(功能:颜值检测,口罩检测,表情检测,性别检测,年龄预测等)

完整代码链接在文章末尾 效果展示 代码讲解(待更新) qt图片文件上传 #include <QtWidgets> #include <QFileDialog>

多模态学习综述(MultiModal Learning)

最早开始关注到多模态机器学习是看到Jeff Dean在2019年年底NeurIPS大会上的一个采访报道&#xff0c;讲到了2020年机器学习趋势&#xff1a;多任务和多模态学习将成为突破口。 Jeff Dean 谈2020年机器学习趋势&#xff1a;多任务和多模式学习将成为突破口 站在2022年&#xff…

如何流畅进入Github

前言 以下软件是免费的&#xff0c;放心用 一、进入右边的下载链接https://steampp.net/ 二、点击下载 三、点击接受并下载 四、随便选一个下载链接进行下载 五、软件安装好打开后&#xff0c;找到Github 六、点击全部启用 七、再点击左上角的一键加速 八、这个时候你再进Git…

LAXCUS分布式操作系统目标:软件算力入口

英伟达现在的市值相当于整个中国股市&#xff01;说明了什么&#xff1f; AI 大潮下&#xff0c;算力就是生产力&#xff0c;也是未来 20 年一切产业的基础&#xff0c;英伟达已经把住硬件算力入口&#xff0c;LAXCUS 分布式操作系统瞄准软件算力入口&#xff0c;做好了&#…

Linux第53步_移植ST公司的linux内核第5步_系统镜像打包并烧录到EMMC

本节主要学习系统镜像打包&#xff0c;然后将打包文件烧录到EMMC测试。 1、创建bootfs文件夹 1)、打开第1个终端 输入“ls回车” 输入“cd linux/回车”&#xff0c;切换到“linux”目录 输入“ls回车”&#xff0c;列出“linux”目录下的文件和文件夹 输入“cd atk-mp1/…

Hive的相关概念——架构、数据存储、读写文件机制

目录 一、架构及组件介绍 1.1 Hive整体架构 1.2 Hive组件 1.3 Hive数据模型&#xff08;Data Model&#xff09; 1.3.1 Databases 1.3.2 Tables 1.3.3 Partitions 1.3.4 Buckets 二、Hive读写文件机制 2.1 SerDe 作用 2.2 Hive读写文件流程 2.2.1 读取文件的过程 …

线性时间非比较类排序之基数排序

基数排序 基数排序是桶排序的扩展&#xff0c;因此又称“桶子法”&#xff0c;它是通过键值的部分信息&#xff0c;将要排序的元素分配至某些“桶”中&#xff0c;以达到排序的作用。 1. 算法思想 将各元素按位数切割成不同的数字&#xff0c;然后分别根据每个位数的比较结果…

【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

C#使用密封类密封用户信息

目录 一、涉及到的知识点 1.密封类定义 2.何时使用密封类 3.使用密封类的注意事项 二、实例1 三、实例2 1.源码 2.生成效果 在C#中&#xff0c;密封类&#xff08;sealed class&#xff09;是一种不能被其他类继承的类。它用于防止其他类继承它的功能和属性。 一、涉…

深度解析 Netty 架构与原理

一共 28661字&#xff0c;耐心看完。 在阅读本文前最好有 Java 的 IO 编程经验&#xff08;知道 Java 的各种 IO 流&#xff09;&#xff0c;以及 Java 网络编程经验&#xff08;用 ServerSocket 和 Socket 写过 demo&#xff09;&#xff0c;并对 Java NIO 有基本的认识&…

linux---内存管理

一 虚拟内存 即使是现代操作系统中&#xff0c;内存依然是计算机中很宝贵的资源&#xff0c;看看你电脑几个T固态硬盘&#xff0c;再看看内存大小就知道了。 为了充分利用和管理系统内存资源&#xff0c;Linux采用虚拟内存管理技术&#xff0c;利用虚拟内存技术让每个进程都有…

计算机网络——09Web-and-HTTP

Web and HTTP 一些术语 Web页&#xff1a;由一些对象组成对象可以是HTML文件、JPEG图像&#xff0c;JAVA小程序&#xff0c;声音剪辑文件等Web页含有一个基本的HTML文件&#xff0c;该基本HTML文件又包含若干对象的引用&#xff08;链接&#xff09;通过URL对每个对象进行引用…

权限提升:利用Linux错配提权

目录 Linux权限基础 Linux用户权限 Linux文件权限 特殊的Linux文件权限 Linux本机信息收集 Linux错配提权 crontab计划任务提权 SUID提权 Linux权限基础 Linux用户权限 在Linux中&#xff0c;根据权限的不同&#xff0c;大致可以分为三种&#xff1a;超级用户&#x…

npm install 安装依赖如何加速

在使用npm安装依赖时&#xff0c;有几种方法可以加速这一过程&#xff0c;尤其是在面临网络限制或npm官方源速度慢的情况下。以下是一些常用的加速技巧&#xff1a; 1. 使用国内镜像源 国内有几个镜像源可以提供更快的下载速度&#xff0c;例如淘宝npm镜像。你可以通过以下命…

通过QT制作一个模仿微信主界面的界面(不要求实现具体通信功能)

main.cpp #include "widget.h" #include "second.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();//实例化第二个界面Second s;QObject::connect(&w, &Widget::my_jump, &…

Linux线程库封装

一 MyThread.hpp #pragma once #include<pthread.h> #include<iostream> #include<unistd.h> #include<string> #include<ctime>typedef void (*callback_t)(); static int num 1; //任务和线程绑定 class Thread {static void* Routine(void …

力扣精选算法100道——矩阵区域和 (前缀和专题)

目录 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f388;实现代码 &#x1f388;了解题意 给定一个大小为 m x n 的矩阵 mat 和一个整数 k&#xff0c;你需要计算一个新的矩阵 answer&#xff0c;其中每个 answer[i][j] 表示矩阵 mat 中以坐标 (i, j) 为中心、边…

论文阅读-Pegasus:通过网络内一致性目录容忍分布式存储中的偏斜工作负载

论文名称&#xff1a;Pegasus: Tolerating Skewed Workloads in Distributed Storage with In-Network Coherence Directories 摘要 高性能分布式存储系统面临着由于偏斜和动态工作负载引起的负载不平衡的挑战。本文介绍了Pegasus&#xff0c;这是一个利用新一代可编程交换机…

CSS 评分器星星效果

<template><view class="rating"><!-- 5颗星 --><input value="5" name="rating" id="star5" type="radio"><label for="star5"></label><!-- 4颗星 --><input val…