数据参考:CISP官方
目录
- 安全漏洞及产生原因
- 信息收集与分析
- 网络攻击实施
- 后门设置与痕迹清除
一、安全漏洞及产生原因
什么是安全漏洞
- 安全漏洞也称脆弱性,是计算机系统存在的缺陷
漏洞的形式
- 安全漏洞以不同形式存在
- 漏洞数量逐年递增
漏洞产生的技术原因
内因:软件复杂性使得漏洞不可避免
- 软件规模増大,功能越来越多,越来越复杂,难以避免缺陷
- 软件模块复用,导致安全漏洞延续
- 缺乏从设计开始安全考虑
外因:互联网发展对软件安全的挑战
漏洞产生的经济原因
软件开发管理过程中缺乏对安全的重视
- 市场和业务要求将交付期和软件功能做主要因素
- 用户方没有提供安全方面的压力
“劣币驱除良币”效应,重视安全的公司被淘汰
劣币驱除良币效应后果
- 企业管理层对安全开发缺乏了解
- 开发管理人员不了解软件安全开发的管理流程、方法和技巧
- 软件开发人员缺乏将软件安全需求、安全特性和编程方法进行结合的能力
- 测试人员无法以“坏人"的角度来思考软件安全问题
漏洞产生的应用环境原因
- 互联网的发展使软件运行环境从传统的封闭、静态和可控变为开放、动态和难控
- 攻防信息不对称性进一步增强,攻易守难的矛盾进一步凸显
- 强大经济利益推动漏洞挖掘产业化方向发展
二、信息收集与分析
攻击的过程
- 踩点:攻击者在此阶段收集目标系统或网络的信息,探测其弱点和漏洞。这包括公开可得的信息、社交媒体数据、网络架构、端口扫描等。(信息收集及分析)
- 入侵:基于收集到的信息,攻击者执行特定的攻击行动,以获取未授权访问目标系统或网络的权限。这可能涉及利用漏洞、恶意软件传播、社会工程等手段。(实施攻击)
- 后门:成功入侵后,攻击者可能会在目标系统中留下后门,以便日后轻松进入系统,获得持久访问权限。后门可通过恶意代码、远程访问工具、植入的恶意设置等方式实现。(方便下次进入)
- 痕迹:为了隐藏攻击行为,攻击者可能会试图清除或篡改入侵的痕迹,以防止被发现。这包括删除日志、修改访问记录、擦除恶意软件等。(清除入侵记录)
信息收集:攻击的前奏
为什么要信息收集?
- 知己知彼,百战不殆
- 信息是攻击的基础
- 信息收集可以成为攻击的方式
为什么需要分析目标
- 确定收集信息的准确性
- 攻击方式及攻击路径的选择
收集什么信息?
目标IT相关信息
- 目标的域名信息
- 目标的网络拓扑结构、安全设备型号、配置
- 目标系统版本、数量
- 目标应用软件版本、型号、开发语言、开发商等
- 目标的相关Web网页内容
目标相关公开信息
- 组织机构、地理位置、电话号码、邮件等联系方式
- 近期重大事件
- 员工简历
其他可能令攻击者感兴趣的信息
案例:明星的家庭住址
背景:明星家庭住址是明星隐私,她们都不愿意透露,微博时代,明星也爱玩微博
微博信息
- 13:50 四环堵死,我联排要迟到了?
- 在北京工作这么久,都没在北京中心地带买一套房子
- 光顾着看围脖,忘记给老爸指路,都开到中关村了
结论:北四环外某个成熟小区,小区中间有三个相连的方形花坛
Google earth能帮助我们快速找到这个小区
Google Earth
Google Earth是一款提供卫星影像、地理信息和3D建模的虚拟地球浏览器,可以用于浏览和探索全球范围内的地理位置。以下是使用Google Earth来缩小范围并找到特定小区的一般步骤:
-
下载和安装Google Earth:首先,您需要从Google Earth官方网站下载并安装适用于您的操作系统的Google Earth应用程序。
-
搜索目标地点:打开Google Earth后,您可以使用搜索栏输入相关的位置信息,例如“北京北四环外某小区”。您还可以缩放和平移地球图像以便更详细地浏览目标地区。
-
利用卫星影像和3D建模:使用Google Earth的卫星影像功能和3D建模功能,您可以查看目标地区的实际外观,包括建筑、道路和地理特征等等。这可能有助于您识别目标地点是否符合微博中提到的描述。
信息收集与分析工具
系统命令工具:
- Nslookup:用于查询域名解析的工具。
- Whois:用于获取域名的注册信息,如注册人、注册商等。
- Tracert:用于跟踪网络路径,检测数据包从源到目的地的路径。
- Ping:用于测试与目标主机之间的连通性和延迟。
搜索引擎:
- Google:全球最大的搜索引擎之一,可用于搜索各种信息。
- 百度:中国最大的中文搜索引擎,提供本土化的搜索结果。
扫描器工具:
- 端口扫描器(如nmap):用于扫描目标主机上开放的端口,了解目标主机的服务和配置情况。
- 漏洞扫描软件:
- 系统漏洞扫描(如Nessus):用于发现操作系统存在的安全漏洞。
- Web漏洞扫描(如AppScan):用于发现Web应用程序中的安全漏洞。
- 数据库漏洞扫描:用于检测数据库系统中可能存在的安全漏洞。
公开信息收集搜索引擎:
- 使用搜索引擎(如Google)进行信息搜索,可以找到公开网站和相关信息。
快速定位
某开源软件 xxx.jsp 脚本存在漏洞:在Google搜索中输入“xxx.jsp”可以找到使用该脚本的Web网站,从而了解是否存在相关漏洞。
信息挖掘:
定点采集
- 使用Google搜索,结合关键词“.doc+ website”,可以进行信息挖掘,找到与特定关键词相关的文档和网站。
隐藏信息:
- 使用Google搜索,结合一些常见的文件后缀(例如:.mdb、.ini、txt、.old、.bak、.001等),可以搜索到可能包含隐藏信息的文件。
后台入口:
- 后台入口指的是网站或应用程序的管理界面。
- 对于具体的网站和应用程序,通常会有一些已知的后台入口路径(例如,/admin、/login等)。
- 请注意,非法利用这些后台入口进行未经授权的访问是违法行为,请确保您在合法和合规的情况下使用这些信息。
案例:Google Hack
案例背景:
- 时间:2008年01月10日
- 目标:北京XX区政府门户网站
- 测试方式:定点采集
- Google搜索:“.doc+website”挖掘信息
公务员邮箱使用说明:
- 选择公务员邮箱,输入邮箱名,邮箱密码默认为六个1,鼠标单击登陆。
- 例如,选择公务员邮箱,在用户名处输入tjjbgs,密码输入11111,单击登陆即可进入统计局办公室的邮箱。
信息收集与分析
网络信息收集
- 正常服务 (如:whois)
- 系统功能(如:ping、tracert)
系统及应用信息收集
服务旗标:
- 服务旗标是指通过分析网络数据包中的特定字段来确定正在运行的服务类型。
- 通过检测服务旗标可以了解目标主机上开放的服务,例如HTTP(80端口)、FTP(21端口)等。
欢迎信息:
- 欢迎信息是在与目标主机建立连接后系统自动发送的文本信息。
- 欢迎信息可以提供关于目标主机操作系统、应用程序或服务的一些提示信息。
端口扫描:
- 端口扫描是一种通过扫描目标主机的开放端口来获取信息的方法。
- 使用工具如Nmap可以发现目标主机上哪些端口是开放的,从而判断其运行的服务和可能存在的漏洞。
TCP/IP协议指纹识别
- TCP/IP协议指纹识别是通过分析目标主机的TCP/IP网络通信包头部信息来识别其操作系统或应用程序类型。
- 每个操作系统或应用程序在实现TCP/IP协议时可能有一些不同的特征标识,通过识别这些标识可以推断目标主机的类型。
信息收集与分析的防范
公开信息收集防御
- 信息展示最小化原则,不必要的信息不要发布
网络信息收集防御
- 部署网络安全设备 (IDS、防火墙等)
- 设置安全设备应对信息收集 (阻止CMP)
系统及应用信息收集防御
- 修改默认配置 (旗标、端口等)
- 减少攻击面
三、网络攻击实施
网络攻击实施
-
配置缺陷:指系统或应用程序中存在安全配置错误或不完善的问题,可能导致系统脆弱性暴露,使攻击者能够利用这些漏洞进行进一步攻击。
-
口令破解:攻击者使用各种方法尝试猜测、破解密码,进而获取未授权的访问权限。这包括使用常见密码、暴力破解、字典攻击等技术手段。
-
社会工程学攻击:社会工程学是指攻击者通过欺骗、伪装或诱导等手段,获取目标用户的敏感信息或迫使其执行某些操作。这可能涉及通过电话、电子邮件、短信等方式进行欺骗。
-
欺骗攻击:攻击者通过虚假信息或伪造身份来欺骗受害者,让其泄露敏感信息、进行非法交易或执行恶意操作。
-
拒绝服务攻击:攻击者通过向目标系统发送大量请求或占用系统资源,导致系统无法正常响应合法用户的请求,从而使系统服务不可用。
-
缓冲区溢出攻击:利用软件漏洞,攻击者向系统输入过多数据,超出程序预留的缓冲区存储范围,导致系统崩溃、执行非预期操作或执行恶意代码。
-
代码注入攻击:攻击者将恶意代码注入到应用程序中,使其在运行时执行恶意操作,例如获取敏感数据、控制系统或破坏系统功能。
-
跨站攻击(XSS):攻击者通过在网页输出中注入恶意脚本,使用户在浏览网页时执行这些脚本,从而获取其敏感信息或窃取身份。
网络攻击方式
配置缺陷
- 默认账户/口令
- 不合理配置
案例:启用匿名 (默认)
- 默认匿名身份:iuser_计算机名称
- 配置给予更高权限
比如下图是windows系统的IIS服务器,出现的问题就是管理员启用了匿名访问,而且默认的账号是Administar(管理员)这个就存在一定的风险
口令破解
社会工程学攻击
(这个两个后面会有专门的文章讲)
网络攻击方式 - 电子欺骗
欺骗攻击( Spoofing) 是指通过伪造源于可信任地址的数据包以使一台机器认证另一台机器的复杂技术
电子欺骗的方式
- ARP 欺骗 ( ARP Spoof)
- DNS 欺骗( DNS Spoof)
- IP 欺骗( IP Spoof)
- TCP会话劫持( TCP hijack)
- 路由欺骗
- ......
典型网络攻击拒绝服务攻击
什么是拒绝服务
- 拒绝服务式攻击(Denial of service),顾名思义就是让被攻击的系统无法正常进行服务的攻击方式。
拒绝服务攻击方式
- 利用系统、协议或服务的漏洞
- 消耗目标系统服务资源能力 (带宽、性能)
典型攻击方式
- SYN FIood
- UDP FIood
- Teardrop
- Ping of death
- Smurf
- Land
- ......
网络攻击方式
溢出攻击
- 缓冲区溢出 (曾经的攻与防的焦点) :心脏滴血、想哭勒索软件等都是利用溢出漏洞进行攻击
- 格式化字符串溢出:攻击者通过操纵格式化字符串的参数,可以读取或写入敏感数据,执行任意代码,甚至导致系统崩溃。
代码注入
-
SQL注入:通过在Web应用程序的输入字段中插入恶意SQL语句,攻击者可以绕过身份验证、访问和修改数据库,获取敏感信息。
-
命令注入:通过在输入字段中插入恶意命令,攻击者可以执行系统命令、获取系统权限,并进行其他恶意操作。
-
XPath注入:向XPath查询中插入恶意代码,攻击者可以绕过身份验证、访问和修改XML数据,获取敏感信息。
- ......
四、后门设置与痕迹清除
后门你的就是我的
后门可以作什么
- 方便下次直接进入
- 监视用户所有行为、隐私
- 完全控制用户主机
后门方式
- 系统后门
- 脚本后门
- 隐藏账号
系统后门操作系统级后门·特洛伊木马程序· Rootkit·设备驱动应用级后门·应用软件模块( Apache model)·被篡改的应用软件
系统后门
操作系统级后门
-
特洛伊木马程序:伪装成合法程序或文件的恶意软件,一旦被用户执行,会在系统中建立隐藏的远程访问通道,使攻击者可以远程控制被感染的系统。
-
Rootkit:一种恶意软件,用于隐藏恶意活动并维持长期访问系统的权限,常常通过修改操作系统或内核组件来隐藏其存在。
-
设备驱动后门:在硬件设备的驱动程序中插入的恶意代码,用于实现对系统进行远程控制或获取敏感信息。
应用级后门
-
Apache模块后门:Apache Web服务器中的恶意模块,用于绕过安全措施、获取敏感信息或进行其他恶意活动。
-
被篡改的应用软件:攻击者对正常的应用软件进行修改,使其在用户不知情的情况下执行恶意操作,如窃取用户信息、传播病毒等。
脚本后门
脚本后门威胁
- 隐蔽性强:因为它们可以隐藏在正常代码中,与合法代码混合在一起,使其不易被察觉。
- 难以查找:因为攻击者通常会绕过安全检测和防护机制,规避常见的安全漏洞检测规则。
脚本后门案例
-
Webshell:Webshell是一种常见的脚本后门类型,它通常以PHP、ASP、JSP等脚本语言写成,并嵌入在受攻击的网页服务器上。攻击者可以通过Webshell执行远程命令、上传/下载文件、操控数据库等操作,而且不易被发现。
-
后台管理页面注入:攻击者在合法网站的后台管理页面中注入恶意代码,例如JavaScript脚本。这样,当管理员访问该页面时,恶意代码会被执行,从而为攻击者提供进一步的权限和控制。
-
代码库中的恶意代码:攻击者可以通过篡改开源代码库或者第三方库来插入脚本后门。这种方式利用了开发者在项目中使用的外部代码,使得攻击者能够直接影响到多个项目和系统。
-
操作系统系统脚本后门:攻击者可以通过修改操作系统的系统脚本,如启动脚本、定时任务脚本等,来实现持久的后门功能。这种方式利用了操作系统的特权级别,使得攻击者能够在系统启动时或者定期执行时进行恶意操作。
账号后门
- 隐藏账号:攻击者通过在系统或应用中创建一个普通用户,但将其属性设置为隐藏状态,使其在用户列表或管理界面中不可见。这样,攻击者可以使用该账号来绕过正常的身份验证和权限控制,进行未经授权的操作。
- 已知密码的正常账号:攻击者可能获取到某个正常账号的密码,然后利用该账号进行潜在的恶意活动。这种情况下,攻击者不需要使用后门,而是直接使用合法的账号和已知的密码来登录并进行攻击。
- 超权限账号:某些系统中会存在超级管理员账号或特殊权限账号,这些账号通常具有更高的权限和特殊功能。攻击者可以尝试获取或破解这些超权限账号的凭据,从而获得对系统或应用的完全控制。
痕迹 - 攻击者的把柄
清除/改写日志
- 日志的清除方法
- 日志的改写工具
删除中间文件
删除创建的用户
日志保护
日志设置
- 尽可能多的信息:在日志中记录尽可能多的相关信息,包括操作时间、用户ID、IP地址、请求参数、错误代码等。这些信息有助于故障排查和安全审计。
- 日志时间:确保日志记录包含准确的时间戳,以便在需要追踪事件发生顺序或分析时间线时使用。
- 日志空间:管理好日志的存储空间,确保足够的存储容量以容纳正常的日志流量,并制定合理的日志滚动策略,避免填满磁盘空间。
日志权限
- 限制对日志文件的访问权限,确保只有授权的人员才能查看和修改日志文件。仅授予必要的权限,以保护敏感信息的机密性和完整性。
日志存储
- 本地路径及备份方式:对于本地存储,选择合适的路径来保存日志文件,确保只有授权用户可以访问。此外,定期进行日志备份,并将备份存储在安全的位置,以防止数据丢失。
- 网络存储 (日志服务器):考虑使用专门的日志服务器或网络存储来集中管理日志。这样可以提高安全性和可扩展性,并使日志更容易集中审计和分析。
日志分析重点
- 日期时间 (确定攻击的时间)
- 源IP (确定攻击者IP)
- 请求方法 (部分情况下要关注post操作)
- 请求链接 (查找链接中的特殊字符串)
- 状态代码 (了解操作的结果
日志分析
关注超长的记录
- http协议对URL长度没有限制
- 一般网站正常情况下不需要太长的URL
关注记录中的非正常编码
- 例如:红色代码蠕虫攻击会形成如下记录
关注日志请求链接中的关键字
-
"cmd":该关键字通常用于执行操作系统的命令行。在日志请求链接中出现 "cmd" 可能暗示着对操作系统进行命令执行的尝试。对于此类请求,建议对其进行审计和验证,以确保只有合法的用户可以执行相关操作,并防止潜在的安全威胁。
-
"xp_cmdshell":该关键字通常用于执行操作系统命令的扩展存储过程。在日志请求链接中出现 "xp_cmdshell" 可能意味着试图执行扩展存储过程来执行操作系统命令。由于这可能导致系统的安全问题,应该限制对该扩展存储过程的访问,并确保只有经过授权的用户能够执行相关操作。
-
"Post":该关键字通常表示 HTTP 请求中的 POST 方法。在日志请求链接中出现 "Post" 可能表示一个使用 POST 方法的请求。对于此类请求,需要确保请求的合法性并验证参数的正确性,以防止潜在的安全漏洞和攻击。
-
"select":该关键字通常用于数据库查询语句。在日志请求链接中出现 "select" 可能暗示着对数据库的查询请求。对于此类请求,需要确保查询操作的合法性,并采取适当的访问控制措施,以防止未经授权的数据泄露或滥用。
-
"exec":该关键字通常用于执行特定操作或调用存储过程。在日志请求链接中出现 "exec" 可能意味着试图执行某些操作或调用特定的存储过程。为了确保系统的安全性,需要对这类请求进行验证和控制,以防止潜在的安全威胁。
-
"delete":该关键字通常用于数据库操作中的删除记录操作。在日志请求链接中出现 "delete" 可能意味着试图对数据库中的数据进行删除操作。为了防止数据丢失或滥用,应该限制对删除操作的访问,并确保只有经过授权的用户可以执行相关操作。
-
"update":该关键字通常用于数据库操作中的更新记录操作。在日志请求链接中出现 "update" 可能意味着试图对数据库中的数据进行更新操作。对于此类请求,需要确保更新操作的合法性,并采取适当的访问控制措施,以防止非授权用户对数据进行修改。
-
"insert":该关键字通常用于数据库操作中的插入记录操作。在日志请求链接中出现 "insert" 可能意味着试图向数据库中插入新的记录。为了确保数据完整性和安全性,应该对插入操作进行合法性验证,并限制对插入操作的访问权限。
-
......