wsprintf居然对缓冲区有长度限制

2012年12月7日 1 条评论

需要在程序中动态生成一个HTML文件,于是尝试用wsprintfA来进行格式化操作,可是结果却很奇怪,仅仅只能写出来一部分,后来仔细一看,居然是1024个字节,查了一下才知道,wsprintf居然对缓冲区有长度限制,可以改用sprintf函数代替。
另一个奇葩点:好久不用MSDN,最近打开MSDN,老提示“帮助正在更新,可能需要几分钟……”,这个进度条一直在闪动,就是没完没了,还卡CPU。试了N次都是这样,网上有的说需要改注册表,可怎么改都不管用啊!尼玛后来想了好久,发现是因为我把控制面板“区域[……]

继续阅读

[译]各种IE版本下的堆喷射技术

2012年11月30日 3 条评论

最近我在学习为一些古老的漏洞编写exploit,以使得它们能够在Windows 7 + IE9下正常运行。之前在利用漏洞的时候我的PoC都一直是在Windows XP + IE6下测试的,仅仅是为了确定它们确实可以正常工作,而不用担心在以后的版本中的问题。在这篇文章中我仅仅是分享一些基本信息,这对第一次编写/理解exploit的人来说应该非常有帮助,同时尽可能使得这些信息简单易懂并且不考虑性能和精确性。在之前的exploit中,当在IE6下测试的时候我使用了如下的Heap Spray(堆喷射)代[……]

继续阅读

ShellCode常用的GetPC方法

2012年11月24日 1 条评论

GetPC,也即Get Program Counter,取得程序计数器的值,在x86下就是GetEIP了,其作用是在进程的内存空间中得到当前的EIP的值,通常用于需要对代码自身进行操作的场合下,比如自解码和自修改代码(更一般的来说常见于病毒、溢出攻击代码等,也称之为代码重定位技术)。因为在x86下无法直接操作EIP寄存器,所以需要一些特殊的方法来获取EIP寄存器的值。
1. CALL GetPC
最简单的GetPC方法是使用call指令,之前的文章有提到过(http://www.programl[……]

继续阅读

一个字节毁掉一段ShellCode

2012年11月20日 6 条评论

暂时告别了一段忙碌的生活,博客还是得打理一下……今天在测试一个FTP服务器程序时,发现仅仅一位一个特殊的字节而破坏了整段ShellCode,调了好久才找到原因,就想写篇博客记录下,顺便感慨下调试的不易。

场景:已经写好了一个Exploit针对此FTP服务器程序并成功绑定一个TCP Shell,现在需要替换为download_exec(下载并执行)ShellCode,于是使用Metasploit生成了一段download_exec的ShellCode,URL为http://localhost/test.exe,可是测试的时候被测程序总是悄然退出,用Ollydbg附加、在0x7FFA4512(jmp esp 是我用来做跳转的)处下硬件执行短点,再次出发溢出条件,发现ShellCode全然面目全非了:[……]

Win32 bind port shellcode(4444 tcp) 399 bytes

2012年10月27日 5 条评论

Win32 bind port shellcode(4444 tcp) 399 bytes,验证可用,执行后通过telnet到目标机器4444端口即可。以下代码请谨慎执行,测试完注意关闭端口!!!

另外,对于一些需要网络发送数据的场景,可能要求数据中不得函数NULL字符(0×00),下面的代码是NULL Free的,其中的代码重定位(GetPC)使用了浮点指令集:

00C67000 D9 EE fldz
00C67002 D9 74 24 F4 fnstenv [esp-0Ch]
00C67006 5B pop ebx
测试漏洞利用的时候,总是不成功,调试发现fldz/fnstenv指令会破坏栈顶数据,所以建议在ShellCode前填充适当的NOP指令。[……]

基于WinPcap开发嗅探器程序

2012年10月23日 163 条评论

这是我上课的一个实验,基于WinPcap开发一个简单的嗅探器,代码写的很一般,Hard Code Everywhere! 当然有兴趣的也可以下下来看一下。下面简单介绍下开发环境的搭建以及中间需要用到的一些编程要点。

一、实验环境构建
本次实验环境为Visual Studio 2010专业版 + WinPcap 4.1.2 + WinPcap 4.1.2 Developer’s Pack;
安装好WinPcap后,解压开发包文件WpdPack_4_1_2.zip,并把下面的Include文件夹以及Lib文件夹复制到工程目录下,配置工程设置,为“附加包含目录”添加Include文件夹相对路径,为“附加库目录”添加Lib文件夹相对路径,同时给“附加依赖项”添加“Packet.lib”、“wpcap.lib”选项,给“预处理器定义”添加“HAVE_REMOTE”、“WPCAP”选项,在stdafx.h头文件中增加对pcap.h头文件的包含,这样整个开发环境就配置好了,而且源代码可以在其他电脑上编译,不必再次安装WpdPack开发包以及设置头文件和库文件的路径。[……]

Bloom Filter算法简介

2012年10月13日 6 条评论

Bloom Filter的中文翻译叫做布隆过滤器,是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

在正式介绍Bloom Filter算法之前,先来看看什么时候需要用到Bloom Filter算法。
1. HTTP缓存服务器、Web爬虫等
主要工作是判断一条URL是否在现有的URL集合之中(可以认为这里的数据量级上亿)。
对于HTTP缓存服务器,当本地局域网中的PC发起一条HTTP请求时,缓存服务器会先查看一下这个URL是否已经存在于缓存之中,如果存在的话就没有必要去原始的服务器拉取数据了(为了简单起见,我们假设数据没有发生变化),这样既能节省流量,还能加快访问速度,以提高用户体验。
对于Web爬虫,要判断当前正在处理的网页是否已经处理过了,同样需要当前URL是否存在于已经处理过的URL列表之中。[……]

诡异的百度实时热点以及搜索引擎劫持

2012年9月23日 14 条评论

去年的某个时候,百度推出了个性化的首页,当百度注册用户登录时可以选择一个个性化的百度页面,个人最关注的当属“实时热点”这一个小模块,按我个人的理解,这个模块罗列出当前热门的搜索关键字,类似从百度实时热点排行榜抽取数据。

今天在“实时热点”发现了一个叫做“利来娱乐”的关键词,抱着好奇的心态我点开了其中一个链接,结果居然跳转到了一个博彩网站,可网站明明写着“三秦都市报”呀,第一感觉就是“三秦都市报”被黑了,同时进行了搜索引擎劫持。所谓搜索引擎劫持,通俗地讲就是在页面代码中断流量是否来自搜索引擎,如果是则跳转到第三方网址,否则打开正常页面。[……]

[译]追踪PlugX Rat作者

2012年9月21日 12 条评论

若干天前,趋势科技发布了一些关于PlugX的信息(RAT的一种新版本)。最近几个月以来我们一直在追踪一群人,他们使用PlugX RAT来攻击不同的目标,尤其是日本、台湾、韩国以及西藏的组织和个人。

本文将着重讲解我们从攻击样本中提取出来的情报信息以及我们如何利用这些信息来追踪RAT的作者,该作者很有可能也参与了这些攻击事件。

在过去的几个月中我们看到了一些使用微软Office溢出攻击(CVE-2012-0158)针对西藏目标发起的钓鱼活动,其中用到的Office恶意文档使用了这样的技巧:恶意样本下载下来的是一个NVIDIA正常文件(NvSmart.exe)、一个DLL(NvSmartMax.dll)以及一个二进制文件(boot.ldr),赛门铁克公司有解释过这种技术。[……]

Conficker/Kido ShellCode

2012年9月14日 8 条评论

考虑到这个学期有门课有个缓冲区溢出的大实验,所以还是决定认认真真的翻一翻《0Day安全 软件漏洞分析技术》上面的相关章节,快速阅读前三章,基本是讲解基本栈溢出的利用以及ShellCode的编写,因为以前也简单的玩过,所以也没什么问题。结合前段时间从Conficker.B中提取出来的ShellCode,简单做点笔记。
Conficker.B内的ShellCode的基本特点是:
1. 代码混淆:开头的两条指令共用了一个字节,干扰反汇编指令
2. 代码重定位:call/pop获取当前某个字节的虚拟地址[……]

继续阅读