声明:
本文的学习内容来源于B站up主“泷羽sec”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
一、操作系统
作为安全人员我们需要懂大概的、常规的操作系统,自己去了解,为内网渗透做铺垫,当遇到非常规的情况之后,再慢慢研究。
- 注册表(Linux里面没有,但是有类似的东西)
- 防火墙
- 自启动
- 计划任务
- 事件日志
- 内核驱动
- 系统服务
- 进程线程
- 系统编程
以上是操作系统中常规的一些东西,Linux、Windows,MacOS各有各的特点,但是基本该有的东西都有,比如说自启动、计划任务等。
我们需要了解Windows各种机制问题,比如说病毒如何去添加自启动、添加的位置、添加的方法、可以通过什么计划任务添加、启动的时间、能否规避事件等等,都需要去了解。
学好操作系统可以为内网渗透、逆向工程、病毒编写打好基础。
1. 注册表
Windows注册表(Registry)是一个层级数据库,用于存储系统配置和应用程序的设置信息。它包括硬件、操作系统、用户账户、驱动程序及安装的应用程序等相关信息。注册表通过键(Keys)和键值(Values)组织数据,允许系统和程序读取或写入配置,提高系统的灵活性和集成性。
在Linux中,并没有完全等同于Windows注册表的集中式数据库。取而代之的是配置文件,通常分散在系统的多个目录中,比如:
- 系统配置:位于
/etc/
目录,如/etc/fstab
(文件系统表)、/etc/hosts
(主机映射)。 - 用户配置:位于用户的主目录中,如
~/.bashrc
(Shell 配置)和~/.config/
(应用程序配置)。 - 服务管理:通过
systemd
使用的单元文件位于/etc/systemd/
2. 防火墙
Windows防火墙:集成于Windows系统中,使用图形化界面(GUI)和PowerShell命令进行配置。它基于入站和出站规则,允许用户通过协议、端口和IP地址限制网络流量。Windows防火墙支持高级功能,如IPSec(IP安全协议)和应用程序控制,常用于家庭和企业环境。
Linux防火墙:常见的有 iptables 和更新版的 nftables。它们是命令行工具,通过定义表(tables)和链(chains)来控制数据包的处理路径,支持复杂的流量过滤规则。Linux防火墙通常配置在服务器上,适用于高可定制的网络防护需求。此外,Linux发行版中常用 firewalld(如CentOS、RHEL)提供了更友好的管理方式。
3. 自启动
Windows自启动:通过多种途径实现,包括“启动文件夹”(Startup Folder)、注册表键(如 HKLM\Software\Microsoft\Windows\CurrentVersion\Run
)、计划任务(Task Scheduler)以及服务管理器。用户可以将程序快捷方式放入启动文件夹或配置注册表,服务器和后台服务则通过“服务管理器”自动启动。
Linux自启动:主要依赖于systemd(现代发行版中广泛使用的初始化系统)。用户可通过在 /etc/systemd/system/
创建服务单元文件(Unit Files),设置 WantedBy=multi-user.target
来启用服务的自启动。此外,用户级程序可以通过 .bashrc
、.profile
或 crontab
配置定时启动。传统的 init.d
脚本也在某些旧版系统中被使用。
4. 计划任务
Windows计划任务:提供了图形化界面(GUI)和命令行工具 schtasks
。它允许用户按时间、事件或条件触发任务,如每天定时备份或系统启动时执行脚本。计划任务支持详细的配置,如重试次数、失败后的处理方式以及触发多种事件(如系统空闲)。
Linux计划任务:主要通过crontab和at命令实现。crontab
用于定义周期性任务(如每小时、每天),配置文件位于 /etc/crontab
或用户自定义的 crontab -e
。而at
用于一次性任务,在指定时间执行命令。对于更复杂的任务管理,Linux中也可以使用 systemd
的定时单元(Timer Units),提供秒级精度和更灵活的触发条件。
5. 事件日志
Windows事件日志:通过“事件查看器”查看和管理,日志分为系统日志、应用日志和安全日志等类别,存储在.evtx
格式文件中。管理员可以通过GUI或PowerShell读取、筛选和分析事件,常用于跟踪系统错误、用户登录及程序崩溃等情况。
Linux事件日志:主要通过系统日志文件记录,位于/var/log/
目录下,例如/var/log/syslog
(或/var/log/messages
)、/var/log/auth.log
(认证日志)。现代Linux系统大多使用systemd-journald,将日志存储在二进制格式文件中,并提供journalctl
命令查询日志。此外,Linux系统也支持rsyslog
或syslog-ng
来集中管理日志,支持远程日志服务器。
6. 内核驱动
Windows内核驱动:通常以.sys
文件形式存在,受Windows内核的管理,并通过驱动程序管理器加载、更新或卸载。Windows驱动程序需要通过签名认证以确保系统安全,且必须符合微软的Windows Driver Model(WDM) 或Windows Driver Framework(WDF)。驱动的开发者通常使用微软的Visual Studio和Windows Driver Kit(WDK) 进行开发。
Linux内核驱动:称为内核模块,以.ko
文件形式存在,支持动态加载(即插即用)和静态编译(内核内置)。Linux使用modprobe
或insmod
命令加载模块,并通过lsmod
查看已加载模块。驱动代码通常是开源的,开发者可以使用内核源代码直接编写,并在更新后通过/proc
和/sys
文件系统与驱动交互。
7. 系统服务
Windows系统服务:由服务管理器进行管理,可通过图形化界面、PowerShell 或 sc
命令管理。Windows服务通常在系统启动时自动加载,支持设置自动、手动或禁用启动类型。服务运行在用户模式或系统模式下,常用于数据库、网络服务和监控工具。Windows还支持服务依赖性,确保按顺序启动相关服务。
Linux系统服务:大多通过systemd管理,支持在后台运行服务单元(Unit)。服务文件位于 /etc/systemd/system/
,用户可使用命令如systemctl start
、stop
、enable
来启动、停止和管理服务。Linux还支持通过 init.d
脚本(在旧系统中)或 cron
定时任务运行服务。systemd 提供更多高级功能,如并行启动、依赖管理和日志集成。
8. 进程线程
Windows的进程和线程:每个程序运行时都会创建一个进程,Windows使用任务管理器和Resource Monitor来查看和管理进程与线程。Windows进程由一个或多个线程组成,线程是操作系统调度的基本单位。开发者可以使用Windows API或C++中的Windows线程库管理线程,并通过事件、信号量、互斥量等机制实现线程同步。
Linux的进程和线程:Linux使用轻量级进程(LWP) 实现线程,进程和线程在本质上类似。每个进程可有多个线程,线程之间共享地址空间。通过命令如ps
、top
或htop
,用户可以查看进程和线程。线程和进程的创建与管理通常使用POSIX标准,如fork()
创建进程,pthread
库管理线程。同步机制包括信号、信号量、互斥锁和管道。
9. 系统编程
Windows系统编程:主要使用Windows API,包括对内存管理、线程、文件系统、网络和GUI的访问。开发者通常借助Visual Studio和Windows Driver Kit (WDK) 等工具。Windows还提供 COM、.NET 等框架来支持系统开发和组件交互。系统调用较为复杂,并依赖于封闭的生态系统,开发驱动和应用时需要通过微软的认证机制。
Linux系统编程:基于POSIX标准,开发者可以使用C/C++
与系统调用(如fork()
、exec()
、read()
、write()
)进行进程、线程、文件和网络编程。Linux生态支持开源工具链,如GCC
编译器、GDB
调试器、Makefile 等。Linux的系统调用接口开放灵活,并通过内核模块或脚本化方式简化系统开发。
二、驱动程序(了解即可)
驱动程序也是软件程序的一种,只不过运行的比较底层。
潜在漏洞:内网渗透、逆向工程、病毒分析、安全对抗、外挂保护(比如腾讯的外挂保护,可能就要用驱动程序底层逻辑去对抗)
分类:
- 内核驱动
- 设备驱动
驱动程序主要是操控硬件、操作系统内核的,windows的内核是exe程序。