day_log 10月份的

10.15

verifier验证驱动
c:\windows\system32\verifier.exe

ZeroAccess
section_object
segment
control_area
http://bbs.pediy.com/showthread.php?t=141124

int 2d资料
http://www.openrce.org/reference_library/anti_reversing_view/34/INT%202D%20Debugger%20Detection/

 10.16

1...
这里下断可以跟进com的代码DispCallFunc

接口一般定义如下
interface IDispatch : IUnknown

{

 virtual HRESULT GetTypeInfoCount(UINT* pctinfo) = 0;

 virtual HRESULT GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo) = 0;

 virtual HRESULT GetIDsOfNames (REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgdispid) = 0;

 virtual HRESULT Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr ) = 0;

}

2.ASM的strcpy等
rep
scas
movs
cmps
stos

3.卡巴
PDM - 启发式扫描引擎
TRUE - 网络数据包过滤客户端
AVPG - 通用事件捕获及过滤驱动程序
KLAVA - 疑似小型模拟器,刚开始看
Prague - Project Prague,虚拟机
CKAH - 网络防火墙、入侵防护
1.avpbase
这是卡巴的扫描引擎,
2.avpedit
这是卡巴库的编辑器,应该是最为好玩的几个东西之一了

4.0入口点的程序。

10.22

1.Cisco vpn client BSOD
只是因为KfRaiseIrql后,没有KeLowerIrql


2.
NTSTATUS IoCreateDevice(
_In_ PDRIVER_OBJECT DriverObject,
_In_ ULONG DeviceExtensionSize,
_In_opt_ PUNICODE_STRING DeviceName,
_In_ DEVICE_TYPE DeviceType,
_In_ ULONG DeviceCharacteristics,
_In_ BOOLEAN Exclusive,
_Out_ PDEVICE_OBJECT *DeviceObject
);
没有验证DeviceExtensionSize,会有问题


3.
recv时传入的buff,不清零的话。

在对方传入的数据不能控制的情况下,直接处理有可能把上一次接收到的数据也处理了。

10.23

1.CMainFrame
创建CIOCPServer实例,调用Initialize初始化

传入NotifyProc给CIOCPServer,回调函数
ProcessPacket对Receive的数据包进行处理

2.CIOCPServer
Initialize中创建一个线程监听,并调用InitializeIOCP进行完成端口的初始化

当有数据接收时,会调用NotifyProc回调函数,发送给CMainFrame进行处理


3.CGh0stView
对界面的管理

CMainFrame::ProcessPacket调用本类的成员函数,来打开Shell,FIle等窗口,
以及上线添加Item等功能。

10.24

1.用SEH过启发,还有int 2d可以保护软件反调试。


2.菜单选择一个命令后

2.1主控发送一个TOKEN到被控

2.2被控收到后,创建一个线程,再次connect主控,并进行处理,回应一个带TOKEN的结果包

2.3主控收到这个结果后,当TOKEN == TOKEN_LOGIN(上线包)时,标志这个socket为主socket,否则不标志,直接处理


3.MFC内存泄漏

DestroyWindow()->PostNcDestory()

10.25

PcShare协议分析

1.
控制端固定时间,向主控端connect
主控制根据协议,分析是上线包,还是非上线包

1.1 上线包
显示在界面上

1.2 非上线包
判断是哪种操作,然分发给相应的例程
判断是哪个操作,然后CreateProcess,把socket传给新进程

1.3 增加某项目的时机
当有accept到来时,分析是否上线包

1.4 删除某项目的时机
在用户选择一个操作时,会判断这个链接是否存活

1.5
当控制端收到一个accept时,创建一个线程去recv


gh0st协议分析

2.
控制端第一次会发送上线包
然后在固定时间,向主控发送一个命令

控制端收到一个数据包的时候,会保存当前时间到与连接相关的数据结构中

然后每固定一段时间,会检测当前时间与上次接收到数据包的时间,进行比较

当大于某个值时,就删除

1.1 增加某条记录的时机
当收到上线包的时候

1.2 删除时机
保活机制

1.3 收到一个包,先分析协议,是什么操作
对应操作,分发到对应例程
每个socket绑定一个CDialog类,收到包时,调用CDialog类的OnRecieve

 10.29

1.数 的范围不一样,例如,一个字中,有符号数范围为:-32768到32767,无符号数范围为0到65535.

由此,做加,减运算时,对有符号数,只有of=0时运算结果才是正确的。而对于无符号数,cf=0才是正确的。

2.向最高位扩展结果不一样。97h:作为无符号数扩展为32位为:0097h。作为有符号数扩展为:ff97h。

3.有符号乘为imul,有符号除为idiv。

无符号乘为mul,无符号除为div。

4.有符号转移指令:JL,JNL,JG,JNG,

无符号转移指令:JB,JA,JNB,JNA

5.MediaHelper.xxx的CustomDataTransport整型

10.30

1.EmptyClipboard会发送一个WM_DESTROYCLIPBOARD消息。
/**********
可利用?动态启发?沙盒?
**********/

2.剪切板的复制粘贴,也是内存操作

3.对wndproc,消息是否会检测

4.SwitchDesktop的处理

10.31

1.DLL隐藏链表
LDR_DATA_TABLE_ENTRY
InMemoryOrderModuleList
InInitializationOrderModuleList
InLoadOrderModuleList

LDR_DATA_TABLE_ENTRY
HashLinks


2.reload dll

FreeLibrary HeapDestory

3.
irql
PROFILE_LEVEL
kprocess是eprocess的一个结构

 

 

posted @ 2012-12-02 12:52  ywledoc  阅读(206)  评论(0编辑  收藏  举报