一、信息搜集的基础知识
在进行渗透测试之前,信息搜集是非常必要的。信息搜集可以帮助渗透测试人员更好地了解目标系统,从而更加有效地运用渗透测试技术。
信息搜集通常包含以下几个方面:
1.1 Whois查询
Whois是一种基于TCP/IP协议的应用层通信协议,用于查询域名、IP地址等网络信息,也可以了解目标网络的所有者、管理员等相关信息。常用的whois查询网站有Whois.com、Icann.org等等,以下是一个Python示例:
import whois # 查询域名whois信息 domain = "example.com" w = whois.whois(domain) print(w)
1.2 端口扫描
端口扫描是一种常用的信息搜集方式,在渗透测试中是一种非常重要的手段。端口扫描可以通过扫描目标系统开放的端口,了解目标系统的网络服务情况,进而得到系统的操作系统、版本信息等。比较常用的端口扫描工具有nmap、masscan等。
以下是Python使用nmap进行端口扫描的代码示例:
import nmap # 创建nmap扫描对象 nm = nmap.PortScanner() # 进行端口扫描 nm.scan(hosts="target_ip", arguments="-p 1-65535") # 输出扫描结果 for host in nm.all_hosts(): print('----------------------------------------------------') print('Host : %s (%s)' % (host, nm[host].hostname())) print('State : %s' % nm[host].state()) for proto in nm[host].all_protocols(): print('----------') print('Protocol : %s' % proto) lport = list(nm[host][proto].keys()) lport.sort() for port in lport: print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
1.3 WEB信息收集
Web信息收集是指针对Web应用进行信息收集,包括网页截取、源码分析、数据包嗅探等。在渗透测试中,Web信息收集主要是针对Web应用的漏洞扫描、目录爆破、信息泄露等。
常用的Web信息收集工具有Burp Suite、ZAP等。以下是使用Python进行Web信息收集的示例:
import requests # 构造HTTP请求 url = "http://example.com/index.php" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"} r = requests.get(url, headers=headers) # 输出HTTP响应内容 print(r.status_code) print(r.text)
二、社会工程学信息搜集
社会工程学信息搜集是指通过社会工程学手段,获取目标人员、组织、系统的信息,包括电话号码、电子邮件地址、账号密码、软件漏洞等。
2.1 钓鱼邮件
钓鱼邮件是一种伪装成正常邮件的欺骗攻击方式,通常针对目标人员,通过伪装成信任的邮件发送者欺骗目标人员,诱使其点击附件、链接,或获取目标人员的账号密码等重要信息。以下是Python编写的一封钓鱼邮件:
import smtplib from email.mime.text import MIMEText # 构造邮件内容 msg = MIMEText('Hello, I am a phishing email', 'plain', 'utf-8') msg['From'] = 'phishing@example.com' msg['To'] = 'target@example.com' # 配置SMTP服务器 smtp_server = 'smtp.example.com' smtp_port = 25 smtp_user = 'phishing@examaple.com' smtp_pass = 'password' # 发送邮件 server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() server.login(smtp_user, smtp_pass) server.sendmail(smtp_user, [msg['To']], msg.as_string()) server.quit()
2.2 电话骚扰
电话骚扰是指通过电话进行的欺骗攻击方式,通常通过伪装成正常用户、客服或官方机构,欺骗目标人员提供个人信用卡信息、银行账号、密码等。以下是Python编写的一个电话骚扰脚本:
import random import time from twilio.rest import Client # Twilio API密钥 account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" auth_token = "your_auth_token" # 目标电话号码 to_number = "+1234567890" # Twilio电话号码 from_number = "+14159873800" # 构造话术 script = [ "Hello,妳好", "Is this 妳的名字?", "This is the VIP customer service department of the Bank of China.", "Our records indicate that there has been suspicious activity on your account.", "Please press 1 to speak to an account representative, or press 2 to hear more options.", "你好,我是中国银行的客服,我们发现您的银行账户出现了异常。请按1转接到客服人员,或按2了解更多细节信息。" ] # 构造Twilio客户端 client = Client(account_sid, auth_token) # 发起电话 for voice in script: client.calls.create( to=to_number, from_=from_number, url="http://twimlets.com/message?Message%5B0%5D=" + voice, method="GET" ) time.sleep(random.randint(1, 5))
三、搜索引擎信息搜集
搜索引擎信息搜集是指通过搜索引擎搜索相关的关键词,了解目标信息的手段。
3.1 Google搜索
Google是最常用的搜索引擎之一,在渗透测试中也可以通过谷歌搜索获得目标信息。以下是Python使用Google Custom Search API进行搜索的示例:
import requests search_snippet = "hacking" api_key = "your_api_key" search_engine_id = "your_search_engine_id" url = f"https://www.googleapis.com/customsearch/v1?key={api_key}&cx={search_engine_id}&q={search_snippet}" r = requests.get(url) print(r.json())
3.2 百度搜索
百度是中国最常用的搜索引擎之一,也可以通过百度搜索进行渗透测试信息搜集。以下是Python使用百度搜索的示例:
import requests import re def get_baidu_search_results(keyword): url = f"http://www.baidu.com/s?wd={keyword}&rsv_spt={2}&rsv_iqid={0xcda67603001dce87}&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baidu&inputT=0&oq=%25E5%25A3%25B3%25E5%259F%259F&bs=%E5%A3%BD%E5%9F%9F&rsv_pq=cda67603001dce87&rqlang=cn&rsv_t" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"} r = requests.get(url, headers=headers) r.encoding = 'utf-8' pattern = re.compile('(.*?)', re.S) results = pattern.findall(r.text) return results
四、结语
信息搜集是渗透测试中非常必要的一步,它可以帮助我们更好地了解目标系统,从而更加有效地运用渗透测试技术。在进行渗透测试时,我们需要不断学习新的信息搜集技术,多方面进行信息收集,提高信息收集的效率与准确性。