存档

‘Win安全’ 分类的存档

时尚时尚最时尚的缓冲区溢出目标

2015年3月4日 没有评论

原文:《Modern Overflow Targets》 By Eric Wimberley,Nathan Harrison

翻译:taskiller

在当今的操作系统中,内存缺陷漏洞已经越来越难挖掘了,栈保护措施已经使原来的缓冲区溢出利用方法(将NOP块和shellcode写入到缓冲区中,并用缓冲区内的地址覆盖EIP所指向的地址)失效了。如果没有某种程度的信息泄露,在地址空间分布随机化(ASLR)和栈cookies的双重保护下,用传统方法实际上已经很难对远程系统执行有效的溢出攻击了。

不过,现在仍存在可被利用的栈输入/输出漏洞。本文描述了一些常用缓冲区溢出技术,这些技术不会触发栈的__stack_chk_fail保护,或至少到目前为止还有效的技术。本文我们不再利用新技术通过修改EIP来修改程序的执行流程,而是将精力集中到一系列新的目标中。同时,本文也会讨论GCC 4.6及之前版本中未出现在任何文档中的函数安全模式(function safety model)。

GCC ProPolice记录的异常

根据函数安全模型的ProPolice文档,以下情况不会被保护:

  • 无法被重新排序的结构体,以及函数中的指针是不安全的。

  • 将指针变量作为参数时是不安全的。

  • 动态分配字符串空间是不安全的。

  • 调用trampoline代码的函数是不安全的[……]

阅读全文

CTF领域指南

2015年2月15日 没有评论

原文:https://trailofbits.github.io/ctf/

翻译:做个好人

译者声明:本文翻译自美国trailofbits团队发布在Github上的《CTF Field Guide》手册,我们已与对方联系获得翻译授权,由于手册内容尚在更新过程中,故有部分缺失。如有翻译不当之处,请与我们联系更正:@IDF实验室。

“Knowing is not enough; we must apply. Willing is not enough; we must do.” (仅仅知道还不够,我们必须付诸实践。仅有意愿还不够,我们必须付诸行动。)

—— Johann Wolfgang von Goethe

欢迎!

很高兴你能来到这里,我们需要更多的像你这样的人。

如果你想拥有一种能够自我防卫的生活,那就必须像攻击者那样思考。

所以,学学如何在夺旗比赛(CTF)中赢得比赛吧,这种比赛将专业的计算机安全活动规则进行了浓缩,且具有可客观评判的挑战题。CTF比赛趋向关注的主要领域是漏洞挖掘、漏洞利用程序构建、工具箱构建和可实施的谍报技术(tradecraft)。

无论你想赢得CTF比赛,还是想成为一名计算机安全专家,都至少需要擅长这些方面中的其中之一,理想情况下需要擅长所有这些领域。

这就是我们编写此手册的目的。

在这些章节中,你[……]

阅读全文

瞅一瞅Andromeda僵尸网络

2014年9月1日 1 条评论

原文:http://blog.fortinet.com/post/A-Good-Look-at-the-Andromeda-Botnet

翻译:徐文博

Andromeda是一个模块化的bot。最原始的bot仅包含一个加载器,在其运行期间会从C&C服务器上下载相关模块和更新,它同时也拥有反虚拟机和反调试的功能。它会注入到可信进程中来隐藏自己,然后删除原始的bots。该bot会潜伏很长时间(从几天到几个月不等)才与C&C服务器进行通信。所以,很难获取到感染主机和C&C服务器间的网络流量信息。

最新的官方编译版本是2.06,该版本的bot所发的包中有新增的内容。此外,它也能够分发其他多样的僵尸变种,下载相关模块和更新。

Hex1

图1:GeoIP地图显示的Andromeda的分布

一、打包器

打包器中有大量的冗余代码,所以可以很好的隐藏真实代码。它会调用GetModuleHandlerA API去获取bot的基址,检查MZ标记和PE特征码,然后确认是否有6个段。如果是,则会从第4个段中加载数据,进行解密,然后会校验解密的MZ标记、PE特征码,调用CreateProcessW API来重新加载执行原始的bot,但会把dwCreationFlags值设为CREATE_SUSPENDED。打包器会用解密的第4个段中的代码,来注入到这第二个进程中。稍后,打包器会采用同样的方法,从第5个段中加载另一个PE。

这个强大的打包器能[……]

阅读全文

验证Windows内核漏洞的框架

2014年6月6日 没有评论

原文:http://h30499.www3.hp.com/t5/HP-Security-Research-Blog/Verifying-Windows-Kernel-Vulnerabilities/ba-p/6252649#.UyZi2T-Sy0f

翻译:徐文博

Pwn2Own大赛之后,HP的0day防御计划(Zero Day Initiative, ZDI) 并不要求研究者给我们提供相关攻击利用。ZDI的分析师对每个提交的案例进行评估,可能也会挑选一些进行全面的攻击利用。

在内核级的漏洞(操作系统本身或者硬件驱动)中,有一项就是我们常说的’任意写(write-what-where)’[1]。 为便于分析, 很有必要写个基本的框架,对给定的’任意写(write-what-where)’漏洞进行封装,并验证其对操作系统的利用。

要把任意的写操作转换为攻击利用,需要三个基本的步骤, 我们将来逐一介绍。

禁用Windows访问权限检查的负载

Windows访问控制系统的核心是nt!SeAccessCheck函数。它决定着我们是否有权访问操作系统中的对象(文件,进程等等)。

我们将采用的手法,于1992年由Greg Hoglund[2]首次提及, 2006年由John Heasman改进使用[3]。 这里将采用后者作为我们的起点。[……]

阅读全文

用C语言进一步优化Windows Shellcode

2014年2月27日 没有评论

原文:http://www.exploit-monday.com/2013/08/writing-optimized-windows-shellcode-in-c.html

翻译:徐文博

引言

我得首先承认,编写shellcode真是让人郁闷极了。虽然可以利用些小技巧来减小payload的大小,但编写shellcode仍然会错误百出,难以维护。例如,我发现跟踪x86中寄存器的分配,确保x86_64栈的对齐真的是件蛋疼的事。最终我还是腻了,但回头想想:为啥就不能用C写shellcode payload,让编译器和链接器来接管处理剩下的活呢?这样的话,只需写一次payload,就能运用到任何的体系结构上————像x86、x86_64以及ARM这些。同时,也可以获得如下的好处:

1. 运用静态分析工具分析payload

2. 进行单元测试

3. 利用编译器、链接器来优化payload

4. 编译器在速度、大小方面的优化比你在行

5. 利用Visual Studio来写payload,智能化万岁!

考虑到已经写了许多Windows下的shellcode,我决定挑战一下仅用微软工具来生成位置无关的shellcode。可最基本的问题是,微软的C编译器cl.exe无法生成位置无关的代码(除了面向Itanium的Visual C+[……]

阅读全文

线程模型对比: Windows VS POSIX

2014年2月12日 没有评论

原文:http://software.intel.com/en-us/blogs/2006/10/19/why-windows-threads-are-better-than-posix-threads

翻译:徐文博

曾使用过POSIX线程(Pthreads)和Windows线程API, 我认为Windows线程具有更好的编程模型。虽然它们都能创建、销毁线程,并协调线程间的交互,但windows线程API更易使用并且设计优雅。这是多线程开发、维护者的思考视角。下面让我来举例说明。

简单的数据类型

在Pthreads中,每个对象均有其自己的数据类型(pthread_t, pthread_mutex_t, pthread_cond_t 等等)而在Windows线程中,仅有一种类型:HANDLE。这就意味着在Pthreads中,需要使用不同的函数来处理每种对象类型。阅读理解他人所写的Pthreads代码可能会比较简单,但这要求编程人员必须知道不同函数的参数个数、顺序以及类型。相反的,在Windows线程中,因为不同对象使用了同种数据类型,它们就有了统一的Create*函数和各自针对性的Release*函数。

或许使用单对象数据类型的最大好处就是仅需WaitForSingleObject函数就能阻塞那些等待某对象的线程。所以,不管代码是在等待线程、互斥量、信号量,还是事件,我们只需知道一组参数即可。与此相关联的函数WaitForMultipleObjects,同[……]

阅读全文

渗透测试中的冷却启动攻击和其他取证技术

2014年1月11日 没有评论

原文:http://www.ethicalhacker.net/features/root/using-cold-boot-attacks-forensic-techniques-penetration-tests?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+eh-net+%28The+Ethical+Hacker+Network+-+Online+Magazine%29

翻译:成明遥

frozen_ram

这是一个星期四的晚上,快乐时光即将开始。你会尽快走出办公室。你整天都忙于准备一份报告,第二天早上还需继续,因此你将电脑锁屏。这足够安全,是吗?因为你使用了高强度密码,并全盘加密,Ophcrack或者可引导的linux发行版例如kali不起作用。你自认为安全了,其实你错了。为了得到重要材料,攻击者越来越无所不用其极,这包括使用取证领域的最新技术。

计算机中存在一个单独的区块:活动内存,任何一个攻击者都愿意把手伸到这个存储有敏感信息完全未加密的区块。系统为了方便调用,在内存中存储了多种有价值信息;全盘加密机制也必须在内存的某个地方存储密钥。同样,Wi-fi密钥也是如此存储的。Windows在内存中存有注册表键值,系统和SAM hive。许多剪贴板内容和应用程序密码也在存储于内存中。即问题在于,内存存储了系统在某时刻需要的大量有价值信息。攻击者要获得它,需要使用一些同样的取证技术。本文有助于向渗透测试工具包中增加这些技术。

[……]

阅读全文