IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

安全

共 391 篇文章

IT 2016-02-29 23:39:07 / 累计浏览 3,247

你所不知道的 HSTS

这篇讲的是HSTS(HTTP严格传输安全)这个容易被忽略但至关重要的安全机制。作者从在淘宝首页意外看到罕见的307状态码切入,揭示了HTTPS网站面临的一个实际威胁:中间人利用HTTP(80端口)的首次请求进行劫持,替换广告或注入代码。 文章核心指出,HSTS通过服务器响应头中的`Strict-Transport-Security`字段来强制浏览器使用HTTPS,能有效堵住这个缺口。一个关键细节是,HSTS触发的跳转会使用特殊的307内部重定向状态码,这与常规的302跳转不同——它不会改变请求方法(如POST不会变GET),并且跳转可以被缓存,节省了额外的请求。 同时,作者也指出了HSTS的“坑”:它对纯IP地址或非标准端口无效;最危险的是,如果HTTPS未配置好就启用了HSTS且设置了长期`max-age`,可能导致用户无法访问网站。总体而言,文章清晰阐明了HSTS的工作原理、实际价值与部署风险,对于全站HTTPS化有直接的实践参考。

本机暂存
IT 2016-02-29 23:28:09 / 累计浏览 3,361

简述 OAuth 2.0 的运作流程

这篇技术文章用一次具体的 GitHub 登录授权经历,拆解了 OAuth 2.0 认证流程的核心逻辑。 作者以“访客在网站上用 GitHub 账号留言”为场景,将复杂的认证流程分解为四个直观的步骤:网站与 GitHub 预先协商权限、用户确认授权并获取临时凭证 code、网站使用自身凭证换取最终访问令牌 access_token,最后用该令牌获取用户信息。文章通过“门票”、“盖章”、“绿卡”等生动比喻,把 Client ID/Secret、授权码、访问令牌这些抽象概念及其作用解释得非常清楚,特别是强调了每一步的安全考量——比如为何不能直接用 code 访问数据,以及令牌的权限范围与有效期管理。 对于想理解 OAuth 2.0 “为什么这么设计”以及“各环节如何衔接”的开发者来说,这篇短文提供了一个从理论到实践的清晰视角,能帮助快速建立对该协议运作机制的全局认知。

本机暂存
IT 2016-02-21 22:58:19 / 累计浏览 2,860

Linux安全之SYN攻击原理及其应对措施

这篇讲的是Linux系统面临的经典网络层攻击——SYN Flood。文章直接切入TCP协议固有的缺陷,解释了攻击者如何利用伪造的SYN包耗尽服务器的连接队列,从而瘫痪正常服务。理解了原理后,关键在于防御。文章没有停留在理论,而是给出了四种可立即操作的系统调优方案:通过调整`tcp_synack_retries`等参数减少无效等待,启用强大的SYN Cookie机制来抵御伪造包,适当扩大半连接队列容量,以及用iptables规则对异常流量进行限速。每条措施都附带了具体的`sysctl`或`iptables`命令,从内核参数到防火墙规则,覆盖了从缓解到防御的多层次思路。对于需要加固服务器网络安全的运维人员,这些直接可用的配置点很有参考价值。

本机暂存
IT 2016-02-20 16:43:41 / 累计浏览 4,502

对Linux初学者的一些建议

这篇讲的是一位经验丰富的前辈对Linux新手的“避坑指南”。作者从端正学习态度开始,强调Linux本质上是解决问题的专业工具,而非炫技的玩具。他犀利地指出了初学者常陷的误区,比如过度迷信QQ群、陷入无意义的Windows vs Linux争论,以及被低质量技术文章消耗时间。 对于最让新手头疼的发行版选择,作者的建议很实在:别空谈“哪个好”,而是根据用途来选。比如追求稳定就看CentOS系列,想尝鲜就考虑Ubuntu或Fedora。他甚至出人意料地推荐了LFS,因为跟教程一步步编译整个系统,能让人最快理解Linux的内在构造和模块关系。 在具体学习路径上,作者给出了硬核建议:一开始尽量别用桌面,通过虚拟机搭配命令行来模拟真实的服务器环境。他反复强调要珍惜每一次提问的机会,先学会独立搜索和阅读文档,再去邮件列表观察高手是如何高效提问的。这些建议的核心,是帮助新手把精力聚焦在Linux真正擅长的领域,快速构建扎实的系统认知。

本机暂存
IT 2016-02-16 22:18:10 / 累计浏览 2,042

Android安全–Dex文件格式详解

这篇讲的是 Android 系统里 Dex 文件格式的深度解析。作者从一个简单的 Java 程序生成 Dex 文件开始,聚焦分析了文件头这个核心区域的内部构造。 文章详细解读了魔数、校验码和 SHA-1 等关键字段。特别是为了确保文件安全,系统设计了双重校验机制:先用 Adler32 快速筛查文件是否损坏,再用 SHA-1 进行高精度的完整性验证。这种分层的设计思路既高效又可靠。 此外,文章还剖析了文件头中字符串索引的存储方式。作者指出,Dex 文件使用了 uleb128 变长编码来表示字符串长度,这种精巧的编码能在绝大多数情况下节省空间,是针对移动端场景的务实优化。 通过对这些底层细节的拆解,文章揭示了 Dex 文件如何兼顾执行效率与安全性。理解这些格式规范,是深入进行 Android 应用安全分析和性能调优的基础。

本机暂存
IT 2016-02-16 21:16:37 / 累计浏览 3,284

老生常谈,安全上你不该犯的错!

这篇文章聚焦于Web开发中几个老生常谈却依然常见的安全漏洞:SQL注入、XSS攻击与猜测URL攻击。作者从实际案例出发,剖析了漏洞存在的根源——核心问题都在于未对外部输入进行充分验证与处理。 对于SQL注入,文章以一段直接拼接参数的查询代码为例,展示了攻击者如何通过构造`?ID=1 OR 1=1`获取全表数据,并指出了使用ORM框架或参数化查询是根本的解决方案。针对XSS攻击,文章解释了恶意脚本如何通过URL或数据库存储窃取用户Cookie,并强调了对所有输入进行HTML编码的重要性。至于猜测URL攻击,则是通过遍历参数来越权访问数据,建议采用无规律ID、增加权限校验或添加校验字段来防范。 文章最后提出了一个关键观点:安全是一个系统工程,其首要原则是“不要相信任何输入”,需对包括URL参数、Cookie、Header在内的所有外部信息保持警惕。同时,配合使用安全扫描工具进行检测,能进一步提升系统安全性。

本机暂存
IT 2016-02-16 21:15:15 / 累计浏览 6,190

什么是DNS劫持和DNS污染?

你可能遇到过这样的怪事:输入正确的网址却跳到运营商广告页,或者明明翻了墙某些网站依然打不开。这些问题的共同根源往往是网络层面的DNS干扰。这篇技术讲解就厘清了其中两种最常见、但原理不同的手段:DNS劫持与DNS污染。 文章的核心在于对比。DNS劫持,可以理解为“结果被篡改”。它发生在DNS服务器层面,攻击者或运营商控制了服务器,直接修改了域名对应的IP地址。你的查询请求是真实的,但收到的回复是假的,导致你被引导到错误的网站。其典型症状是首次拨号上网时总会弹出运营商的门户页面。 而DNS污染,更像“过程被污染”。它利用DNS查询基于不可靠UDP协议的特点,在数据传输的途中进行拦截和伪装。当你的查询请求途经被监控的节点时,系统会提前伪造一个虚假的IP地址返回给你,根本无需你的请求到达真正的DNS服务器。这通常用于实现对特定境外网站的封锁。 因此,它们的应对策略也不同。对于DNS劫持,修改本地DNS服务器地址为公共DNS(如文章中列举的阿里DNS、114DNS等)是直接有效的解决方法。但对于工作在传输层的DNS污染,单纯更换DNS往往无效,通常需要借助VPN或远程解析等更复杂的方式。 文章不仅讲清了原理,还给出了从选择公共DNS到Windows系统下手动修改的完整操作指南,是一篇从现象认知到动手解决都很完整的实用科普。

本机暂存
IT 2016-02-16 20:47:25 / 累计浏览 2,223

也来谈谈沙箱逃逸技术

这篇讲的是作者基于过往经验,总结的一系列针对在线沙箱检测的逃逸技巧。核心观点是:沙箱因其环境特征,反而可能暴露出独特的“指纹”,而绕过检测的关键在于识别并利用这些差异。 文章首先从进程检测入手,指出直接明文比对进程名(如vmtoolsd.exe)会触发监控,而用加密后的密文进行比对则是一种有效规避。接着,作者详细列举了多种沙箱指纹特征:例如特定的Windows ProductId(如Anubis沙箱的76487-640-1457236-23837)、有规律的ComputerName(如某些沙箱环境以“xiaochen”开头)、固定的内存大小(Anubis 128M、火眼512M),以及固定的样本路径(如Comodo沙箱的C:\TEST\sample.exe),这些在不同厂商间存在明显差异。 此外,文章还探讨了如何在不联网的情况下泄露沙箱数据,比如将文件内容写入注册表,或更巧妙地将二进制数据编码到图片像素中,利用沙箱截图功能来传递信息。最后,作者总结道,逃逸的核心思路在于找到“沙箱有的而别的机器却没有的”特征,以及开发“你有的而别人没有的”绕过方法,为攻防双方提供了具体的实战视角。

本机暂存
IT 2016-02-11 23:22:08 / 累计浏览 3,482

Android安全–一次简单的脱壳Dump dex实践

这篇讲的是作者对一个加壳Android应用进行手动脱壳、还原出完整dex文件的完整实践。APK的dex文件只有1KB多,显然代码被加密保护了,真正的内容需要在运行时解密和动态加载。 作者的核心思路是“在运行时拦截解密后的代码”。他没有用一键脱壳工具,而是通过经典的调试器组合来亲手捕获。具体流程是:先部署IDA的android_server进行远程调试,通过adb和jdb完成进程附加,然后在关键的动态链接库`libdvm.so`中,找到了负责加载dex文件的`dvmDexFileOpenPartial`函数并下断点。这个函数在程序运行时会被调用,其参数就包含了内存中解密后的dex文件地址。 断点命中后,通过查看寄存器R0的值,就能在内存中看到完整的dex数据结构。最后,利用一个简单的IDC脚本,根据dex文件头部记录的文件大小信息,将这段内存区域完整地dump出来,就得到了一个可用的dex文件。 整个操作像一次精密的追踪:从静态分析发现异常,到动态调试定位关键函数,再到内存取证完成“抓捕”。它演示了一种不依赖特定脱壳工具、而是基于对Android运行时机制理解的通用思路。

本机暂存
IT 2016-02-11 22:59:35 / 累计浏览 1,803

Joomla反序列化漏洞的查漏补缺

当2015年Joomla曝出高危的反序列化漏洞时,安全社区迅速展开了分析。但这篇来自绿盟科技的技术复盘,却质疑了当时主流分析中的一个共识——“漏洞源于Joomla自定义了SESSION序列化机制”。作者通过源码分析指出,Joomla虽然注册了自定义的session处理函数,但其write方法并未改变PHP默认的序列化格式(键名+竖线+serialize值)。问题根源不在于此。 文章随后将矛头指向了更底层的问题:PHP本身的SESSION序列化处理器配置。它引用ryat的经典研究,说明当系统配置中写入SESSION(如php_serialize处理器)与读取SESSION(如php处理器)使用了不同的处理器时,会导致数据解析出错,从而触发反序列化对象注入。Joomla的漏洞正是利用了这种配置不一致。 这篇文章的价值在于“查漏补缺”,它引导读者跳出对应用层“奇技淫巧”的讨论,重新审视PHP底层机制本身可能埋下的坑。对于安全研究者和开发者而言,这是一个重要的提醒:漏洞的根源有时藏在更基础的依赖配置之中。

本机暂存
IT 2016-02-11 22:37:04 / 累计浏览 1,863

Burpsuite插件开发之RSA加解密

这篇讲的是如何为 Burpsuite 开发一个处理特定混合加密格式的插件,核心目标是解密数据包、注入测试 payload 后再加密回传,主要用于针对自定义加密通信的 APK 进行安全测试。 作者面对的数据包是典型的“RSA+DES”混合加密结构:一个 JSON 串中包含用 RSA 加密的 DES 密钥(encryptKey)和用该 DES 密钥加密的数据(data)。插件开发的核心,在于正确实现了 `InsertionPoint` 接口,以支持这种非标准格式。具体思路是,在 `getInsertionPoints` 方法中,插件会解析请求参数,识别出特定的加密参数(如参数名“c”),随后依次用配置的 RSA 私钥解密得到 DES 密钥,再用该 DES 密钥解密出明文 JSON 内容。最后,将解密后的明文 JSON 中的各个键值对分别构造为独立的注入点,从而让 Burpsuite 的扫描器和 Intruder 模块能够直接对原本不可见的加密数据内部进行模糊测试或漏洞探测。 这个插件的价值在于,它将一个需要手工逆向分析加解密流程才能进行安全测试的场景,自动化为了一个可复用、可配置的插件。实现的关键在于透彻理解目标应用的加解密协议,并利用 Burpsuite 的 `InsertionPoint` 扩展点,巧妙地将加密解密逻辑无缝嵌入到测试流程中。

本机暂存
IT 2016-02-11 14:59:15 / 累计浏览 1,881

IOS安全—阻止tweak注入hook api

这篇讲的是如何通过一种简单的编译设置来阻止iOS应用被Tweak注入和Hook。作者从网上看到一个通过添加特定Linker Flags来防止dylib注入的方法,并动手进行了验证。 他先用Theos编写测试Demo,在不添加任何flags的情况下,成功Hook了viewDidLoad方法并打印日志。随后,在Xcode的Other Linker Flags中加入`-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null`并重新编译。再次测试后,发现注入的dylib无法加载,Hook失败。通过MachOView可以看到,二进制文件中多出了一个名为`__RESTRICT/__restrict`的段。 文章深入分析了其原理:根据dyld源码,当主可执行文件包含此特定段时,系统会忽略`DYLD_INSERT_LIBRARIES`等环境变量,从而阻断了动态库注入的途径。这是一种轻量级的防护手段。然而,作者也展示了攻防的动态性——他使用010 Editor手动修改了这个段的名称,重新签名安装后,应用又能够被成功注入了。这清晰地揭示了该防护机制的核心依赖于段的特定名称,为安全研究提供了有价值的视角。

本机暂存
IT 2016-02-11 14:48:09 / 累计浏览 2,122

JAVA序列化和反序列化及漏洞补救

这篇从最近一起Joomla高危漏洞事件讲起,探讨了由此延伸出的Java序列化与反序列化的安全风险。文章首先用通俗的语言解释了什么是对象序列化——即将内存中的对象转换为可存储或传输的字节流,以及其反向过程。 重点在于,作者揭示了反序列化过程中的一个致命风险:当应用接受并反序列化外部输入时,如果缺乏检查,攻击者可构造恶意字节流,在服务器端触发任意代码执行。即便代码未直接使用危险类,只要运行环境中存在如Apache Commons Collections这样的依赖库,漏洞就可能被利用。 对此,文章给出的补救方案包括:升级Apache Commons Collections至3.2.2及以上版本,并通过配置默认关闭那些不安全的Transformer类序列化支持;同时,参考RedHat等厂商发布的针对具体产品(如JBoss)的补丁。文章还提到一个更根本的思路:通过限制JVM执行外部命令的能力,来降低未知漏洞的危害。 最后,作者点出这类问题的本质常在于反射的滥用,提醒开发者在跨网络传输序列化数据时,必须将安全性作为核心考量。

本机暂存
IT 2016-02-10 23:17:17 / 累计浏览 1,902

如何hook一个系统调用

这篇讲的是如何通过hook系统调用来定位一个隐蔽的bug。作者从一个具体问题出发:他们使用的某个库会断言socket的文件描述符必须大于0,但系统运行一段时间后这个断言会失败,意味着有人错误地关闭了标准输入(fd=0)。 面对这个难题,作者没有选择在每个close调用处手动添加日志(工作量大且易遗漏),而是利用了Linux下动态链接的一个精妙特性:`LD_PRELOAD`。文章详细展示了如何编写一个名为`my_close.c`的共享库,在其中重新定义`close`函数。这个函数会先检查传入的fd是否为0,如果是则直接让程序崩溃(coredump),否则通过`dlsym`获取并调用原始的`close`函数。 通过设置`LD_PRELOAD`环境变量指向这个自定义库,程序在运行时就会优先加载它,从而劫持所有的`close`调用。这样,一旦程序中有代码试图关闭标准输入,就能立刻被定位到。整个过程巧妙地利用了系统机制,将原本需要大范围排查的问题,转化为了一个精准的触发点,是调试动态库和大型程序时一个非常实用的技巧。

本机暂存
IT 2016-02-09 23:09:08 / 累计浏览 1,424

iOS安全—dumpdecrypted APP砸壳

这篇讲的是iOS应用逆向工程中一个关键步骤:如何给从App Store下载的加密应用“砸壳”。作者从dumpdecrypted这个工具出发,详细拆解了整个解密流程。 文章首先点明背景:商店下载的应用都带有加密壳,阻碍了class-dump或IDA这类静态分析工具的使用。核心方案分三步走:首先在本地下载并编译dumpdecrypted源码,生成一个dylib动态库;接着,通过Cycript等工具定位到目标应用的沙盒目录——因为只有沙盒内才有读写权限;最后,将生成的dylib上传至该目录并注入,启动应用即可完成解密。 其巧妙之处在于原理的简洁:通过DYLD_INSERT_LIBRARIES环境变量,强制让App加载这个自定义的dylib。动态库在初始化时便会执行dump操作,从而在运行时将解密后的二进制数据导出。整个过程清晰地展示了如何利用系统机制与沙盒环境来实现对加密应用的动态脱壳,为后续的深度分析扫清了障碍。

本机暂存
IT 2016-02-08 19:50:03 / 累计浏览 2,942

内存寻址原理

这篇讲的是内存寻址的底层原理,作者从网络安全分析中遇到的寻址难题切入,直接点明这是理解漏洞分析和系统行为的关键基础。 文章的核心内容,是对CPU几种工作模式——实模式、保护模式与虚拟8086模式——进行了清晰的对比。它解释了实模式下1MB的寻址限制、所有内存均可直接访问的特性,以及它在系统启动阶段的作用;而保护模式则支持高达4G(32位)的地址空间,并通过段页式机制实现了内存隔离与保护,这是现代操作系统安全运行的基石。 在概念梳理上,文章厘清了逻辑地址、线性地址与物理地址的转换链条。特别是通过一个具体的程序地址实例,逐步拆解了段选择符如何从描述符表中定位段描述符,最终与偏移量相加得到线性地址的过程,让抽象的理论变得可视化。 理解这些寻址细节,对于追踪内存越界、分析指针漏洞以及编写底层驱动都至关重要。文章将计算机体系结构的演进需求与具体的内存管理实现结合起来,为开发者搭建了一个从逻辑地址到物理内存的完整认知地图。

本机暂存
IT 2016-02-07 14:41:36 / 累计浏览 2,823

SSL多域名绑定证书的解决方案

这篇讲的是如何在一个服务器上,为多个不同的域名部署HTTPS服务。传统上,一张SSL证书通常绑定一个域名,但在实际运维中,我们常常遇到一个服务器需要同时承载多个域名的情况。文章从这个现实背景出发,梳理了几种主要的解决方案。 最直接的方式是采用虚拟主机技术,为每个域名分配独立的IP地址并绑定各自证书,但这对IP资源要求较高。对于同级子域名,可以申请通配符证书,但它只能匹配二级子域名,无法覆盖更深层级或主域名本身。更灵活的方案是使用支持“使用者可选名字”(SAN)扩展的证书,通过XCA等工具,就能将多个不同的域名都写入同一张证书中。 如果必须为每个域名单独签发证书,那么SNI(服务器名称指示)技术就成了关键。它允许服务器在SSL握手阶段就识别出客户端请求的域名,从而返回正确的证书,实现“单IP、多证书”。文章指出,这项技术已获得主流浏览器和Web服务器的支持,为灵活部署HTTPS提供了坚实的基础。

本机暂存
IT 2016-02-07 14:05:27 / 累计浏览 1,821

说说下载劫持那些事儿

这篇从双十一“苹果6变6袋苹果”的梗出发,生动剖析了安卓应用下载劫持的技术原理。作者将网络下载类比为“网购”,把DNS服务器和运营商网关形象地称为“黄页”和“总机”,清晰拆解了从发起请求到文件传输的完整链路。 文章重点揭示了劫持发生的两个关键节点:一是DNS服务器被篡改,导致域名解析到“骗子服务器”;二是运营商网关通过302跳转机制,将用户引导至合作的推广服务器。这两种方式都会让用户最终下载到并非预期的应用包,可能被捆绑其他软件。 最后也提到了一个初步的解决方案——手动修改DNS,但运营商网关层面的劫持则更难规避。全文通过生活化比喻和流程图,把原本隐蔽的网络劫持手段讲得通俗明白,结尾幽默地回到了“六袋苹果”的调侃,读来轻松又有收获。

本机暂存
IT 2016-02-06 11:31:19 / 累计浏览 2,501

学习手册:浅析DDoS的攻击及防御

这篇讲的是DDoS攻击的完整图景——从基础概念到实战工具。作者从“拒绝服务”和“分布式”这两个核心点出发,解释了攻击如何演变成依靠“僵尸网络”进行的协同作战。文章梳理了DDoS的发展史:早期只是黑客的炫技游戏,后来被宗教和商业组织用于勒索与报复,最终甚至成为国家级网络战争的武器,其中中国和美国是受灾最严重的地区。 在技术层面,文章将攻击方式归纳为四类:耗尽网络带宽的流量洪水、针对TCP连接表的SYN洪水、专门攻击DNS和Web服务的应用层攻击,以及混合多种手段的综合性攻击。特别提到随着僵尸网络小型化,慢速应用层攻击正成为新的趋势。文章还介绍了几款知名的开源工具,比如曾被广泛使用的低轨道离子炮(LOIC)和专门产生HTTP流量的HULK,让读者直观了解攻击的实现手段。 整体而言,这篇文章不仅解释了DDoS“是什么”,更通过攻击工具和态势分析展现了“如何发生”,对于理解当前网络空间中的流量型威胁提供了清晰的框架。

本机暂存
IT 2016-02-06 11:19:22 / 累计浏览 1,562

文档安全加密系统的实现方式

这篇讲的是文档安全加密系统如何实现高效且透明的安全防护。文章从加密技术的基础出发,指出虽然DES、RSA等算法是核心,但真正决定系统效能的,是加密操作在系统中的实现方式。它重点对比了静态加密与动态加密:前者需要用户手动解密才能使用文件,后者则在后台实时处理,合法用户完全无感,文件访问体验与未加密时无异。 实现真正的动态加密极具挑战,因为它需要在操作系统内核层进行干预。文章清晰地剖析了Windows文件操作流程的四个层次,指出只有在内核层的文件过滤驱动程序中,才能拦截所有文件操作请求,从而实现实时加解密。位于应用层的方案本质上只是“伪动态”,无法做到真正的透明。 最后,文章以亿赛通SmartSec系统为例,展示了动态加密的落地架构:通过内核层的文件过滤驱动实现核心加解密,同时结合应用层进行访问控制和行为审计,两者配合既提升了安全性,也优化了系统性能。这种分层协同的设计思路,为构建企业级文档安全方案提供了清晰参考。

本机暂存