|
作者: yimarong [yimarong] 版主 | 登录 |
最近公司有用户感染W32.Novarg.A@mm VIRUS 发现这个后门有点意思 会生成%System%\Shimgapi.dll 和 %System%\Taskmon.exe 会将将值: "(Default)" = "%System%\shimgapi.dll" 添加到注册表键: HKEY_CLASSES_ROOT\CLSID\{E6FB5E20-DE35-11CF-9C87-00AA005127ED}\InProcServer32 Explorer.exe 会因此调用 Shimgapi.dll。 会打开从 TCP 从 3127 到 3198 的端口监听,作为一个代理服务器运行。这个后门还可以下载和执行任意文件。 嘿嘿,这个 VIRUS 作者牛 |
地主 发表时间: 04-02-05 18:20 |
回复: yimarong [yimarong] 版主 | 登录 |
IE编程---DLL绑定 顾剑辉(http://solarsoft.126.com) 我查阅了一些资料,但写关于IE的DLL绑定的文章并不多,而且,写得不是很清楚。为此,我想介绍一下,这个方法: 基础知识:VC COM,(ALT方法来做) IE的启动过程: 当IE的实例启动的时候,它会在注册表中寻找一个CLSID,具体位置在 HKEY_LOCALL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 当这里存在一CLSID时,IE会建立一个对象的实例。比如:{B5D4581D-ED6A-4905-A267-25BAF7BE79C1}如果这个看不懂,你可以去找一下COM开发的书。 开发实例: VC建立工程,ALT COM AppWizard 注意是DLL. 建立一个新的类,一定要是ALT 在菜单,Insert>New ALT Object:Simple Object 修改并实现方法 // FiltrateIE.h : Declaration of the CFiltrateIE #ifndef __FILTRATEIE_H_ #define __FILTRATEIE_H_ #include "resource.h" // main symbols #include <ExDisp.h> //这里必须加上这两个头文件 #include <msHtml.h> #define MAX_DOCUMENTS 50 ///////////////////////////////////////////////////////////////////////////// // CFiltrateIE class ATL_NO_VTABLE CFiltrateIE : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<CFiltrateIE, &CLSID_FiltrateIE>, public IObjectWithSiteImpl<CFiltrateIE>,//加入这个,以继承该接口 public IDispatchImpl<IFiltrateIE, &IID_IFiltrateIE, &LIBID_SAFEIELib> { public: CFiltrateIE() { } DECLARE_REGISTRY_RESOURCEID(IDR_FILTRATEIE) DECLARE_NOT_AGGREGATABLE(CFiltrateIE) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CFiltrateIE) COM_INTERFACE_ENTRY(IFiltrateIE) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IObjectWithSite)//加入 END_COM_MAP() // IFiltrateIE public //下面两个方法必须实现 STDMETHOD(SetSite)(IUnknown *pUnkSite); STDMETHOD(Invoke)(DISPID dispidMember,REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr); private: //下面一个方法必须实现 enum ConnectType {Advise,Unadvise}; BOOL ManageConnection(enum ConnectType action); CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> m_spWebBrowser2; HWND m_hwndIE; DWORD m_dwCookie; BOOL m_bDocComplete; BOOL m_test; }; #endif //__FILTRATEIE_H_ // FiltrateIE.cpp : Implementation of CFiltrateIE #include "stdafx.h" #include "SafeIE.h" #include "FiltrateIE.h" #include <tchar.h> #include <ExDisp.h> #include <ExDispID.h> #include <comdef.h> #include <Commctrl.h> #include <strstrea.h> ///////////////////////////////////////////////////////////////////////////// // CFiltrateIE BOOL CFiltrateIE::ManageConnection(enum ConnectType action) { if (!m_spWebBrowser2) return S_OK; HRESULT hr; CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> spCPContainer(m_spWebBrowser2); if (spCPContainer != NULL) { CComPtr<IConnectionPoint> spConnectionPoint; hr = spCPContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &spConnectionPoint); if (SUCCEEDED(hr)) { if (action == Advise) // Advise the client site that we want to sink events hr = spConnectionPoint->Advise((IDispatch*)this, &m_dwCookie); else // Remove us from the list of active sinks hr = spConnectionPoint->Unadvise(m_dwCookie); } } return (SUCCEEDED(hr)); } STDMETHODIMP CFiltrateIE::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) { m_test=TRUE; if (!pDispParams) return E_INVALIDARG; CComPtr<IDispatch> spDisp; HRESULT hr; switch (dispidMember) { case DISPID_BEFORENAVIGATE2: m_bDocComplete = FALSE; m_spWebBrowser2 = pDispParams->rgvarg[6].pdispVal; hr = m_spWebBrowser2->get_Document(&spDisp); if (SUCCEEDED(hr)) { CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML; spHTML = spDisp; // if (spHTML) // RemoveDocument(spHTML); } break; case DISPID_NAVIGATECOMPLETE2: // /* if (m_spWebBrowser2){ _bstr_t bsAddress=m_spWebBrowser2->GetLocationURL(); LPCTSTR str1,str2; str1="SolarSafe.htm"; str2=(LPCTSTR)bsAddress; if (strstr(str2,str1)!=NULL) { ShellExecute((HWND)m_spWebBrowser2->HWND,"open","C:\\solarsafe.htm",NULL,NULL,SW_SHOWNORMAL); } */ break; // [0]: New status bar text - VT_BSTR // /* case DISPID_STATUSTEXTCHANGE: break; */ // [0]: Maximum progress - VT_I4 // [1]: Amount of total progress - VT_I4 // /* case DISPID_PROGRESSCHANGE: break; */ // [0]: Document URL - VT_BYREF|VT_VARIANT // [1]: An object that evaluates to the top-level or frame // WebBrowser object corresponding to the event. case DISPID_DOCUMENTCOMPLETE: // Temporarily disable keyboard hook if(m_test) {//ShellExecute(m_hwndIE,"open","C:\\solarsafe.htm",NULL,NULL,SW_SHOWNORMAL); MessageBox(m_hwndIE, "AAAA", "A", MB_OK ); // m_spWebBrowser2->Quit(); m_test=FALSE; } // Fill in form if necessary m_spWebBrowser2 = pDispParams->rgvarg[1].pdispVal; // Get the WebBrowser's document object hr = m_spWebBrowser2->get_Document(&spDisp); if (SUCCEEDED(hr)) { CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML; spHTML = spDisp; // if (spHTML && DoFillIn(spHTML)) // AddDocument(spHTML); } m_bDocComplete = TRUE; // Temporarily disable keyboard hook break; // No parameters /* case DISPID_DOWNLOADBEGIN: break; */ // No parameters /* case DISPID_DOWNLOADCOMPLETE: break; */ // [0]: Enabled state - VT_BOOL // [1]: Command identifier - VT_I4 // /* case DISPID_COMMANDSTATECHANGE: break; */ // [0]: Address of cancel flag - VT_BYREF|VT_BOOL // /* case DISPID_NEWWINDOW2: break; */ // [0]: Document title - VT_BSTR // [1]: An object that evaluates to the top-level or frame // WebBrowser object corresponding to the event. // /* case DISPID_TITLECHANGE: break; */ // [0]: Name of property that changed - VT_BSTR // /* case DISPID_PROPERTYCHANGE: break; */ // [0]: Address of cancel flag - VT_BYREF|VT_BOOL // case DISPID_ONQUIT: // Unregister the keyboard hook previously installed // for this instance. ManageConnection(Unadvise); break; default: break; } return S_OK; } STDMETHODIMP CFiltrateIE::SetSite(IUnknown *pUnkSite) { if (pUnkSite != NULL) { // Query pUnkSite for the IWebBrowser2 interface. m_spWebBrowser2 = pUnkSite; if (m_spWebBrowser2) { m_spWebBrowser2->get_HWND((long*) &m_hwndIE); // We'll need the this pointer later when the keyboard // hook will be called. // if (!AddInstance(m_hwndIE, this, GetCurrentThreadId())) // FormWhizError(IDS_ERROR_TOOMUCHWINDOWS, errError); // Connect to the browser in order to handle events. if (!ManageConnection(Advise)) MessageBox(m_hwndIE, "AAAA", "A", MB_OK ); // FormWhizError(IDS_ERROR_SINKINGFAILED, errError); } } return S_OK; } 找到.rgs文件,加入 HKLM { SOFTWARE { Microsoft { Windows { CurrentVersion { Explorer { 'Browser Helper Objects' { ForceRemove {B5D4581D-ED6A-4905-A267-25BAF7BE79C1} = s 'SafeIE Utility' } } } } } } } 上边的{B5D4581D-ED6A-4905-A267-25BAF7BE79C1}在这个文件中可以找到,注意,你做的CSLID肯定不一样。 一切OK,想试一下,可以先看一下,本工程代码 |
B1层 发表时间: 04-02-05 18:21 |
回复: yimarong [yimarong] 版主 | 登录 |
呵呵,,听说SCO 花25万美元捉拿该VIRUS作者,, 有谁知道是谁写的????? |
B2层 发表时间: 04-02-05 18:22 |
回复: sjhaike [sjhaike] 论坛用户 | 登录 |
消息够快呀 挺诱人的 呀 哈哈 ~~``~~ |
B3层 发表时间: 04-02-05 18:37 |
回复: yimarong [yimarong] 版主 | 登录 |
呵呵~就是不好找! |
B4层 发表时间: 04-02-05 18:44 |
回复: afan271314 [afan271314] 论坛用户 | 登录 |
要是我写的 就好了 我去自首 那25万 能给我吧 |
B5层 发表时间: 04-02-05 18:45 |
回复: NetPolaris [newmyth21] 论坛用户 | 登录 |
你别想自首了,我会先把你先做了,再去要钱的 |
B6层 发表时间: 04-02-05 18:50 |
回复: yimarong [yimarong] 版主 | 登录 |
得!我就分3成吧! |
B7层 发表时间: 04-02-05 19:52 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号