安全见闻笔记

声明

视频来源:我在学习过程中参考的视频内容来自B站UP主泷羽sec。若本文内容涉及版权问题或侵权行为,请第一时间通知我,我将立即删除相关文章,以确保尊重原创内容的版权。
技术分享:本文旨在技术分享和知识传播,所有内容仅供参考和学习交流之用。我鼓励读者在阅读时保持批判性思维,并对文中的技术信息进行独立思考。
法律责任:任何基于本文信息的使用或依赖,以及由此产生的法律后果,均与本人无关。我提醒读者在使用文中信息时,应自行判断风险,并严格遵守相关法律法规。


0 导学

0.1 费曼学习法

  • 费曼学习法是一种高效的学习方法,它强调以教促学,通过向他人传授知识来加深自己的理解。
  • 这种方法包括四个步骤:
    选择知识:确定你想要深入理解的知识。
    简化知识:用简单的语言向他人(最好是不熟悉该知识的人)解释这部分知识。
    识别并填补知识空白:在解释过程中,识别自己理解中的漏洞,并返回去填补这些空白。
    重复和简化:不断重复这个过程,直到你能够简洁明了地解释这部分知识。

0.2 渗透测试概念

  • ‌‌渗透测试是一种在计算机系统上进行的授权模拟攻击,旨在对其安全性进行评估。‌渗透测试通过模拟‌恶意黑客的攻击方法,评估计算机网络系统的安全性能。它是一种机制,通过渐进的、逐步深入的过程来检查网络系统的安全漏洞。

‌0.3 渗透测试前景

  • 网络安全人才缺口大;10-15年内是风口行业:薪资高,国内都不低于1万块一个月。
  • 安全服务工程师主要面向公司,拿固定的工资,做些漏洞挖掘的工作,证书oscp、cissp。
  • 红队主要面向国家,打击网络犯罪,证书oscp、osep。

0.4 渗透测试思路

  • 信息搜集、漏洞扫描、漏洞挖掘、开始攻击、权限维持(持久化)、权限提升、免杀隐藏、横向移动、痕迹清理
  • web渗透、红队:专研python、php、java三选二,剩下的就是把攻防技术这块搞好。

0.5 鸡汤

  • 不论是任何方向我们要做的就是究其本质,找到正确的努力方向,而不是盲目学习,那只会让自己痛苦。
  • 在任何领域,无论我们达到了什么样的成就,都应该保持谦逊的态度,认识到自己的局限性。这种自我认识并不是自我贬低,而是一种智慧,它提醒我们总是有未知的领域等待我们去探索,总是有新的知识等待我们去学习。认为自己“什么都不会”的态度,实际上是对知识无限性的尊重和对学习过程的热爱。这种态度激励我们保持好奇心和开放性,不断追求新的理解,不断挑战自己的假设和信念。通过这种方式,我们可以持续成长,不断扩展我们的知识边界,最终成为更全面的个体。
  • 学渗透就要:懂进攻,知防守。

1 语言基础

  • 人的精力是有限的,要根据个人需求来选择学编程语言。前期可以学一学python。

1.1 编程语言

  • C语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发。C++:在C语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计算等领域。
  • Java:一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。
  • Python:简洁易学,拥有丰富的库,适用于数据分析、人工智能、Web开发等。
  • C#:由微软开发,主要用于Windows平台上的应用开发。
  • JavaScript:主要用于网页前端开发,也可用于服务器端开发(Node.js)。
  • Ruby:一种简洁而富有表现力的编程语言,常用于Web开发。
  • PHP:主要用于Web开发,尤其适合服务器端脚本编程
  • Swift:苹果公司开发的编程语言,用于iOS和macOS应用开发。
  • Go:一种高效、简洁的编程语言,适用于网络编程和云计算等领域。
  • Kotlin:可与Java互操作,主要用于Android开发。

1.2 函数式编程语言

  • Haskell:纯函数式编程语言,以强大的类型系统和数学上的严谨性著称。
  • Clojure:运行在Java虚拟机上的Lisp方言,结合了函数式编程和Java平台的优势。
  • Lisp(包括CommonLisp、Scheme等):历史悠久的编程语言家族,以其高度的灵活性和宏系统闻名。

1.3 数据科学和机器学习领域语言

  • R:在统计分析和数据可视化方面应用广泛。
  • Julia:设计用于高性能科学计算和数据分析。

1.4 Web全栈开发语言

  • TypeScript:是JavaScript的超集,增加了静态类型检查等特性,提高了大型项目的开发效率。

1.5 移动开发语言

  • Objective-C:曾经是iOS开发的主要语言,现在逐渐被Swift取代。

1.6 嵌入式系统开发语言

  • Assembly Language(汇编语言):不同的处理器架构有不同的汇编语言,用于对硬件进行底层控制。

1.7 其他语言

  • Pascal:曾经在教学和早期软件开发中有广泛应用。
  • Delphi(基于ObjectPascal):用于快速应用开发。
  • Scala:融合了面向对象编程和函数式编程,运行在Java虚拟机上
  • Elixir:基于Erlang虚拟机,具有高并发和容错性,适合构建分布式系统。

2 软件程序

  • 软件程序是一种计算机程序,用于计算机计算和其他可编程设备,这其实就是我们说的代码。
  • 不论是什么软件程序,都是由代码组成的。比如网页设计、网站开发、软件开发、软件工程等等,其本质都是代码。很多专有名词也都是这样的,所以不需要去刻意区分。这些代码只是完成特定功能的罢了,如鉴权中间件,跨域中间件,其本质就是iis那些中间件,明自本质才不会被名词所混淆。
  • 究其根本,不论是什么样的语言只要能告诉计算机,只要计算机做了,这就是我们的程序。所以不论是哪个方向究其根本就是一行一行的代码,这个代码转化成二进制,我们底层的硬件就知道它要干什么。程序就是告诉计算机,我们要做什么。
  • 哪个更快用哪个,python能做的就不要用c++,越简单的编程语言越实用,因为其本质都是让计算机去做同样一件事,所以不要把事情复杂化。

2.1 web程序(网站)

  • 渗透对应的就是对web程序入侵,但除了学web程序,还要学其它的。
  • 通常构成:前端-后端-数据库-服务器。
  • 前端url请求到后端,然后执行什么一个命令。如果要后端登陆,这时候就要调用数据库的数据,数据库是在服务器上的。
  • 后边web安全入门会讲。

2.1.1 语言

  • HTML:可能面临点击劫持等安全问题。
  • CSS:虽然主要用于样式,但也存在注入风险。
  • JavaScript:易受XSS攻击,包括DOM型、反射型和存储型,以及其他如点击劫持和请求走私等。

2.2.2 代码库

  • 我们写代码用原生的语言去写很废精力,但是可以封装成一些库让它很方便的去调用。
  • JQuery、Bootstrap、ElementUI等库和框架简化了代码编写,但也可能引入安全漏洞。

2.2.3 框架

  • Vue、React、Angular等前端框架基于HTML、CSS和JavaScript构建,它们简化了开发但也需要进行XSS等安全问题的分析。

2.2.4 前端

  • 潜在漏洞:信息泄露、xss、csrf、点击劫持、访问控制、web缓存漏洞、跨域漏洞、请求走私。

2.2.5 后端

  • 潜在漏洞:信息泄露、xss、csrf、ssrf、反序列化漏洞、sqI注入漏洞、命令注入漏洞、服务端模板注入、跨域漏洞、访问控制等等。
  • 语言:php、java、python、golang、c/c++、lua、node.js、ruby。
    后端语言有很多,比如php就会有反序列化漏洞,sql注入漏洞,命令注入漏洞等问题。

2.2.6 数据库

  • 数据库有sql注入,xss,命令注入等潜在漏洞。
  • 数据库分类:
    ①关系型数据库:mysql、sql sever、access、postgre sql。
    ②非关系型数据库:mongodb、couchdb、neo4j、redis。

2.2.7 服务器程序

  • 潜在漏洞:信息泄露、文件上传漏洞、文件解析漏洞、目录遍历、访问控制。
  • 服务器程序有apache、nginx、iis、tengine、tomcat、weblogic。

2.2 二进制程序

  • 这块渗透方面涉猎并不广泛,它本身也是有局限性的。
  • 二进制程序是编译后的软件,它们由0和1组成的机器语言指令构成,这些指令能够直接被计算机的中央处理器(CPU)执行。
  • 二进制程序的渗透测试和分析通常涉及以下方面
    ①逆向工程:分析二进制程序以了解其工作原理,寻找潜在的安全漏洞。
    ②漏洞利用:开发利用代码来证明漏洞的存在,这些漏洞可能允许攻击者执行任意代码、获取敏感信息或破坏系统。
    ③保护机制:研究二进制程序中的安全保护措施,如代码签名、地址空间布局随机化(ASLR)和数据执行防止(DEP)。

2.3 驱动程序(了解即可)

  • 驱动程序也是软件程序的一种。
  • 驱动程序是操作系统与硬件设备之间的桥梁,负责将操作系统的指令翻译成硬件设备可以理解的信号,从而使得操作系统能够与硬件设备进行交互。
  • 在Windows系统中,驱动程序通常具有.sys扩展名。
  • 潜在漏洞:内网渗透,逆向工程,病毒分析,安全对抗,外挂保护(比如腾讯的外挂保护,你怎么去绕过外挂保护?可能就需要用到驱动底层逻辑去和他对抗)

2.3.1 内核驱动

  • 内核驱动是操作系统内核的一部分,它们在系统启动时加载,并在整个系统运行期间提供硬件访问服务。
  • 内核驱动负责管理硬件资源,如内存、I/O端口和中断,使硬件设备能够高效地与操作系统及应用程序交互。
  • 内核驱动还可以提供性能优化,如DMA(直接内存访问)和缓存管理,以提高硬件设备的效率。

2.3.2 设备驱动

  • 设备驱动是操作系统和硬件设备之间的中介。
  • 为应用程序提供统一的接口来访问硬件设备,隐藏硬件的复杂性。
  • 管理硬件资源,确保多个设备和应用程序可以公平地访问硬件。
  • 处理硬件产生的中断,这是硬件通知操作系统有事件发生(如数据到达)的一种方式。
  • 设备驱动还负责处理硬件操作中的异常情况,如硬件故障或数据错误。

2.4 上位机

  • 上位机通常指的是在工业控制系统或自动化系统中,用于监控和控制的计算机或控制单元。

2.5 脚本程序

  • 脚本语言:lua、php、go、python、JavaScript
  • 脚本通俗理解就是拿过来以后我就可以直接看见它的源代码,可复制性高。打开浏览器随便进一个网站。f12去看一下,基本上前端代码在调试器里都是可以看到的。

2.5.1 主流脚本语言

  • golang(脚本性)、python(脚本性)、nodejs(脚本性程序)
  • 这些编程语言都可以写一些脚本性的病毒,python可以编写木马,js也可以编写木马。比如beefxss,了解本质的人都知道是相当于js写的木马;再比如PHP一句话木马,就是php写的木马。
  • 就算学会了编程语言基础,还是得去了解这个脚本木马的构成是怎么写的。就比如说你会了js,但你不一定会写js病毒,因为你可能对病毒的写法不了解。
  • 所以说,写任何病毒脚本之前要学会编程基础,基本的语法,库的调用,然后了解病毒的一个原理构成,再尝试编写病毒。

2.5.2 macro(宏病毒)

  • 宏病毒是一种利用Office应用程序中的宏功能来传播的恶意软件。
  • 宏代码是VB、c#类似于这样的语言去写的。

2.5.3 Batch、PowerShell

  • 这两个也是微软的,这都是Windows上面的程序,作用是用于内网渗透。
  • 内网渗透并不是单指内网渗透中的域渗透,这么讲太狭隘了,总的来说内网渗透和公网渗透没啥区别就是多了一个域渗透的一个东西,但是域渗透代表不了内网。

2.5.4 CAD LISP(脚本病毒)

  • LISP是AutoCAD等CAD软件中使用的脚本语言,用于自动化绘图任务。
  • cad很多同学玩过,画图纸有时候会用到一些脚本,就好比我们要做excel表格一样,会用一些宏,它可以自动化帮你完成一些工作。
  • 我们可以写一些正常的脚本,也可以写一些不正常的脚本,比如脚本病毒,很多搞cad的人不懂,他懒得画图纸,直接拿别人的,拿到以后发现中毒了。当然他们可能也发现不了中了毒,因为他不
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值