渗透测试学习笔记(二)kali相关

news/2024/12/12 13:34:52/

一.kali 基础工具

  1. NetCat -网络工具中的瑞士军刀:允许用户通过 TCP 或 UDP 协议发送和接收数据。
  2. WireShark-开源抓包软件
  3. TCPdump-命令行抓包分析工具

二. 被动信息收集

2.1 被动信息收集指从公开渠道获取信息,主要是已经公开的信息。

要点:

  • 与目标系统不产生直接交互(扫描)
  • 尽量避免留下一切痕迹
收集内容
IP 地址段
域名信息
邮件地址
文档图片
公司地址
公司组织架构
联系电话/传真号码
人员姓名/职务
目标系统使用的技术架构
公开的商业信息

2.2 信息用途

  • 用所有已获得的信息来描述目标,还原目标真实情况。
  • 通过分析描述中的目标来发现其弱点
  • 社会工程学攻击
  • 物理缺口

域名信息收集工具

  1. nslookup -域名解析和网络故障排除。
  • nslookup 有两种模式
    交互模式:一个会话执行多个查询或操作
    命令行模式:执行一次性简单查询或者将其嵌入脚本中
  1. dig-域名系统(DNS)查询工具,常用于域名解析和网络故障排除。比 nsloop 有更强大的功能

  2. 域名字典爆破

通过尝试多个可能得域名来猜测有效的域名或子域名
字典的选择与使用

字典爆破工具

字典工具描述使用命令
fierce开源网络安全工具:用于域名扫描和子域名枚举fierce --dns-servers 8.8.8.8 --domain XXX.com.cn
dnsenum枚举域名信息的开源工具:执行多种 DNS 查询来收集与目标域名相关的信息dnsenum -dnsserver 8.8.8.8 XXX.com -o sina.xml
dbsrecon域名枚举和信息收集
  1. 域名注册信息
  • whois 命令

  • 用于查询和获取域名额注册信息,可以查看特定域名注册商,域名所有者,注册日期,过期日期,DNS 服务器等信息。

whois -h whois.apnic.net 192.0.43.10

三. 搜索引擎

Shodan

专门用于搜索和互联网连接的设备和系统。他主要关注物联网设备,工业控制系统,服务器和其他网络设备等特定的联网设备

ZoomEye
ZoomEye 专门用于搜索与互联网上的网络设备和系统相关的信息。它被称为网络空间搜索引擎,与 Shodan 类似。

https://www.shodan.io/
Google

工作原理:通过自动化程序定期爬取互联网上的网页内容,建立庞大索引数据库

筛选语法!!!

四.社工字典

  1. cupp

按个人信息生成专属的密码字典。

Common User Password Profiler(CUPP,通用用户密码探查器):
https://github.com/Mebus/cupp

  1. Exif

Exif (Exchangeable Image File Foemat) 用于存放数字图像喝音频文件元数据的标准格式,通常用于 JPEG,TIFT 和 RAW 图像中,用于记录与图像相关的信息。
Exif 提供了关于图像的拍摄参数、设备信息、拍摄时间等详细的元数据

五. 主动信息收集

  • 扫描(IP,端口,服务等)
  • 直接与目标系统交互通信
  • 使用受控第三方电脑进行探测,使用代理
5.2 二层发现
  • 通过 ARP 协议发现同网段下存活的主机
    优点:扫描速度快,可靠
    缺点:不可路由,只能发现本网段主机,常用于获得某台主机控制权后,以此作为跳板发现其网段内其他主机
  1. arping

ARPing:(Address Resolution Protocol pinging)用于获取与指定 IP 地址相关联的 MAC 地址

arping 192.168.230.1 -c 1

查看是否有 ARP 欺骗

arping 192.168.230.1 -d

3.nmap

Namp(Network Mapper)用于探测主机,端口和服务等信息,提供丰富功能

:扫描网段所有存活主机。

nmap 10.133.30.1-254 -sn

: 扫描文件中的主机是否存活

nmap -iL iplist.txt -sn
  1. Netdiscover
    基于 APR 协议的网络扫描工具,发现本地网络中活动主机的 IP 地址和 MAC 地址
  • 专门用与二层发现,无线和交换网络环境
  • 主动和被动探测

示例 01:指定网络接口,扫描网段存活主机。

netdiscover -i eth0 -r 1.1.1.0/24
  1. Scapy
#!/usr/bin/pythonimport logging
import subprocess
import sysfrom scapy.all import *
from scapy.layers.l2 import ARPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./arp_disc.py <interface>")print("Example: ./arp_disc.py eth0")sys.exit()interface = str(sys.argv[1])
ip = subprocess.check_output("ifconfig " + interface + " | grep 'inet ' | cut -d 't' -f 2 | cut -d ' ' -f 2", shell=True).strip().decode()
print("IP address:", ip)
prefix = ip.split('.')[0] + '.' + ip.split('.')[1] + '.' + ip.split('.')[2] + '.'for addr in range(0, 254):answer = sr1(ARP(pdst=prefix + str(addr)), timeout=0.1, verbose=0)if answer == None:passelse:print(prefix + str(addr))print("END")
sys.exit()
5.3 三层发现

通过 ip。icmp 协议发现存活主机

优点:速度比较快
缺点:经常被边界防火墙过滤

  1. ping
  2. Scapy

#!/usr/bin/pythonimport logging
import subprocess
import sysfrom scapy.all import *
from scapy.layers.inet import IP, ICMPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./pinger.py </24 network address>")print("Example: ./pinger.py 172.16.36.0")sys.exit()address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'for addr in range(0, 254):answer = sr1(IP(dst=prefix + str(addr))/ICMP(), timeout=0.1, verbose=0)if answer == None:passelse:print(prefix + str(addr))print("END")
sys.exit()
  1. nmap
nmap -sn 1.1.1.100-250
  1. fping
    fping(Fast Ping)用于测试主机的可达性和响应时间。与标准 ping 工具不同,fping 具有一些额外的功能和选项。支持并发探测与批量操作。
  2. fping 1.1.1.1 -c 2
  3. traceroute
5.3 四层发现

主要是基于 TCP、UDP 协议来发现存活主机

优点:

  • 可路由且结果可靠
  • 不太可能被防火墙过滤
  • 甚至可以发现所有端口都被过滤的主机
    缺点:
    基于状态过滤的防火墙可能过滤扫描
    全端口扫描速度慢

原理:
TCP

  1. 全连接扫描(TCP Connect Scan):扫描器尝试与目标主机的端口建立完整的 TCP 连接。如果连接成功建立,则说明该端口是开放的,目标主机存活。
  2. 半开放扫描(SYN 扫描,TCP SYN Scan):扫描器发送一个 TCP SYN 包(同步包)到目标主机的指定端口,如果收到目标主机的 TCP SYN/ACK 包(同步/应答包),则表示该端口是开放的(主机存活);如果收到目标主机的 RST 包(复位包)或没有收到任何响应,则表示该端口是关闭的。
  3. ACK 扫描:发送未经请求的 ACK 包到目标主机的端口,通过观察返回的响应或未响应来判断端口的状态。大多数操作系统对于未经请求的 ACK 包会返回一个 RST 包。在很多情况下可能被防火墙或入侵检测系统所阻止。

UDP

  1. 扫描器向目标主机的指定端口发送一个 UDP 数据包,然后根据接收到的响应进行判断。(例如,ICMP 端口不可达消息)

5.3.2 Scapy

#!/usr/bin/pythonimport logging
import sysfrom scapy.all import *
from scapy.layers.inet import IP, TCPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./ACK_ping.py </24 network address>")print("Example: ./ACK_ping.py 172.16.36.0")sys.exit()address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'for addr in range(0, 254):response = sr1(IP(dst=prefix + str(addr))/TCP(dport=2222, flags='A'), timeout=0.1, verbose=0)try:if int(response[TCP].flags) == 4:print(prefix + str(addr))except:passprint("END")
sys.exit()

UDP 的脚本 UDP_ping.py


#!/usr/bin/pythonimport logging
import sysfrom scapy.all import *
from scapy.layers.inet import IP, UDPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./UDP_ping.py </24 network address>")print("Example: ./UDP_ping.py 172.16.36.0")sys.exit()address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'for addr in range(0, 254):response = sr1(IP(dst=prefix + str(addr))/UDP(dport=2222), timeout=0.1, verbose=0)try:if int(response[IP].proto) == 1:print(prefix + str(addr))except:passprint("END")
sys.exit()

5.3.3 nmap

nmap 1.1.1.100-254 -PU 53 -sn

5.3.4 hping3

nmap 1.1.1.100-254 -PU 53 -sn

http://www.ppmy.cn/news/1554506.html

相关文章

导入kotlin

android studio 导入kotlin项目 android studio kotlin教程 或者直接拿一个kt文件进来&#xff0c;在顶部会显示一个config&#xff0c;然后设置version&#xff0c;点击OK就可以了自动导了

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …

项目中如何选择JVM垃圾回收器?

大家好&#xff0c;我是锋哥。今天分享关于【项目中如何选择JVM垃圾回收器?】面试题。希望对大家有帮助&#xff1b; 项目中如何选择JVM垃圾回收器? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在一个项目中选择合适的 JVM 垃圾回收器 (Garbage Collector, GC…

力扣136. 只出现一次的数字

给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 示例 1 &#xff1a; 输入&#xff1a…

汽车升级到底应不应该设置“可取消“功能

最近&#xff0c;汽车OTA&#xff08;Over-the-Air&#xff09;升级频频成为车主讨论的热点。有些车主反映&#xff0c;一些升级增加了实用功能&#xff0c;而另一些却让体验变得复杂甚至带来不便。于是&#xff0c;大家不禁发问&#xff1a;汽车升级功能究竟应不应该允许“可取…

使用 electron 把 vue 项目打包成客户端

1. 新建一个Vue项目 新建一个vue项目&#xff0c;或者在已经写好的vue项目上操作 2. 安装依赖包 需要安装的包有2个 electron electron-builder 安装失败的&#xff0c;可看另外一篇解决方法https://blog.csdn.net/Anorry/article/details/144061069?spm1001.2014.3001.5501 3…

深度学习常用损失函数介绍

均方差损失&#xff08;Mean Square Error&#xff0c;MSE&#xff09; 均方误差损失又称为二次损失、L2损失&#xff0c;常用于回归预测任务中。均方误差函数通过计算预测值和实际值之间距离&#xff08;即误差&#xff09;的平方来衡量模型优劣。即预测值和真实值越接近&…

IMX6ULL开发板挂载 Ubuntu 的 NFS 目录,并以交叉编译得到的hello程序进行测试

首先参考博文 https://blog.csdn.net/wenhao_ir/article/details/144404637 使得IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu能互相Ping 通 然后开始将Ubuntu 的 NFS 目录挂载到Ubuntu中。 为什么挂载&#xff1f; 答&#xff1a;其实是把 Ubuntu中的某个目录通过NFS网…