局域网安全->系统安全->协议安全->边界安全->传输安全
web安全->数据库安全->应用安全->网页安全->社会工程学
什么是网络安全
保护网络系统中的硬件/软件及其中的数据不遭到破坏/更改/泄露。
确保网络系统连续/可靠/正常地运行,确保网络服务不中断。
主要包括两个方面:
- 攻击层面:指针对计算机信息系统、基础设施、计算机网络和个人计算机的任何类型的进攻动作。
- 防御层面:面对各类网络攻击的检测、处置、记录、溯源、容错等动作。
网络安全法
网络安全法明确提出网络运营者和服务提供者有责任确保网络设备设施安全、网络运行安全、网络数据安全。
《网上银行信息安全通用规范》:要求网上在线交易系统必须具备防SQL注入、跨站攻击XSS、敏感信息泄露等WEB攻击能力。
国办发[2017]47号文件《政府网站发展指引》:政府网站要求贯彻网络安全等级保护制度,对攻击、入侵和破坏政府网站的行为进行防范,确保网络稳定、可靠、安全运行。
公安部令第82号:开办门户网站、电子商务网站、新网网站的,能够防范网站/网页被篡改,被篡改后能够自动恢复。
法律规定:2017年6月1日颁布的《网络安全法》中,在做相关的安全测试过程中,首先要获得目标系统客户的授权才可以实施测试,如果未经授权,直接进行测试的话,属于违法行为。
网络攻击手段和威胁
- 木马
- 键盘记录
- 远程截图、远程控制摄像头
- 盗取账号密码
- 病毒/恶意程序
- 破坏数据
- 主机崩溃
- 勒索
- 漏洞利用
- 利用漏洞安装非法程序
- 利用漏洞获取非法指令
- 利用漏洞获取特权
- 暴力破解
- wifi密码
- 系统密码
- 文件密码
- 系统扫描
- 系统类型
- 系统版本
- 开放端口
- 漏洞
- 拒绝服务
- DoS:耗尽资源
- DDoS:分布式拒绝服务
- 网络钓鱼
- 假冒网站,诱骗用户访问,诱骗用户输入隐私信息
- 骗取账号、密码
- 中间人攻击–MITM(Man-in-the-Middle)
- 截取密码
- 篡改数据
- 例如ARP欺骗、浏览器劫持(点击目标网站但跳转到另一个网站)、HTTP盗取数据、篡改数据
网络渗透和防御
什么是网络渗透
网络渗透=渗透测试=系统渗透
渗透测试的目的不是为了攻击目标网络,而是通过渗透测试来发现对方网络的问题、漏洞、安全性问题,最终给出测试报告,提出加固方案。
通过模拟黑客入侵的方式,对系统进行破坏性的安全性测试。
针对结果给出测试报告、安全加固建议。
流程:确认目标、收集信息、实施渗透、横向渗透、提示权限、清除痕迹、测试报告。
- 确认目标:与对方公司合作或自己模拟测试场景,需要报备,获取对方授权才能进行渗透,否则违法。
- 信息收集:了解和收集对方相关的账号密码、数据等需不需要备份,IP地址、服务器域名,相关服务器和服务在什么时间点可以停机,在这个时间段内进行测试。
- 实施渗透:在允许的时间内和允许的范围内进行渗透测试,发现对方是否存在漏洞。
- 横向渗透:破解一台存在漏洞的主机,通过这台主机为跳板去入侵其他主机,获取其他设备的信息。
- 提升权限:入侵目标主机后,获取相关权限,用户和组管理、本地策略管理,想方设法成为域网络中的高权限用户。
- 痕迹清除:做完渗透测试后,对于合作测设要彻底清除痕迹,职业操守;为了方便下次入侵,可以植入后门程序,避免被发现。同样这个后门程序为了不被发现,需要做掩盖,如伪装成不被安全软件查杀和不被用户发现的文件。
- 测试报告:最后基于测试结构,针对存在的漏洞和安全性问题,总结测试报告,提供加固建议。
网络防御场景
互联网边界防护:保护内网免受外部攻击。
IDC/服务器集群:提供虚拟软件补丁服务,保证服务器最大正常运行时间,提高可靠性。部署入侵检测、漏洞扫描,提供安全性。
分支互联:低于来自分支机构攻击,保护广域网线路带宽。
部门内部防护:抑制内网恶意流量,低于内网攻击。使用行为管理设备,管理内部出现恶意软件传播,管理内网员工访问外网导致流量增多,影响内网通信。
KALI系统
基于debain
预安装了许多软件如wireshark、NMAP、Metasploit等等
官网:www.kali.com
扫描工具
扫描工具–NMAP
- NMAP是一款系统扫描工具,安全检测工具。
- 攻击者可以用来探测目标网络或主机,
- 获取目标的系统类型,软件版本、端口开放等情况。
- 发现已知或存在的漏洞。
- 防护者可以根据扫描结果采取相应的安全策略
- 修复系统漏洞、封堵系统漏洞
- 加固系统
- 完善访问控制
- 基本用法
- nmap [扫描类型] [选项] <扫描结果…>
- 常用的扫描类型
- -sS, TCP SYN(半开扫描)
- -sS ,TCP连接扫描(全开扫描)
- -sU,UDP扫描
- -sP,ICMP扫描
- 提权:
- sudo -i,提升为root用户
- passwd root ,按提示修改密码即可。
- reboot 重启系统。
- 后续登录可用root登录。
TCP/IP三次握手和四次挥手
- 第一次握手:(SYN包)
- 客户端:发送第一个SYN包,包含初始化序列号(SEQ=x,占4字节),进入 SYNsent 状态。
- 服务器:服务器收到SYN包以后,分配连接资源,进入SYN Recv状态,并准备回复。
- 第二次握手:(SYN+ACK包)
- 服务器:服务器发送一个 SYN+ACK 包,包含自己的初始化序列号(SEQ=y,四字节),和对客户端序列号的确认(ACK=x+1,四字节)。
- 客户端:客户端收到后,分配连接资源,进入 EASTABLISHED 状态。
- 第三次握手:(ACK包)
- 客户端:客户端发送ACK包,确认服务器的序列号(ACK=y+1),并更新自己的序列号(SEQ=x+1)。
- 服务器:服务器收到客户端发送的ACK后,进入 EASTABLISHED 状态,连接正式建立,双方开始数据传输。
- 序列号:在建立连接时由内核生成的随机数作为其初始值,通过 SYN 报文传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。
- 确认号:指下一次「期望」收到的数据的序列号,发送端收到接收方发来的 ACK 确认报文以后,就可以认为在这个序号以前的数据都已经被正常接收。用来解决丢包的问题。
- 控制位:用来标识 TCP 报文是什么类型的报文,比如是 SYN 报文、数据报文、ACK 报文,FIN 报文等。
- 实例流程:假设客户端的初始序列号为x=100,服务器初始序列号为y=200;
- 第一次握手:客户端发送 SYN=1,seq=100。
- 第二次握手:服务器回复 SYN=1,ACK=1,seq=200,ACK=101。
- 第三次握手:客户端发送 ACK=1,seq=101,ACK=201。
- 每次握手的含义:
- 第一次握手,客户端什么都不能确认,服务端可以确认对方发送正常,自己接受正常。
- 第二次握手,客户端接受到服务端的消息,确认自己发送、接受正常;对方发送、接受正常。
- 第三次握手,客户端确认自己发送、接受正常;服务端确认自己发送、接受正常。
- 三次握手的意义:
- 同步序列号:通过随机序初始化序列号防止历史连接干扰。
- 双向确认:三次握手可确保通信双方均具备通信能力,避免单向连接失败。
- 防攻击机制:SYN泛洪攻击通过伪造SYN包耗尽服务器资源,而三次握手机制的ACK确认可以部分缓解此类攻击。
SMAP扫描示例:
nmap 192.168.110.129:扫描指定IP地址的主机,以获取其开放的端口、运行的服务和操作系统等信息。
开放端口:确定目标主机上哪些TCP和UDP端口是开放的,这有助于了解目标主机提供了哪些网络服务。
端口状态:显示端口的具体状态,如open(开放)、closed(关闭)或filtered(过滤)。
扫描指定IP地址的主机,以获取其开放的端口、运行的服务和操作系统等信息
┌──(kali㉿kali)-[~]
└─$ nmap 192.168.110.129
Starting Nmap 7.91 ( https://nmap.org ) at 2025-04-13 21:03 CST
Nmap scan report for 192.168.110.129 (192.168.110.129)
Host is up (0.00028s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1433/tcp open ms-sql-s
2383/tcp open ms-olap4
扫描目标IP地址的3389端口开放状态:
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sS -p 3389 192.168.100.129
Starting Nmap 7.91 ( https://nmap.org ) at 2025-04-14 00:38 CST
Nmap scan report for 192.168.100.129 (192.168.100.129)
Host is up (0.00059s latency).
PORT STATE SERVICE
3389/tcp filtered ms-wbt-server
Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds
扫描目标主机80端口开放状态:
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sS -p 80 192.168.100.129
Starting Nmap 7.91 ( https://nmap.org ) at 2025-04-14 00:41 CST
Nmap scan report for 192.168.100.129 (192.168.100.129)
Host is up (0.00064s latency).
PORT STATE SERVICE
80/tcp filtered http
Nmap done: 1 IP address (1 host up) scanned in 0.40 seconds
暴力破解
什么是暴力破解?
1.指使用各种密码组合反复进行验证,直到找出正确密码。
2.也称为“密码穷举”,多用于密码攻击领域。
3.从理论上来说,任何密码都可以用这种方法来破解,只不过越复杂的密码需要的破解时间越长。
什么是密码字典?
指用来尝试的所有密码的集合。
生成密码字典工具 — crunch
kali环境下,使用工具 — crunch来生成密码字典,用于使用Hydra来进行暴力破解
基本语法:crunch <最小长度> <最大长度> [<字符集字符串>] [选项]
参数说明:
最小长度:密码的最短长度(必须指定,即使不使用)。
最大长度:密码的最长长度(必须指定,即使不使用)。
字符集字符串:可选,默认使用 小写字母 + 大写字母 + 数字 + 特殊符号
,顺序必须严格遵循此规则。若需包含空格,需用反斜杠转义或引号包裹。
选项:控制输出格式、限制条件等。
选项 | 作用 | 实例 |
---|---|---|
-o 文件名 | 将输出结果输出到指定文件 | crunch 6 6 -o passwd.txt |
-t 模板 | 定义密码格式(如@代表小写字母,%代表数字) | crunch 5 5 -t @%%@^ -o passwd.txt (生成格式如a12b!) |
-d 次数@类型 | 限制重复字符(如-d 2@ 表示小写字母最多连续重复两次) | crunch 4 4 1234 -d 1% -o passwd.txt (数字不重复) |
-b 大小 | 分割输出文件(如20MB、50MB) | crunch 6 6 -b 10MB -o START (生成多个文件) |
-s 起始字符 | 从指定字符开始生成 | crunch 3 3 -s abc (从 abc开始生成) |
-f 文件名 | 从文件加载字符集或模板 | crunch 8 8 -f charset(lst) mixalpha -o alpha.txt (使用预定义字符集) |
-z 压缩格式 | 压缩输出文件(支持gzip、7z等) | crunch 6 6 -z 7z -o passwd.7z |
-p 字符串 | 生成全排列组合(需与 -o 结合) | crunch 3 3 -p abc -o passwd.txt (生成abc所有排列) |
┌──(root💀kali)-[~]
└─# crunch 8 8 Abc123456 -d 1 -o passwd.txt
#8 8:生成密码的最小长度和最大长度都是8位。
#Abc123456:密码字符集,爆破密码将使用这些字符中进行组合。
#-d 1:限制连续重复的最大个数为 1,即生成的密码中不会有连续的相同的字符出现超过一次。
#-o passwd.txt:生成后会写入在自定义的文件名(passwd.txt)中,并保存在当前目录下。
#综上所述,该命令将生成包含8位密码的字典,密码由指定字符集组成,且无连续重复字符,最终保存为"passwd.txt"文件。
暴力破解 — Hydra
Hydra,海德拉
1.是一款功能强大的开源密码攻击工具。
2.支持多种协议的破解。
3.名称来自希腊神话的九头蛇。
例:破解目标主机管理员密码,得到正确密码,实现远程登陆。
┌──(root💀kali)-[~]
└─# hydra -l administrator -P passwd.txt 192.168.110.129 rdp
#-l是小写字母L,-P为大写。
#-l administrator:指要破解的用户名为administrator。
#-P passwd.txt:指定密码字典文件为“passwd.txt”,Hydra会从该文件中读取密码并进行尝试。
#192.168.110.129:这是目标主机的IP地址,即要尝试破解的主机。
#rdp:指定要破解的服务,rdp为远程桌面协议。
防范暴力破解
查看日志,是否存在异常事件
服务器管理->工具->事件查看器->Windows日志->安全
里面记录了系统相关的所有事件,可以在这里查看事件是否异常,追踪攻击者IP和主机名。
本地安全策略
设置账户锁定策略,来防止暴力破解。
打开本地安全策略:win+R->secpol.msc-> 或 开始菜单->管理工具->本地安全策略;
进入账户策略->账户锁定策略->其中有账户锁定时间、账户锁定阈值、重置账户锁定计时器三种策略可以配置。
gpupdate /force