第 2 章 用 Python 进行渗透测试
编写一个端口扫描器
TCP 全连接扫描
#!/bin/env python3
# -*- coding: utf-8 -*-
# version: Python3.X
"""
2017.01.29 按照第 2 章编写一个端口扫描器
"""
import optparse
import socket
__author__ = '__L1n__w@tch'
def initialize():
parser = optparse.OptionParser("usage %prog -H <target host> -p <target port>")
parser.add_option("-H", dest="target_host", type=str, help="specify target host")
parser.add_option("-p", dest="target_port", type=int, help="specify target port")
options, args = parser.parse_args()
target_host = options.target_host
target_port = options.target_port
if target_host is None or target_port is None:
print(parser.usage)
exit(-1)
return target_host, target_port
def connect_scan(target_host, target_port):
"""
TCP 全连接扫描
:param target_host: 目标主机
:param target_port: 目标端口
:return:
"""
try:
conn_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn_sock.connect((target_host, target_port))
print("[+] {}/tcp open".format(target_port))
conn_sock.send(b"Violent Python")
results = conn_sock.recv(1024)
print("[+] Get Response: {}".format(results))
conn_sock.close()
except socket.timeout:
print("[-] {}/tcp closed".format(target_port))
def port_scan(target_host, target_ports):
"""
执行端口扫描操作
:param target_host: 目标主机
:param target_ports: 目标端口列表
:return:
"""
try:
target_ip = socket.gethostbyname(target_host)
except RuntimeError:
print("[-] Can not resolve {}: Unknown host".format(target_host))
return
try:
target_name = socket.gethostbyaddr(target_ip)
print("[+] Scan results for {}".format(target_name[0]))
except RuntimeError:
print("[+] Scan Results for {}".format(target_ip))
socket.setdefaulttimeout(1)
for target_port in target_ports:
print("[*] Scanning port {}".format(target_port))
connect_scan(target_host, target_port)
if __name__ == "__main__":
host, port = initialize()
port_scan(host, [port])线程扫描
使用 NMAP 端口扫描代码
用 Python 构建一个 SSH 僵尸网络
用 Pexpect 与 SSH 交互
用 Pxssh 暴力破解 ssh 密码
利用 SSH 中的弱私钥
构建 SSH 僵尸网络
利用 FTP 与 Web 批量抓 “肉机”
用 Python 构建匿名 FTP 扫描器
使用 Ftplib 暴力破解 FTP 用户口令
在 FTP 服务器上搜索网页
在网页中加入恶意注入代码
完整的代码 DEMO
Conficker,为什么努力做就够了
使用 Metasploit 攻击 Windows SMB 服务
编写 Python 脚本与 Metasploit 交互
暴力破解口令,远程执行一个进程
整合
编写你自己的 0day 概念验证代码
基于栈的缓冲区溢出攻击
发送漏洞利用代码
Last updated