HW学习笔记
栈库分离方法注意事项:
所有用户输入数据需要进行分离过滤,不能遗漏、选择安全的过滤函数 如 mysql_real_escape_string(),避免过滤不严格导致注入
SQL查询模板需要设计安全,米面语义可以被注入数据改变,函数Mysql_query() 等执行SQL预警也需要参数化,避免拼接导致注入
使用数据库提供的预编译语句可以更好的实现栈库分离,SQL栈库分离方法是简单的有效的SQL防注入防御方法,但是需要再设计和开发过程总妥善的处理。
SQLmap流量特征,大量SQL请求,SQlmap需要向目标网站发送大量SQL请求来检测和利用收sql注入漏洞,产生大量包含sql关键字的HTTP请求。;
定时间隔,sqlmap进行检测时,两个HTTP请求之间的时间间隔通常为1-3秒,利用漏洞阶段,如果检测到延迟注入,时间间隔会增加,固定的时间间隔是个重要的特征。
HTTP请求方法,SQLmap使用GET POST方法进行检测,如果漏洞出现在cookie参数中,会使用cookie参数进行检测。
变化的参数,SQLmap会使用常见的SQL注入 点 如 ID query name等参数进行检测,这些参数值会不断变化用于构造SQL逻辑。
恶意载荷:sqlmap加测请求中的参数值会包含大量的SQL相关的关键字,如 select union database() user() 等,这是重要的特征。
页面差异: 如果目标网站存SQL注入漏洞,sqlmap 发送请求会导致网页返回结果产生差异,通过比较正常页面的注入的差异可以检测到sqlmap的攻击活动。
请求来源:sqlmap 支持代理和tor进行隐藏检测,如果观测到大量的SQL注入请求来自同一个代理或者Tor节点,这个特征也可以是为sqlmap攻击的判断依据之一
WAF拦截:如果这个网站启用了WAF防护,SQlmao的大部分请求会被WAF规则拦截,通过分析拦截请求中的特征可以判断出使用了sqlmap工具
持续的时间: sqlmap 的整个检测和利过程需要持续一定的时间,通常在30min,该时间特征也可以作为判断的依据。
Shiro 反序列化防御:过滤cookie过长的请求: 主要原因有:
Shiro使用了commons-beabutils畸形对象的序列化与反序列化操作。 而Commons-beanutils在1.8.3之前的版本存在反序列化漏洞,攻击者可以构造特殊的序列化数据利用这个漏洞执行任意代码。
Shiro核心组件Subject的创建过程需要畸形对象反序列化操作,攻击者可以在一些可控的输入点 cookie中注入恶意序列化数据,在Subject创建过程中触发
nmap
nmap 探测机制,nmap在对主机执行扫描之前,会发送一个ICMP包,谈探测远程主机是否存活,如果又返回的话开始扫描,如果没有返回则不执行扫描。
菜刀:使用base64加密的方式发送给“菜刀马”的指令,其中关键的paylaod 1 和2 名字可以换
蚁剑的特征:
默认的USER-agent请求头是 antwordxxx ,但是可以通过 /modules/request.js 文件中的请求UA绕过,其中流量最明显的特征@ini_set("display_error",'0")这段底阿妈基本是所有WEbshell客户端连接PHP类WEbshell都有一种代码, 蚁剑混淆加密还是有一个比较棉线的特征,参数为大多 "0x....=" 这种形式 ( 下划线可替换 )所以可以0x......= 开头的参数名也很可能就是恶意流量。
冰蝎的特征:
POST请求:
应急响应:
网站被挂马——
取证: 等了服务器,备份,检查服务器敏感目录,查毒,用户后缀等属性,调取日志
处理: 恢复备份 (快照回滚最近一次,确定入侵防方法,漏洞检测进行修复)
溯源: 查入侵IP, 入侵方法(网络攻击事件的确定)
记录:归档-预防事件监测——恢复跟踪,记录漏洞应用等其他安全。
排查:
cmd输入lusrmgr.msc命令查看服务器是否存在隐藏账号、克隆账号结合日志,查看管理员登录时间,用户名是否存在异常
检查异常端口、进程 检查端口连接情况,是否有远程连接、可疑连接:a、netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHEDb、根据netstat 定位出的pid,再通过tasklist命令进行进程定位 tasklist | findstr “PID”
检查启动项、计划任务、服务win+r:输入msconfig,查看异常启动项win+r:输入regedit,打开注册表,查看开机启动项
检查系统相关信息win+r:输入systeminfo查看系统信息
日志分析win+r:输入eventvwr.msc,打开事件查看器导出应用程序日志,安全日志,系统日志,利用log parser分析
被攻击后文件被删除,然后先恢复文件 lsof 恢复删除文件, 然后插卡日志,查看服务 查看进程 查看是否有新增加的账户
内网渗透测试:
linux 排查思路:
1. 检查日志文件:在Linux中,日志文件主要包括/var/log/auth.log、/var/log/syslog、/var/log/messages等,这些日志文件可能包含与入侵相关的信息。检查这些日志的异常登录、命令执行等可疑信息。
2. 检查进程和服务:使用ps、netstat等命令检查当前运行的进程和网络连接,分析是否有可疑进程或连接。入侵后常见的后门进程和 rootkit 需要通过这些信息检测。
3. 检查文件完整性:使用文件完整性检测工具如Tripwire定期监控重要文件的变化。通过和数据库对比,我们可以发现文件被非法修改或放置的情况。
4. 检查用户和组:使用id、last等命令检查是否有新建的可疑用户或组,也可通过lastlog检查用户登录情况,这些信息可能与入侵有关。
5. 检查计划任务:使用crontab命令检查是否添加了可疑的计划任务,这可能与入侵有关。
6. 检查文件属性:比较系统目录和文件的时间属性,如 atime、mtime 和 ctime,检查其中异常的变化。这可能表明被入侵后非法访问或修改的文件。
7. 使用入侵检测工具:使用开源工具如chkrootkit、rkhunter、Lynis或商业工具对系统进行扫描,检查已知入侵事件痕迹。
8. 检查SSH配置和用户:检查~/.ssh/目录下的文件权限和内容,是否有新增的SSH key。也要检查/etc/ssh/sshd_config中的配置,是否有安全隐患。这与SSH入侵相关。
9. 检查SELinux设置:如果开启了SELinux,需要检查audit.log日志和selinux配置,看是否有被误报或误操作的情况,这可能与入侵有关。
除此之外,还需要检查敏感文件、删除文件的恢复,分析网络安全设备日志等。通过关联各种信息,可以还原入侵时间线,找到入侵痕迹。但入侵者也可能为隐蔽行踪而清除部分日志和文件,这增加了排查难度。
总的来说,入侵排查需要全面分析主机的各类信息,通过发现的异常情况综合判断是否存在入侵行为。这需要对系统运维和安全有较深入的理解,同时也需熟练运用各种排查工具。
内存马排查手段
1. 分析内存快照:使用工具如Volatility、Redline等获取系统内存快照,然后进行分析查找恶意代码特征。这需要对各种恶意代码家族有所了解,能够识别其特征字符串或行为逻辑。
2. 检查进程列表:分析正在运行的进程,查找可疑进程。内存马常常隐藏于看似正常的系统进程中,也会创建自定义的恶意进程。需要判断进程的启动路径、命令行参数、文件描述符等信息。
3. 分析网络连接:使用netstat等工具分析当前网络连接状况,查找与内存马命令控制相关的网络连接。常见的有非标准端口上与特定IP的长连接等。
4. 检查系统调用:使用strace、sysdig等抓取进程系统调用,分析是否存在可疑调用。恶意代码常常通过非标准的系统调用方式实现 Rootkit 或隐藏自身等功能。
5. 分析内核对象:检查系统中断描述表、系统调用表等内核对象是否被恶意代码钩取或修改。这需要熟悉内核结构与各类对象。
6. 比较内存快照:获得多个系统内存快照,进行对比分析。通过比较内存中恶意特征或可疑对象在不同时刻的变化,可以发现内存马的存在。
7. 检查Rootkit:使用Rootkit检测工具扫描系统,如chkrootkit、rkhunter等。内存马常与各类Rootkit技术结合使用,这些工具可以检测到已知Rootkit。
8. 分析内存转储:使用Windows的 suggests 或 Linux 的 LiME 等工具转储系统内存,然后对转储进行离线分析查找特征。这避免了直接分析运行系统带来的困难。
9. 检查计划任务或启动项:分析是否存在可疑的新建任务计划或启动项,这可能与内存马相关。检查注册表Run键值或系统启动脚本等。
除此之外,我们还需要综合分析各种日志、文件系统等,通过关联分析排查内存马。但内存马实现技术的不断进步也给检测带来很大困难,需要安全研究员持续研究分析新出现的恶意代码家族与技术。
暗链与挂马
暗链(Cloaking):暗链是通过欺骗搜索引擎,将一些正常用户难以访问的页面 indexed 到搜索引擎中,当用户点击这些链接时被重定向到这些隐藏页面。黑客常常利用暗链分发恶意软件或推广非法网站。暗链的实现手法主要有:- IP 欺骗:使用与正常网站不同的IP地址托管恶意内容,但在源代码中声明为正常网站URL,欺骗搜索引擎。- 目录欺骗:在正常网站的目录下放置恶意页面,但使用与该目录不对应的URL声明,欺骗搜索引擎索引该页面。- 状态码欺骗:返回200成功状态码让搜索引擎索引页面,但当用户访问时返回301重定向至恶意页面。- 机器人欺骗:通过判断User-Agent,当搜索引擎爬虫访问时返回正常页面,用户访问时返回恶意页面。- 页面重定向:搜索引擎索引正常页面,当用户点击后,通过JavaScript或META refresh 重定向至恶意页面。
2. 挂马(Web Shell):挂马指黑客通过漏洞植入Web服务器一段恶意代码,这段代码可以构建一些操作界面,实现对网站的远程控制。黑客可以通过挂马上传文件、执行系统命令、存取数据等。常见的挂马类型有:- ASP/ASPX Shell:用于控制ASP/ASP.NET网站。
\- PHP Shell:用于控制PHP网站,最常见的类型。
\- JSP Shell:用于控制JSP网站。
\- CGI Shell:用于控制Perl、Python、Ruby等语言开发的网站。挂马和暗链都是黑客常用的攻击手法,它们通过技术手段实现欺骗用户或控制网站服务器的目的。我们需要采取必要的安全防范措施来减少这类攻击,比如修补系统漏洞、过滤非法URL、检测恶意代码等。
CS流量特征
1. 非标准端口使用:Cobalt Strike SOCKS代理默认监听1080端口,拒绝服务攻击控制端口默认为55553。攻击活动也常通过高端口隐藏通信。
2. HTTP通信:Cobalt Strike SOCKS代理通信使用HTTP协议,可以提取明文传输的数据包进行分析。
3. malleable C2配置:Cobalt Strike提供“change me”配置文件用于自定义与C2服务器的通信方式,常见的修改包括profile、user-agent 、url、header等信息,从而产生各种变化的HTTP流量。
4. 长连接:Cobalt Strike与C2服务之间使用长时间的HTTP通信连接,这些连接可持续几个小时。通过分析这些连接可以发现C2服务器的地址与端口。
5. 间隔时间特征:Cobalt Strike与C2服务器通信时,两个HTTP请求之间的时间间隔通常不会低于3秒,高端可达10秒,该时间特征可以用于流量检测。
6. URI格式:连接C2服务器请求的URI格式通常为“/Something.php”,并带有一定的参数,其中文件名后缀可变。
7. post请求:Cobalt Strike与C2的通信通过发送HTTP POST请求来提交数据, POST请求的正文内容会经过加密,常见的编码方式有base64、AES等。
8. 代码反射:Cobalt Strike通过访问特定URI使得C2服务器反射回一段JavaScript代码,该JS代码负责与C2服务器建立WebSocket连接用于命令控制,该特征可用于检测。
9. Beacon数据包:Cobalt Strike使用“Beacon”来描述从受控主机到C2服务器的通信数据包,Beacon负载中携带恶意指令以及主机信息,其内容可分析识别。
综上,通过分析网络环境中存在的非标准端口流量、长连接、定时发送数据包等行为,提取其特征并与Cobalt Strike的特征进行匹配,可以有效检测到其攻击活动,这对网络威胁检测至关重要。
%00特征和利用
%00截断漏洞的典型特征包括:
1. 攻击者可以在参数中插入%00截断输入验证,如过滤器和SQL语句等。
2. 如果%00出现在文件路径中,可以截断路径访问上级目录。
3. 可以通过%00截断SQL语句绕过简单的SQL注入防护。
4. 可以通过覆盖HTTP表单数据、cookie、定位符等读取服务器端的敏感信息。
5. 攻击者可以将额外的数据附加到命令的末尾来操纵某些应用程序。
%00截断漏洞常见的利用场景包括:
1. 文件包含攻击:通过%00截断文件路径检查,包含上级目录下的恶意文件,导致远程代码执行。
2. HTTP响应拆分:通过%00截断HTTP响应,注入额外的数据到响应中,这可能导致XSS、Cache Poisoning等攻击。
3. Session Fixation:通过%00截断Session ID,绕过一些基于Session ID的登录机制,实施Session Fixation攻击。
4. SQL注入:在SQL语句的字符串参数中插入%00,可以绕过一些基于错误信息的SQL注入防护,成功执行SQL注入攻击。
5. 命令注入:在执行命令的参数中插入%00,可以在部分系统中截断参数,注入额外的命令从而执行任意命令。
6. HTTP重定向:通过%00截断HTTP重定向(HTTP 302)响应,可以让浏览器重定向到一个恶意站点,用于浏览器攻击和钓鱼。
7. 源代码泄露:如果网站显示错误信息中泄露了源代码信息,攻击者可以通过%00截断错误页面URL以读取源代码。
文件上传二次渲染绕过
文件上传二次渲染绕过就是一种常见的文件上传攻击技术。它的基本原理是:
1. 上传恶意文件(如.htaccess,.user.ini或图片文件)
2. 该文件在上传成功后,会被网站渲染并显示两次。第一次显示文件名,第二次显示文件内容。
3. 恶意文件的内容可以使得其在第二次渲染时被作为代码执行或包含其他恶意文件。
4. 通过这种方式可以绕过一些简单的文件扩展名或内容检测,成功上传恶意文件。
文件上传二次渲染绕过常见的防护措施包括:
1. 禁用显示上传文件的链接,防止上传文件被二次渲染执行。显示上传文件名时使用其Hash值或随机文件名。
2. 对上传文件的内容和扩展名都进行检测,而不仅仅是扩展名。上传文件应该符合所支持的文件内容类型,防止绕过。
3. 上传文件应该设置正确的Content-Type,应与实际文件内容匹配。防止通过修改Content-Type绕过内容检测。
4. 限制上传文件的扩展名,并禁止上传一些敏感文件类型,如.htaccess、.shtml等。
5. 上传文件应存储于非Web目录中,防止其被直接访问执行。文件应通过程序逻辑读取和显示。
6. 显示上传文件内容时,应用转义或者编码来消除其可能的恶意代码和链接。
7. 上传大文件应设置最大尺寸限制,防止拒绝服务攻击。并且上传过程应有超时限制。
8. 定期审计上传文件并检测存在的文件,发现可疑文件应立即删除以修复漏洞。
HW学习笔记的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- linux驱动开发之块设备学习笔记
我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.h ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 测试Servlet生命周期学习笔记
测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...
- Android学习笔记(二)——探究一个活动
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件,主要用于和用户进行交互.一 ...
- C#数字图像处理算法学习笔记(三)--图像几何变换
C#数字图像处理算法学习笔记(三)--图像几何变换 几何图像处理包括 图像的平移变换,镜像变换,旋转变换,伸缩变换,在这里仅以水平镜像为例,通过代码来理解其基本操作方式: 翻转前:
- 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)
简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中.接着,在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)一文中举例子说明了如何在 ...
- AM335x(TQ335x)学习笔记——挂载Ramdisk
上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramd ...
- CSS学习笔记——盒模型,块级元素和行内元素的区别和特性
今天本来打算根据自己的计划进行前端自动化的学习的,无奈早上接到一个任务需求需要新增一个页面.自从因为工作需要转前端之后,自己的主要注意力几 乎都放在JavaScript上面了,对CSS和HTML这方面 ...
- Beego学习笔记——Logs
日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...
随机推荐
- windowsbat命令大全
Bat文件的创建及其命令大全 一.bat文件的创建 新建txt文本文件 向文本文件中输入命令 保存并修改文本文件后缀为.bat 双击保存后的bat文件,运行 二.bat命令大全 echo 和 @ @ ...
- 从零开始配置vim(20)——模糊查询
在讲解vim的基础功能的时候,介绍过了vim的各种查询技巧,在同一个文件中进行搜索的话,那些技巧很有用.在多个文件中我们介绍了使用vim自带的 :grep命令进行搜索,使用quickfix 列表进行跳 ...
- Mysql索引失效场景
Mysql索引失效场景 序言 众所周知在Mysql中,通过使用索引的方式可以加快查询速度,从而避免全文搜索:而索引本身就像图书馆中所有书籍目录,通过查询关键字就能快速找到目标书籍在几列几行,这 ...
- 操作系统开发:BIOS/MBR基础与调试
这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的,在Linux写代码不太舒服,所以最好在Windows上做实验,下载好虚拟机以后还需要下载Nasm汇编器,以及 ...
- WinForm之ComboBox实现模糊查询
ComboBox实现模糊查询 第一步:在Form_Load事件中绑定数据源 第二步:写一个方法,返回一个List<string>类型的集合来存储控件中的Items 第三步:在Form_Lo ...
- 程序设计实验第一学期期末考试复习用源代码【C语言深度解剖】【超详细注释】
有关此篇 在这里博主先告诉大家,博主在学校学的C语言课本是<谭浩强的C语言>那这本红色的书. 博主到期末阶段是学到了结构体那一章,下面是博主的复习代码,是一些比较有编程思想的一些源代码,博 ...
- strobe
总是喜欢一个人出神,置身的场景经常是小时有趣的明晃晃的下午.也不知道为什么印象中有趣的下午的阳光总是让人睁不开眼,我也曾试图给大脑传递过"能不能将那晃眼的阳光删去",但再次置身仍是 ...
- .NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(下)
23 | 静态文件中间件:前后端分离开发合并部署骚操作 这里还有一个比较特殊的用法 一般情况下,我们前后端分离的架构,前端会编译成一个 index.html 文件和若干个 CSS 文件和 JavaSc ...
- Java集合篇之深入解析ArrayList,这六问你答的上来吗?
写在开头 开年第一篇,先祝各位新的一年身体健康,学业有成,事业有成哈,春节期间就是咔咔乱吃,咔咔乱玩,把学习都抛一边子去了,已经9天没有学习了,深深的懊悔,从今天开始,2024年的学习正式开启,一起给 ...
- HDFS文件目录与LiveNodes 数量关系