S'S ALGORITHM

道德黑客,也被称为“白帽黑客”,是指那些使用黑客技术来帮助企业和组织提高其信息系统的安全性的人。与恶意黑客(黑帽黑客)不同,道德黑客的目标是识别并修补系统中的漏洞,以防止潜在的攻击和数据泄露。

活动和目的

  1. 渗透测试(Penetration Testing)
    • 通过模拟攻击来测试系统的安全性。
    • 发现并报告系统中的漏洞。
  2. 漏洞评估(Vulnerability Assessment)
    • 扫描系统以找出潜在的安全漏洞。
    • 提供详细的报告和修复建议。
  3. 安全审计(Security Auditing)
    • 检查系统和网络的配置,以确保符合安全标准和法规。
    • 评估安全策略的有效性。
  4. 社会工程(Social Engineering)
    • 测试员工对安全意识的了解和防范。
    • 使用心理操纵技巧,模拟真实的攻击场景。
  5. 事件响应(Incident Response)
    • 在安全事件发生时,迅速调查和响应。
    • 采取措施阻止攻击,并减少损失。

道德黑客需要掌握一系列技术和技能,以便有效地执行他们的任务,包括:

  1. 编程和脚本编写
    • 熟悉多种编程语言,如Python、JavaScript、C/C++等。
    • 能够编写自动化工具和脚本来进行测试。
  2. 网络协议和架构
    • 深入了解TCP/IP、HTTP/HTTPS、DNS等网络协议。
    • 熟悉防火墙、路由器、交换机等网络设备的配置。
  3. 操作系统
    • 精通Windows、Linux、UNIX等操作系统的安全配置和管理。
    • 使用各种操作系统进行测试和攻击模拟。
  4. 加密技术
    • 了解对称和非对称加密算法。
    • 熟悉SSL/TLS、VPN等加密协议的使用和漏洞。
  5. 工具和平台
    • 熟练使用各种黑客工具,如Nmap、Metasploit、Wireshark、Burp Suite等。
    • 熟悉安全测试平台,如Kali Linux等。
  6. 反向工程和恶意软件分析
    • 能够拆解和分析恶意软件的行为。
    • 了解反向工程技术,用于分析应用程序和固件。
  7. 法律和伦理
    • 熟知相关法律法规,确保测试活动合法合规。
    • 遵守道德规范,确保客户数据的机密性和安全性。

道德黑客在现代信息安全中扮演着重要角色,他们通过积极主动的测试和评估,为企业和组织提供关键的安全保障,预防潜在的网络攻击和数据泄露。

Hacking Lab

虚拟机和docker

虚拟机和 Docker 都是用于在单个物理机器上运行多个隔离环境的技术,但它们在实现机制和用途上有一些显著区别:

  1. 虚拟化层级:
    • 虚拟机通过在主机操作系统之上安装虚拟化软件(如VMware或VirtualBox),在其上运行完整的客户操作系统。每个虚拟机都有自己的虚拟硬件资源(CPU、内存、磁盘等)。
    • Docker则在主机操作系统之上构建一个轻量级的虚拟化层,称为Docker Engine,共享主机的操作系统内核。Docker利用Linux内核的命名空间和控制组等功能实现资源隔离。
  2. 系统资源占用:
    • 虚拟机需要为每个客户操作系统分配一定的硬件资源,因此资源占用较大。
    • Docker容器直接运行在主机内核之上,无需为客户操作系统分配资源,所以相对较为轻量级。
  3. 启动速度:
    • 由于虚拟机需要加载完整的操作系统,启动时间较长。
    • Docker容器由于直接共享主机内核,可以在几秒钟内启动完成。
  4. 可移植性:
    • 虚拟机由于需要在不同硬件和操作系统之间移植,移植性相对较差。
    • Docker容器由于是应用程序层面的虚拟化,可以在任何支持Docker的环境中运行,移植性较好。
  5. 使用场景:
    • 虚拟机更适合于需要运行完整操作系统环境的场景,如服务器consolidation、测试环境等。
    • Docker更适合于部署、测试和运行独立的应用程序,特别是在微服务架构和DevOps环境中。

总的来说,虚拟机提供了完整的系统级虚拟化,适合于运行不同操作系统;而Docker则专注于应用级别的虚拟化,旨在提高软件交付和部署的效率。选择哪种技术取决于具体的需求和应用场景。

Linux

  1. 开源性质 Linux内核及大部分工具都是开源的,可以自由获取和查看源代码,方便学习和定制。这为道德黑客提供了一个良好的学习环境,可以深入了解各种系统原理和工作机制。

  2. 强大的命令行工具 Linux拥有丰富的命令行工具,如nmap、wireshark、metasploit等著名的网络扫描、数据包捕获和渗透测试工具,非常适合道德黑客的需求。这些工具在Windows下往往需要使用替代品。

  3. 高度可定制性 Linux的高度可定制性允许用户根据需求定制和优化整个操作环境,增强系统安全性。道德黑客可以编译定制化内核、配置防火墙等,打造适合实验的专用环境。

  4. 虚拟化支持 Linux对虚拟化技术有良好的支持,如KVM、Docker等,方便在单机上构建多个隔离的测试环境,减少对物理机的依赖。

  5. 活跃的社区 围绕Linux有着活跃的开源社区,可以获取大量学习资源、工具和最新信息,有利于道德黑客技能的提升。

虚拟机安装Kali-Linux

常用网络命令

网络设置

NAT方式或者桥接网络方式。

通过ping www.google.com可以发现网络是设置好的,在虚拟机的setting上可以看到使用的是NAT,通过sudo ifconfig,可以看到给我们分配的是10.0.2.15是虚拟机给我们的range,这和我们本地的range是不一样的,我们本地基本是192之类的。

这时候,去虚拟机的setting将NAT方式改为Bridged Adapter桥接适配器方式。勾选cable connected。然后再ifconfig就会有不同的range了,是和自己的主机host同一层的range。(我的情况没有立刻反应,于是我sudo reboot了就OK了)

当无法选择桥接模式,也可以选择NAT Network,使得内部的虚拟机之间可以通信,设置的时候,需要使用tool-preference进行NatNetwork的手动添加。

一些知识笔记:

安装Kali后应该做的事:文章链接

Bridged Networking (桥接网络)是虚拟机和宿主机之间网络连接的一种方式。在这种模式下,虚拟机就像是直接连接在同一个网络上的独立主机。桥接网络的工作原理如下:

  1. 宿主机会创建一个虚拟网桥,用于连接虚拟机和物理网卡。
  2. 每个连接到该网桥的虚拟机都会获得一个独立的IP地址,就像连接在物理网络上的其它主机一样。
  3. 虚拟机发送的数据包会先到达虚拟网桥,然后由物理网卡发送到外部网络。从外部网络来的数据包也会先到达物理网卡,再由网桥转发到虚拟机。
  4. 在同一个网桥上的虚拟机也可以直接通信,不需要经过物理网络。

使用桥接网络的主要优势是:

  1. 虚拟机可以直接加入现有的网络环境,像独立主机一样工作。
  2. 虚拟机和外部网络/主机可以直接通信,无需额外的端口映射。
  3. 多个虚拟机可以直接相互通信,无需通过主机。
  4. 对网络可见性更好,有利于测试网络相关应用。

因此,桥接网络更适用于开发、测试以及教学等场景,而对于生产环境则需要根据具体需求权衡使用。

Cable Connected选项通常出现在虚拟机的网络设置中,用于指定该虚拟机的网络连接方式。

当”Cable Connected”选项被勾选时,意味着该虚拟机将模拟一个真实的以太网卡并与宿主机或外部网络建立连接。否则,虚拟机将断开网络连接。

具体来说,”Cable Connected”选择有以下几种常见的网络连接模式:

  1. NAT(网络地址转换):虚拟机通过宿主机与外部网络通信,宿主机作为NAT网关。适合于一般上网浏览场景。

NAT(Network Address Translation,网络地址转换)和NAT Network在VirtualBox虚拟机网络设置中是两种不同的网络模式,NAT模式是将单个虚拟机连接到外部网络的简单方式。而NAT Network则创建一个独立的虚拟网络,多个虚拟机可以在其中通信,并通过共享NAT网关访问外部网络,更接近真实NAT网络环境。NAT Network相对于NAT模式增加了模拟和测试复杂网络场景的能力,但也相对复杂一些。

  1. 桥接模式:虚拟机就像直接连在同一物理网络上,可以直接与外部通信,有独立IP。适合模拟真实网络环境。

  2. 仅主机(Host-Only):虚拟机与宿主机构成一个独立的虚拟网络,不与外部网络相连。适合测试内部网络通信。

  3. 内部网络:多个相关虚拟机直接组成一个虚拟网络,不与宿主机或外网相连,隔离环境。

通过勾选或取消”Cable Connected”,可以快速启用或禁用虚拟机的网络连接功能,方便调试和模拟不同的网络场景。一般在正常使用虚拟机时,建议保持该选项勾选以保持网络通信。

渗透测试 5 stages

渗透测试(Penetration Testing)是一种评估网络或系统安全性的方法,通常分为五个主要阶段:

  1. 侦查(Reconnaissance) 收集目标系统或网络的信息,如IP地址范围、域名、服务版本等,为后续测试做准备。

  2. 扫描(Scanning) 对目标系统进行端口扫描、服务枚举,识别运行中的服务和可能存在的漏洞。

  3. 获取访问(Gaining Access) 利用发现的漏洞,通过各种技术和工具(如溢出攻击、社会工程学等)试图获得目标系统的访问权限。

  4. 维持访问(Maintaining Access) 在获取初始访问后,安装后门、植入持久性恶意软件等,试图在系统中保持控制权。

  5. 清除痕迹(Covering Tracks) 清除渗透测试期间留下的日志和任何入侵痕迹,尽量不引起目标系统管理员的怀疑。

这五个阶段环环相扣,并非总是线性进行。渗透测试人员可能在任何阶段返回上一步骤,以获取更多信息或尝试新的攻击方式。

整个过程的目的是全面评估系统面临的真实威胁,了解网络防御的薄弱环节,并为系统加固提供依据,以提高整体网络安全性。当然,渗透测试需要事先获得明确授权,并遵守相关法律法规。

Reconnaissance/Infermation gathering

信息收集命令

Whatweb Stealthy Scan(隐秘扫描)

邮件信息收集工具

Github是最大的工具箱

Scanning

在渗透测试中,扫描是一个重要的步骤。

  1. 扫描目的
    • 识别目标系统/网络中存在的主机、服务和端口
    • 获取目标系统的细节信息,如操作系统、服务版本、开放端口等
    • 发现潜在的漏洞和薄弱点
    • 收集足够信息为后续攻击做准备
  2. 扫描手段
    • 端口扫描:使用如Nmap等工具扫描开放端口和服务
    • 漏洞扫描:使用Nessus、OpenVAS等工具扫描常见漏洞
    • Web扫描:使用类似于Burp Suite、ZAP等工具扫描Web应用程序漏洞
    • 网络扫描:使用Angry IP Scanner、Unicornscan等工具探测网段中存活主机
    • SNMP扫描:使用SnmpWalk等工具枚举SNMP服务器收集信息
    • DNS扫描:使用dig、dnsenum等工具获取DNS相关信息

过度扫描或者不当扫描可能会引起目标系统的警报,被视为攻击行为。因此需要遵守相关法规,获得足够授权,并采取适当的技术手段,避免给目标系统带来过多干扰。

扫描阶段收集到的信息对于接下来的渗透测试行动至关重要,如勒索、数据窃取、权限提升等,都需要依赖前期充分的信息收集和扫描工作。

Netdiscover命令

nmap命令

Python 扫描工具

Vulnerability Analysis

Exploitation & Gaining Access

Post Exploitation

Website Pen Testing

Man in the Middle

Wireless Cracking