0


安全见闻(1)——开阔眼界,不做井底之蛙

内容预览 ≧∀≦ゞ

安全见闻一:包罗万象的网络安全


声明

学习视频来自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应用开发的首选语言,具备较高的安全性和开发效率。

函数式编程

  • HaskellLispClojure:函数式编程语言在某些数据处理和并发计算场景中具有独特优势,虽然在安全领域使用较少,但对于特定任务能提供高效解决方案。

数据科学和机器学习

  • 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 结尾的文件。这类程序涉及硬件与操作系统的底层交互,安全性至关重要。
  • 上位机:指可以直接与硬件(如单片机)进行交互的计算机,常用于工业控制系统中。上位机通过用户界面发送指令并展示反馈数据,确保其安全性尤为重要。
  • 脚本程序:广泛应用于自动化任务和渗透测试中,使用语言包括LuaPHPJavaScript等。脚本语言灵活、易用,是渗透测试、漏洞扫描等领域的重要工具。
  • 操作系统:操作系统也是一种软件程序,只不过规模较大。它控制计算机的资源管理和硬件交互,涉及系统安全的开发与防护。
  • 裸板程序:通常用于没有操作系统支持的设备,如STM32微控制器或单片机。这类程序直接运行在硬件上,针对特定任务进行开发。
  • 量子计算:未来的计算发展方向,虽然还处于早期阶段,但可能会带来全新的安全挑战。
  • 工程程序BIOS程序:这些程序运行在硬件层次上,涉及硬件控制与启动过程,需进行严格的安全防护。

操作系统

非实时操作系统

  • WindowsmacOSiOSLinux:常见的桌面与移动操作系统,渗透测试和安全审计中的重点目标。

实时操作系统

  • WinCEVxWorksRT-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等安全措施可以减轻此类风险。

结语

在渗透测试和网络安全领域,有几个关键要素需要重视:

  1. 编程语言的选择 对于红队来说,效率和实用性至关重要。Python、PHP、Go和Java等语言都表现出色,灵活性和强大的功能使它们能够在各种环境中发挥作用,助力快速开发和漏洞利用。
  2. 计算机硬件基础 了解计算机硬件的组成及其工作原理,对于识别潜在的攻击面至关重要。熟悉CPU、内存、存储和网络设备的特性,能够帮助安全专家更好地进行漏洞分析和系统防护。
  3. 网络基础 网络协议、网络架构及其安全性是保护数据和系统的关键。掌握TCP/IP、UDP等基本协议,以及了解局域网、城域网和广域网的工作原理,可以有效帮助你在渗透测试中进行信息收集和攻击规划。
  4. 安全工具和技术 掌握常用的安全工具(如Nmap、Burp Suite、Metasploit等)及其应用场景,可以大幅提升渗透测试的效率和成功率。同时,学习最新的攻击技术和防御措施,保持对安全动态的敏感性,能使你始终走在前沿。

正所谓“懂进攻,知防守”。渗透测试和网络安全是一个动态变化的过程。深入掌握各类编程语言、网络协议、硬件基础及安全工具,才能真正成长为独当一面的网络安全专家!


本文转载自: https://blog.csdn.net/2301_79518550/article/details/143059926
版权归原作者 vortex5 所有, 如有侵权,请联系我们删除。

“安全见闻(1)——开阔眼界,不做井底之蛙”的评论:

还没有评论