内容预览 ≧∀≦ゞ
安全见闻一:包罗万象的网络安全
声明
学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
导语
时刻保持谦逊,始终保持学习,探寻事物的本质,不要把事情复杂化
渗透测试需要面对各种开发语言、框架和通信协议,要求对网络相关的各个领域都有一定的了解,至少要具备基础概念。不论是车载系统、人工智能,还是工业控制程序等,需要具备广泛的知识储备,才能走得更远。
编程语言
不同的语言有其独特的应用场景,从脚本编写到漏洞利用、从代码审计到网络和云计算开发,合理选择编程语言能够极大地提高工作效率。
常用语言
- Python:广泛应用于数据分析、人工智能和Web开发,常用于编写脚本、概念验证(Proof of Concept, POC)及开发各种安全产品。易于学习且功能强大。
- JavaScript:主要用于网页前端开发,同时可用于服务器端开发(Node.js)。
- PHP:主要用于Web开发,尤其适合服务器端脚本编程。(无需深入学习,但需能够代码审计)
- Java:广泛使用的面向对象编程语言,具备跨平台特性,常用于企业级应用开发。
- Go:适合高效的网络编程和云计算开发,在安全产品开发中也表现优异。
- C++、C:用于底层开发和高性能计算,在安全领域常用于漏洞利用和系统安全研究。
- Ruby:适合快速开发,Metasploit等知名渗透测试框架基于此语言。
- Swift:iOS应用开发的主流语言,逐渐取代Objective-C。
- Kotlin:Android应用开发的首选语言,具备较高的安全性和开发效率。
函数式编程
- Haskell、Lisp、Clojure:函数式编程语言在某些数据处理和并发计算场景中具有独特优势,虽然在安全领域使用较少,但对于特定任务能提供高效解决方案。
数据科学和机器学习
- R:广泛用于统计分析和数据可视化,适合应用于大数据环境的安全分析。
- Julia:用于高性能科学计算,适合需要快速处理大规模数据的安全模型。
Web全栈开发
- TypeScript:作为JavaScript的超集,增加了静态类型检查等特性,提升了大型项目的开发效率,并能减少前端安全风险。
- ArkTS: 鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。
移动开发
- Objective-C:曾经是 iOS 开发的主要语言,现在逐渐被 Swift 取代。
嵌入式开发
- 汇编语言:对于嵌入式系统的底层硬件控制至关重要,常用于硬件漏洞分析,不同的处理器架构有不同的汇编语言。
其他编程语言
- Pascal:曾经在教学和早期软件开发中有广泛应用。
- Delphi(基于 Object Pascal):用于快速应用开发。
- Scala:融合了面向对象编程和函数式编程,运行在 Java 虚拟机上。
- Elixir:基于 Erlang 虚拟机,具有高并发和容错性,适合构建分布式系统。
编程语言多如牛毛,选择大于努力,样样精通不可能,适合的才是最好的
软件程序
什么是软件程序代码:
软件程序是指用于计算机或其他可编程设备的指令集合,通常由代码组成。代码是软件程序的核心,无论是网页设计、网站开发,还是软件开发,其本质都是通过代码来实现特定功能。不同领域的专业名词(如软件工程、网络安全)实际上都是代码在各自领域中的应用。
代码的作用是执行特定功能。例如,鉴权中间件和跨域中间件的核心功能,都是由代码来实现的。理解这些功能模块的代码实现,有助于我们透过专业术语理解其背后的本质,不被术语所迷惑。
无论使用何种编程语言,只要能够指示计算机执行任务,就可以编写出程序。代码最终被转换成二进制形式,供计算机硬件执行。无论是网页设计、前端开发、后端开发,还是底层逻辑,它们的基础都是代码。选择合适的编程语言,注重简便性和效率,能更好地完成任务。例如,如果Python能够满足需求,就不必使用更复杂的**C++**。简单、实用的编程语言往往更为高效,因为它们能让计算机执行相同的任务,避免将问题复杂化。
常见软件程序类型
- Web程序:包括前后端架构(B/S架构)和客户端-服务器架构(C/S架构),通常用于构建现代网站和网络应用。
- 二进制程序:涉及漏洞挖掘与缓冲区溢出等安全利用技术,常用于逆向工程与系统漏洞研究。
- 驱动程序:负责计算机硬件的控制和管理,如Windows系统中以
.sys
结尾的文件。这类程序涉及硬件与操作系统的底层交互,安全性至关重要。 - 上位机:指可以直接与硬件(如单片机)进行交互的计算机,常用于工业控制系统中。上位机通过用户界面发送指令并展示反馈数据,确保其安全性尤为重要。
- 脚本程序:广泛应用于自动化任务和渗透测试中,使用语言包括Lua、PHP、JavaScript等。脚本语言灵活、易用,是渗透测试、漏洞扫描等领域的重要工具。
- 操作系统:操作系统也是一种软件程序,只不过规模较大。它控制计算机的资源管理和硬件交互,涉及系统安全的开发与防护。
- 裸板程序:通常用于没有操作系统支持的设备,如STM32微控制器或单片机。这类程序直接运行在硬件上,针对特定任务进行开发。
- 量子计算:未来的计算发展方向,虽然还处于早期阶段,但可能会带来全新的安全挑战。
- 工程程序和BIOS程序:这些程序运行在硬件层次上,涉及硬件控制与启动过程,需进行严格的安全防护。
操作系统
非实时操作系统
- Windows、macOS、iOS、Linux:常见的桌面与移动操作系统,渗透测试和安全审计中的重点目标。
实时操作系统
- WinCE、VxWorks、RT-Thread:工业控制系统和嵌入式开发中的关键组成部分,常用于物联网设备的安全研究。
网络通讯
硬件设备
计算机硬件
- 中央处理器(CPU):计算机的核心部件,负责执行指令和处理数据,其性能直接决定了计算机的运行速度。
- 内存:用于存储当前运行的程序和数据,容量和速度对整体性能有显著影响。
- 硬盘:用于长期存储数据(包括操作系统、应用程序和文件等),其容量和读写速度对系统性能至关重要。
- 显卡:专门处理图形和图像数据,其性能直接影响图形处理能力,对游戏玩家和设计师尤为重要。
- 主板:连接并协调各种硬件组件(如CPU、内存、硬盘和显卡),其质量和性能影响计算机的稳定性和扩展性。
网络硬件
- 网络服务器:提供文件存储、电子邮件和Web服务,必须具备高性能和可靠性,以满足用户需求。
- 网络存储设备:如网络附加存储(NAS)和存储区域网络(SAN),用于提供大容量和高可靠性的数据存储解决方案。
- 网络打印机:通过网络连接多台计算机,实现方便的打印共享。
- 网络摄像头:用于视频监控和远程会议,通过网络传输视频信号。
移动设备硬件
- 智能手机:集成通信、拍照、娱乐和办公功能,硬件包括处理器、内存、存储、屏幕和摄像头。
- 平板电脑:较大屏幕,适合阅读和观看视频,硬件配置与智能手机类似。
- 可穿戴设备:如智能手表和智能手环,监测用户健康和运动数据,硬件包括传感器、处理器、内存和屏幕。
硬件发展趋势
- 小型化:设备逐渐小型化,便于携带,同时性能不断增强。
- 高性能:CPU速度、内存和存储容量持续提升,显卡图形处理能力增强。
- 智能化:设备能够自动适应环境和用户需求,如智能手机根据使用习惯自动调整设置。
- 互联互通:设备之间的连接日益紧密,形成物联网,支持智能家居和智能汽车的自动化控制。
网络类型
- 局域网(LAN):覆盖小范围,如建筑物或校园,便于员工共享文件和打印机等资源。
- 城域网(MAN):覆盖较大区域,通常在城市内,如城市的有线电视和宽带网络。
- 广域网(WAN):覆盖广泛,可以跨越国家和地区,如互联网,连接全球各地的计算机和网络设备。
网络设备
- 路由器:连接不同网络,实现数据转发,根据IP地址和路由表确定传输路径。
- 交换机:在局域网中连接多台计算机,实现数据快速交换,基于MAC地址转发数据帧。
- 网卡:安装在计算机上,用于连接网络,将数据转换为网络信号并进行传输。
- 无线接入点(AP):提供无线网络连接,使无线设备能够接入局域网或广域网。
安全技术及设备
- 加密技术:通过加密保护数据,防止窃取或篡改。常见的如SSL/TLS协议用于浏览器和服务器间的加密通信。
- 身份认证:确保只有授权用户能够访问资源,常用方式包括用户名密码、数字证书和生物识别等。
- 防火墙(串行):根据预设规则过滤网络流量,防护外部攻击。分为硬件防火墙和软件防火墙(WAF)。
- **入侵防御系统 (IPS, 串行)**:相较于防火墙,能更深入检测和控制数据流,增强入侵行为库,自动防御检测到的威胁。
- 上网行为管理(串行):对用户上网操作进行控制,提供流量管理,动态调整每位用户的带宽使用。
- **入侵检测系统 (IDS, 旁挂)**:实时监控网络,抓取并分析指定数据包,提供监控报表并对威胁行为发出告警。
- 日志审计(旁挂):收集并存储网络设备日志,提供审计依据,支持事后取证。
- 堡垒机(旁挂):为每个运维人员创建唯一运维账号,确保身份可追溯,解决账号共用问题。
网络与通讯协议
网络协议和通讯协议是计算机网络中用于数据传输的规则和标准,它们定义了数据的格式、传输顺序、错误处理方式,以及如何在不同设备间建立和维持连接。以下是一些关键的网络与通讯协议及其在网络通信和安全中的作用:
- TCP/IP(传输控制协议/网际协议) TCP/IP是互联网的基础协议,广泛应用于网络通信,确保数据包的可靠传输和正确顺序。TCP在数据传输前建立连接,进行错误检测和重传,适用于对可靠性要求高的应用(如网页浏览和文件传输)。攻击者可能利用TCP特性进行各种攻击,如TCP洪水攻击和SYN洪水攻击,通过消耗网络资源导致目标服务不可用。
- UDP(用户数据报协议) UDP是一种无连接的协议,允许在网络上快速传输数据,适用于对实时性要求高但不要求可靠性的应用(如视频流、在线游戏和语音通话)。由于UDP不保证数据包的送达和顺序,攻击者可以利用其无连接特性进行DDoS攻击,如UDP洪水攻击,向目标服务器发送大量伪造的UDP数据包,使其超负荷。
- HTTP/HTTPS(超文本传输协议/安全超文本传输协议) HTTP用于网页传输,而HTTPS是在HTTP基础上添加SSL/TLS加密,确保数据安全。HTTPS防止数据在传输过程中被窃取或篡改,特别是对敏感信息的保护至关重要。攻击者可能通过中间人攻击截获未加密的HTTP数据,因此使用HTTPS是保护用户数据安全的重要措施。
- FTP(文件传输协议) FTP用于在计算机之间传输文件,支持上传和下载功能。由于FTP传输的数据通常未加密,攻击者可以利用网络嗅探工具获取文件内容和凭据。因此,采用SFTP或FTPS等安全协议替代FTP是防止数据泄露的重要措施。
- SMTP(简单邮件传输协议) SMTP用于发送电子邮件,尽管在邮件发送方面表现出色,但也容易受到邮件欺骗和垃圾邮件攻击。使用安全邮件传输协议(如SMTPS)可以增强邮件传输的安全性,防止数据泄露。
- DHCP(动态主机配置协议) DHCP用于自动分配网络中的IP地址,攻击者可能利用DHCP伪造攻击分配错误的IP地址,从而中断网络服务或实施其他攻击。通过启用DHCP Snooping等安全措施可以减轻此类风险。
结语
在渗透测试和网络安全领域,有几个关键要素需要重视:
- 编程语言的选择 对于红队来说,效率和实用性至关重要。Python、PHP、Go和Java等语言都表现出色,灵活性和强大的功能使它们能够在各种环境中发挥作用,助力快速开发和漏洞利用。
- 计算机硬件基础 了解计算机硬件的组成及其工作原理,对于识别潜在的攻击面至关重要。熟悉CPU、内存、存储和网络设备的特性,能够帮助安全专家更好地进行漏洞分析和系统防护。
- 网络基础 网络协议、网络架构及其安全性是保护数据和系统的关键。掌握TCP/IP、UDP等基本协议,以及了解局域网、城域网和广域网的工作原理,可以有效帮助你在渗透测试中进行信息收集和攻击规划。
- 安全工具和技术 掌握常用的安全工具(如Nmap、Burp Suite、Metasploit等)及其应用场景,可以大幅提升渗透测试的效率和成功率。同时,学习最新的攻击技术和防御措施,保持对安全动态的敏感性,能使你始终走在前沿。
正所谓“懂进攻,知防守”。渗透测试和网络安全是一个动态变化的过程。深入掌握各类编程语言、网络协议、硬件基础及安全工具,才能真正成长为独当一面的网络安全专家!
版权归原作者 vortex5 所有, 如有侵权,请联系我们删除。