Winsock LSP“浏览器劫持”

先说说什么是Winsock LSP“浏览器劫持”.Winsock LSP全称Windows Socket Layered Service Provider(分层服务提供商),它是Windows底层网络Socker通信需要经过的大门。一些流氓软件可以把自已加进去,就可以截取、访问、修改网络的数据包,可以随意添加广告,还能获取你的浏览习惯.这里加进的是木马,后果可想而知。而且因为LSP工作在底层,所以无论你用什么浏览器,都逃不了经过它。而LSP中的dll文件被删除后,就会出现无法上网的情况。

LSP服务在注册表中的位置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock\Parameters\NameSpace_Catalog5\Catalog_Entries,默认系统已有LSP,分别负责TCP/IP组件(mswsock.dll)和NTDS组件(winrnr.dll)的正常工作,它们的项分别为000000000001和000000000002,这两个项表示优先权,如果恶意程序想要劫持,只要将自身的项改为000000000001,将系统项依次推后即可,这样就可以优先处理恶意程序了。

解决办法:

方法1.用360的LSP修复功能来修复。如果提示你的“LSP没有异常,不用修复”,但是你还是上不了网,执行ping命令,在ip地址处会出现(?),无法ping通外网。那么你就用360的“恢复Winsock LSP到初始状态”的功能。

方法2.就是大家熟悉的,也就是常用的方法,用LSPFix这个工具在断开网络下修复

方法3.Windows XP Service Pack 2 中有两个新增的 Netsh 命令。

” netsh winsock reset catalog   该命令将 Winsock 目录重置为默认配置。如果安装了可导致网络连接丢失的不正确的 LSP,该命令会很有用。尽管使用该命令可以还原网络连接,但应该慎重使用,因为以前安装的 LSP 都将需要重新安装。

” netsh winsock show catalog   该命令会显示安装在计算机上的 Winsock LSP 列表。

所以呢,我们在没有任何辅助工具的情况下可以用netsh winsock reset命令来重置Winsock

Winnet类的LSP代理模块

Winnet类代理模块主要包括Winnet.exe,Winnet.dll以及LSP.dll三部分,其中Winnet.exe是代理服务器的主进程,主要负责中转网络数据,Winnet.dll主要是负责安装LSP服务以及初始化进程间通行的共享内存,常驻在Winnet.exe进程中,LSP.dll是网络劫持模块,被目标进程加载,劫持网络到Winnet.exe进程中。下面详细介绍

安装LSP服务

恶意程序将需要劫持的进程的Pid通过命令行的方式传递给Winnet.exe,Winnet.exe加载Winnet.dll,并调用其InitInstallLsp函数进行LSP服务的安装。

14924904771131.png!small

启动端口监听

随机监听本地的一个端口,并创建一块进程间共享内存,将监听端口存放在其中。

14924904632499.png!small

存放代理服务器信息

解析代理服务器信息,并将信息以及需要劫持的进程信息存放到共享内存中。

14924904492435.png!small

处理劫持的网络数据

从本地监听端口获得满足条件的网络连接,为每个连接开启一个线程处理劫持的网络数据。

14924904374108.png!small

劫持目标网络数据

LSP.dll根据共享内存中的信息,判断宿主进程是否为目标进程或则目标进程的子进程,如果是就进行网络劫持,将网络连接重定向到Winnet.exe。

14924904246905.png!small

1492490409362.png!small

部分转自http://www.freebuf.com/articles/terminal/132222.html

 

 

 

 

木马可能hook的函数

kernel32.dll

CreateMutexW, CreateDirectoryW, CreateFileW, CreateProcessW, GetVolumeInformationW, GetDriveTypeW, GetCommandLineW, GetCommandLineA, GetStartupInfoA, MoveFileExW, CreateMutexA

user32.dll

SetWindowTextW, TrackPopupMenuEx, DrawTextExW, InvalidateRect, InvalidateRgn, RedrawWindow, SetWindowRgn, UpdateWindow, SetFocus, SetActiveWindow, SetForegroundWindow, MoveWindow, DialogBoxParamW, LoadIconW, SetWindowLongW, FindWindowW, SystemParametersInfoW, RegisterClassExW, CreateWindowExW, CreateDialogParamW, SetWindowPos, ShowWindow, GetLayeredWindowAttributes, SetLayeredWindowAttributes, IsWindowVisible, GetWindowRect, MessageBoxA, MessageBoxW

advapi32.dll

RegCreateKeyW, RegCreateKeyExW, RegOpenKeyExW, CreateProcessAsUserW, CreateProcessWithLogonW, CreateProcessWithTokenW, Shell_NotifyIconW, ShellExecuteW

iphlpapi.dll

GetAdaptersInfo

宏病毒分析教程

作者写作不容易,点波微博关注可好

oledump.py -v xls

查看一下恶意文档信息

images

 

 

 

 

 

 

 

可以发现9,10,11模块都包含有宏,暂时不知道m,M有什么区别

查看了一下宏脚本 模块11

images

 

 

 

 

 

 

 

 

查看一下插入的东西,二进制格式

images

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

查看是否有内嵌PE程序

images

 

 

 

 

 

 

 

EFL(标志寄存器)

这里查看标志寄存器各标志位的值有两种查看方法:

第一: 把EFL的值转成二进制,通过二进制位来查看个标志位的值。

第二: 如果你的寄存器窗口里面没有显示标志的话,可以在寄存器窗口里面点鼠标右键,选择“标志”就会显示个标志位的值了,形如:

OV = ? UP = ? EI = ? PL = ? ZR = ? AC = ? PE = ? CY = ?

这里有个对照表:

 

asm

继续阅读“EFL(标志寄存器)”

恶意软件取证

恶 意软件(Malware),是一种未经使用者同意就进入并危害计算机系统的软件,包括病毒、木马、蠕虫、后门等类型。恶意软件取证,就是通过行为分析和特 征描述,确定其产生的危害后果与其功能的因果关系,同时还为检测和消除提供技术指导。因恶意软件的种类和数量巨大,不断利用新技术进行演化和变形,加上检 测和清除工具的滞后,所以成为电子数据取证的一个重要内容,调查人员对安全事件中的疑似恶意软件进行取证分析,就显得至关重要。
恶意软件取证分析工作有几方面:第一,确定恶意软件的性质和目的,即恶意软件是否属于信息窃取、HTTP僵尸、垃圾邮件机器人、Rootkit、后 门、键盘记录器、远程访问工具(RAT)等。第二,描述恶意软件与操作系统的交互作用,如对文件系统、注册表、网络活动、权限控制及用户使用体验的影响。 第三,建立恶意软件的危害方式和危害结果的联系,如1个木马程序在何时、从何处、以何种方式进入用户计算机,修改和影响了哪些文件和功能,窃取了哪些用户 机密文件和数据等。最后,如果需要,可以建立和检测可识别的模式来预防和修复未来的感染,包括特征字符串、行为序列,利用的系统和程序漏洞,网络端口活动 等。
一、恶意软件取证的类型
根据取证分析时所选取的恶意软件的运行状态不同,恶意软件取证可分为静态取证、动态取证和内存取证。这些取证分析方法,分别有不同的使用场合和功能特点。
(一)静态分析方法
静态分析,是指在不需要实际运行情况下,分析恶意软件功能和特性的方法,主要步骤有:
1.确定文件类型。文件的扩展名,不能用来作为唯一的确定其类型的标志。恶意软件编写者,可以把可执行文件(例如.exe文件)的扩展名去掉,或者改 变成任何其他扩展名,例如.jpg,使用户误认为是图片文件。确定文件类型,还可以帮助了解恶意软件针对的环境类型,若文件类型是一种原生的 Windows可执行文件格式,即PE(可移植可执行文件)格式,那么,就可以断定该恶意软件针对的是Windows系统。简单的文本文件,如脚本和 html文件,可直接查看文件内容来确定其类型,其他文件可利用文件头的分析来确定。
2.确定哈希值。MD5和SHA1哈希值,可作为恶意软件的唯一标识符,或称为文件签名。恶意软件在执行后,会复制自身到别的地方或删除恶意软件某一 部分,哈希值可帮助确定最新复制或删除的样品与原始样品是否为同一个,然后可决定分析是对单个还是多个样品。哈希值也可提交到在线杀毒扫描服务,如 VirusTotal,以确定它是否先前已经被一些反病毒厂商检测过。哈希值还可用于搜索互联网上特定的恶意软件样本,用来计算特定的恶意软件被谁下载、 下载了多少次。Linux系统的md5sum和Windows系统的md5deep、Hashcalc、HashMyFiles等,可用来确定恶意软件的 哈希值。
3.字符串搜索。字符串是嵌入文件中纯文本的ASCII或UNICODE字符。虽然字符串搜索不能提供文件的功能和能力的全貌,但可提供与其关联的功 能和命令的线索,如文件名、URL、域名、IP地址、注册表键值等信息。Linux的字符串实用程序和Windows的BinText、 UltraEdit等,都可用来在一个可执行文件中找到嵌入的字符串。
4.加壳、封包和加密检测。为了逃避防病毒软件和入侵检测系统,恶意软件制作者经常使用加壳、封包和加密的方法来混淆文件内容。加壳使恶意代码难以定 位,封包使恶意代码指令与其他普通指令混杂在一起,加密使关键数据和代码改变了形态,而且三者的合用使解包和逆向工程相当棘手。但是,一旦脱壳方法、封包 类型或加密方法能确定,就有希望手工找到安装包或资源,那么解包或解密就有希望。ProcDump、PEID或RDG安装包探测器,可用来在可执行文件中 检测封包。
5.提交给在线杀毒扫描服务。这将帮助确定可疑文件中的恶意代码签名。通过访问相应的防毒软件厂商网站,或在搜索引擎中搜索签名,可得到可疑文件的更 多信息。这种信息可能有助于进一步调查,并减少分析时间。很多安全公司都提供这种在线服务,如国外的 VirusTotal(http://www.virustotal.com)、Jott(http://virusscan.jotti.org)和国 内的“火眼”(https://fireeye.ijinshan.com/)、Virscan(http://www.virscan.org/)等, 都是流行的基于恶意软件扫描服务的网站。
6.检查文件依赖性。Windows可执行文件会加载多个DLL(动态链接库)文件,并调用API函数来执行某些动作,如解析域名、添加注册表值、建 立HTTP连接等。通过确定DLL的类型和可执行文件导入的API调用列表,可大致判断恶意软件的功能。Dependency Walker和PEview是可用于检查文件相关性的工具。
7.文件反汇编。也称为逆向工程(Reverse engineering),是指利用特殊的技术将可执行文件还原为容易理解的汇编程序。通过反汇编,调查人员能够探究恶意软件执行的指令,帮助追踪那些通 常不会在动态分析中确定的路径。IDA Pro是一个流行的静态反汇编工具,支持多种文件格式。
(二)动态分析方法
动态分析,是类似“黑箱子(Black Box)”的分析方法,是指在受控环境中执行恶意软件样本(例如在其运行时候监测,或者在其执行后检查系统),以分析其本地感染及网络传播行为。通常情况 下样本会释放出病毒体,并复制到系统目录下,通过添加到注册表的系统启动项、系统服务启动项、注入系统进程中等方式激活。动态分析需要使用文件监视工具、 注册表监视工具等来确定其行为。有时由于文件封包和加密,静态分析得不到太多的信息,那么,动态分析就是识别恶意软件功能的最佳途径。以下是动态分析涉及 到的步骤:
1.监控进程活动。运行恶意程序并检查其产生进程的属性,以及被感染系统上运行的其他进程。这种技术可以揭示进程信息,如进程名、进程ID、可执行程 序的系统路径,以及可疑程序所加载的模块。可利用的工具包括进程资源管理器(Process Explorer)、Capturebat和Procmon等。
2.监控文件系统活动。在恶意软件运行的时候,实时检查文件系统的活动,以揭示有关恶意软件执行时打开文件、新建文件和删除文件的信息。Filemon和Capurebat是可用于检查文件系统活动的强大监控工具。
3.监视注册表活动。Windows注册表,用来存储操作系统和程序的配置信息。恶意软件经常用注册表来获得持久性或存储配置数据。监视注册表的变化 可带来一些信息,如哪个进程正在访问主机系统的注册表键及正在读取或写入注册表中的数据。这种技术还可揭示计算机启动时自动运行的恶意软件组件。 Regshot、RegMon、Procmon和Capturebat是用注册表来跟踪恶意软件交互的工具。快照工具RegSnap进行注册表和指定目录 下的文件进行前后对比,快速找出病毒新建和修改的注册表,以及本地文件的释放行为。
4.监控网络活动。运行恶意软件样本的过程中,还可监测系统的网络流量,如后门与木马在成功感染后,会把搜集到的用户信息发送出去,或是主动连接远程 主机,下载病毒主程序。通过网络监视工具发现病毒的网络行为,有助于确定该恶意软件样本的网络能力,也能确定一些基于网络的指标,这些指标可以用来在诸如 入侵检测系统的安全设备里创建签名。常见的网络嗅探、抓包和分析工具,有sniffer、tcpdump、IRIS和Wireshark等。 Tcpdump可捕捉实时网络流量到命令控制台,而Wireshark是基于GUI的数据包捕获工具,提供强大的过滤选项。TCPView是网络端口查看 工具。此外,国内的综合性工具PowerTool的功能也非常强大。
(三)内存分析方法
内存分析(也称为内存取证),是分析从正在运行的计算机得来的内存镜像。内存分析可以从1台计算机的内存中提取痕迹,如运行进程、网络连接、加载模块等,也可进行解包、rootkit检测和逆向工程。以下是涉及到内存取证的步骤:
1.内存获取。指转储目标机器的内存。在物理机器上,Win32dd/Win64dd、Memoryze、DumpIt和FastDump等工具可用 于获取内存镜像。在虚拟机(VMware工作站)上,获取内存镜像容易,可通过暂停虚拟机,抓获“.vmem”文件来完成。
2.内存分析。获取内存镜像后,下一步就是分析抓取的内存转储以获得相关的痕迹。Volatility是流行的用来分析内存镜像的开源工具。它用Python语言编写,可在多种常见操作系统上安装。
二、建立恶意软件取证分析环境
(一)分析环境的要求和特点
在执行恶意软件分析之前,需要建立一个安全的分析环境,并确保这些系统没有接入任何实时生产系统或互联网。建立恶意软件分析环境时,有几种方案选择。 如果身边有方便的硬件,可以使用物理机器来建立,最好是在一个全新安装的操作系统上开始分析。否则,也可以建立虚拟的操作系统。使用虚拟化环境的优点在 于:能够获得多个快照;恢复到原始状态很容易;无需额外的硬件;操作系统之间的切换速度更快。
但是,使用虚拟化环境也有一些缺点,一些恶意软件检测到将在虚拟环境中运行时,就拒绝运行或者改变其特性。在这种情况下,可能需要在物理机上分析恶意软件或进行逆向工程,而且要使用如OllyDbg或Immunity这样的调试器,来修补检查虚拟化环境的代码。
(二)取证分析环境实例
由运行Backtrack(现在改名为Kali,http://www.kali.org)的Linux系统,安装有Volatility和 Wireshark的物理机器组成。本机的IP地址设置为192.168.1.2,运行免费的INetSim,这是一个用于模拟常见互联网服务的基于 Linux的软件套件。此工具可伪造一些服务,如DNS、HTTP、HTTPS、FTP和IRCSMTP等,通过模拟网络服务来分析恶意软件样本的网络行 为。INetsim被配置为在IP地址192.168.1.2上,模拟网络接口上的服务。
Linux机器以host only模式运行VMware Workstation虚拟机软件,并在虚拟机中安装Windows XP SP3,并且Windows机器安装了静态分析工具和Capturebat来监视文件系统、注册表和网络活动。Windows机器的IP地址设置为 192.168.1.100,默认网关为192.168.1.2,这个默认网关也是Linux机器的IP地址,这是为了确保所有的流量通过Linux机器 进行路由。在Linux机器里将监测网络流量(使用Wireshark),还使用INetSim模拟互联网服务。Windows机器是分析机,可在它里面 执行恶意软件样本。
三、分析恶意软件样本
在建立了分析恶意软件样本的安全环境后,就开始分析一个样本文件edd94.exe。首先从静态分析技术开始,然后进行动态分析,最后进行内存分析。
(一)静态分析
1.确定文件类型。文件签名显示它是一个PE32可执行文件。文件签名是位于文件头的独特的若干字节串。在Windows系统上的可执行文件,具有“MZ”或16进制字符4D 5A这样的文件签名,它是文件的前2个字节。
2.计算哈希值。md5sum工具显示了样本的md5sum(edd94.exe)。MD5算法由该文件的内容生成一个128位的值,通常表示成16进制的32个字符。
3.确定安装包。PEID可用来检测PE文件中最常见的一些封包方式、加密工具和编译器,它目前可检测出PE文件中超过600种不同的签名。在本案例中,样本没有封包。
4.检查文件依赖性。Dependency Walker工具显示了4个加载的DLL,以及由可执行文件(edd94. exe )输入的API调用列表,也显示出恶意软件样本输入了“CreateRemoteThread”的API调用,这是由恶意软件所使用的注入代码到另一个进 程的API调用。
5.提交到在线恶意软件扫描服务。样本提交到VirusTotal服务后显示,恶意软件是一个ZeuS僵尸(ZBOT)。ZeuS是一种木马,通过浏 览器中间人(Man -in-the-Browser,MITB)攻击的方式,记录击键登录和表格抓取来窃取银行信息。ZeuS主要是通过隐蔽强迫下载(drive-by download)和网络钓鱼骗局来传播。
(二)动态分析
在Linux机器上运行监控工具Wireshark来捕获恶意软件执行后产生的网络流量。运行INetSim来模拟网络服务,提供给该恶意软件虚假的响应。在Windows上运行Capturebat来捕捉进程、注册表和文件系统活动。
让edd94.exe在Windows虚拟机运行几秒钟后暂停虚拟机,然后抓取稍后将被用于内存分析的“.vmem”文件。以下是一些恶意软件执行后,监测工具抓到的活动。
图1显示explorer.exe(操作系统进程)也进行了大量的活动(设置注册表值,创建各种文件),表明该恶意软件代码注入到了explorer.exe中。
(图略)
图1 Capturebat的输出文件显示进程、文件和注册表活动
edd94.exe还释放了一个新文件(raruo.exe)到“C:\Documents and Settings\Administrator\ Appcation Data\Lyolxi”目录,然后执行它并创建一个新的进程(图2)。哈希值将帮助确定释放的文件(raruo.exe)和原始文件 (edd94.exe)是否一样。
(图略)
图2 edd94.exe释放了一个新文件raruo.exe
另一个活动是explorer.exe在子键“HKCU\Software\Microsoft\Windows\CurrentVersion \Run”下,设置一个注册表值{F561587E-37AB-9701-D0081175F 61B}。恶意软件通常在这个注册键中增加一个注册值,从重新开机中得以生存,即无论该值是什么,在每次系统重新启动时增加的数据将被执行。当 然,explorer.exe创建的这个注册表值是可疑的,可能是恶意代码注入到explorer.exe的结果。
Wireshark也抓获了恶意软件执行DNS查询来解析域名“users9.nofeehost.com”,也发现该域解析到IP地址 192.168.1.2,这是因为运行在Linux机器上的InetSim给出一个假的回应来响应DNS查询。现在已经骗了恶意软件,让它认为 “users9.nofeehost. com”的IP地址是192.168.1.2,也就是Linux机器,这样就禁止恶意软件连接到互联网。
然后,恶意软件试图建立HTTP连接,尝试从域“users9.nofeehost.com”下载一个配置文件(all.bin)(图3),INetSim也给了一个假的回应,当然也可配置INetSim去回应想要的任何自定义页面。
(图略)
图3恶意代码准备下载一个配置文件all.bin
ZeuS Tracker(跟踪世界各地的ZeuS命令和控制服务器的项目)显示,该域名以前被列为ZeuS命令和控制服务器,捕捉的模式和跟踪ZeuS提到的一样,证实了处理的正是ZeuS bot(ZBOT)。
(三)内存分析
执行内存分析之前,把刚才得到的“.vmem”文件改名为“infected.vmem”。
内存分析使用Volatility框架来进行,用PsList插件分析进程列表,它显示了进程edd94.exe(PID1476)和 raruo.exe(PID1492)。edd94.exe是在Windows虚拟机上执行的恶意可执行文件,raruo.exe是由edd94.exe 文件删除的。在动态分析中确定恶意软件做了一个http连接,所以观察内存中的网络连接以确认。运行connscan模块显示explorer.exe的 进程ID,也就是PID 1748(图4)做了一个可疑的http连接。
(图略)
图4由PID 1748发起的HTTP连接
运行Apihooks插件显示explorer.exe进程的多个内嵌API挂钩,有一个跳转到一个未知位置,这个位置可能是恶意代码在的地方。检查 挂钩API函数之一的“HttpSendRequestA”的地址,显示在函数起始地址有一个前面看到的跳转未知位置。检查其周围字节,显示一个嵌入的可 执行文件(注意Windows可执行文件的签名“MZ”)存在于explorer.exe进程中。既然知道的explorer.exe有一个嵌入式可执行 文件,使用“malfind”插件,可转储explorer.exe(PID1748)的嵌入的可执行文件到所需的目录。
提交转储的可执行文件到VirusTotal(基于恶意软件扫描服务的在线网络),可证实该转储的可执行文件是ZBOT的一个组成部分。这证实了Explorer.exe被ZBOT注入了。
在动态分析中确定了在执行恶意软件样本后explorer.exe创建一个注册表值,从而在重新启动中得以生存。Printkey插件显示了由 edd94.exe植入的可执行文件(C:\Documents and Settings\Administrator\Application Data\Lyolxi\ra ruo.exe)。这表明每次系统启动的时候,raruo.exe就被执行。
在受感染的机器上发现可执行文件(raruo.exe),并将其提交到VirusTotal,能够证实这也是ZeuS bot(ZBOT)(图5)的组成部分。
(图略)
图5在VirusTatol网站上显示的raruo.exe文件的信息
四、总结
掌握并熟练运用恶意软件的3种取证分析方法,是取证调查人员必备的技能。综合利用静态、动态和内存方法,深入分析恶意软件可以产生有效的结果,能够发 现恶意软件的代码特征、行为特征、网络特征,描述其与操作系统的交互作用,确定其性质和目的,进而建立其在安全事件中的因果关系。
责任编校:李烽
【注释】
【基金项目】电子数据取证湖北省协同创新中心项目,公安部公安理论及软科学研究计划项目“公安院校网络侦查专业理论建设与实战研究”,公安部应用创新计划项目2013YYCXHBST030,湖北省教育厅科学研究项目 B20128201,鄂警院[2012]90号项目。
【参考文献】
{1}麦永浩等.计算机取证与司法鉴定[M].北京:清华大学出版社,2014.
{2}张仁斌等.计算机病毒与防病毒技术[M].北京:清华大学出版社,2008.
{3}奚小溪.恶意软件的行为与检测技术分析[J].安徽建筑工业学院学报(自然科学版),2012(6).