内网渗透基础——命令行下安装Microsoft .NET Framework( 二 )

完成这一步后我们进入下一步,等待安装结束后进入第二个页面,同样枚举一下所有子窗口,如下图:

内网渗透基础——命令行下安装Microsoft .NET Framework

文章插图
 

内网渗透基础——命令行下安装Microsoft .NET Framework

文章插图
 
我们看到,之前页面的子窗口还在,我们需要向Finish按钮发送鼠标点击消息,关键代码如下:
if (wcscmp(szTitle, L"&Finish") == 0) { printf("[+] Catch it!n"); printf("[*] Handle: %08Xn", Child_hWnd); printf("[*] Caption: %wsn", szTitle); printf("[*] Send the click command to &Finish.n"); ::PostMessage(Child_hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(0, 0)); ::PostMessage(Child_hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(0, 0)); }接下来进入最后一步,再一次枚举所有子窗口,如下图:
内网渗透基础——命令行下安装Microsoft .NET Framework

文章插图
 
我们看到,页面的子窗口被刷新,在程序实现上这里需要重新获得主窗口的句柄,我们向Restart Later按钮发送鼠标点击消息,关键代码如下:
if (wcscmp(szTitle, L"Restart &Later") == 0) { printf("[+] Catch it!n"); printf("[*] Handle: %08Xn", Child_hWnd); printf("[*] Caption: %wsn", szTitle); printf("[*] Send the click command to Restart &Later.n"); ::PostMessage(Child_hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(0, 0)); ::PostMessage(Child_hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(0, 0)); }至此,关键的实现代码已经完成 。
而要完整的实现在命令行下安装Microsoft .NET Framework,还需要考虑以下问题;
1.当启动安装程序dotNetFx40_Full_x86_x64.exe前,需要检查安装环境,如果已经存在另一个安装进程,那么会弹框提示冲突
如下图:
内网渗透基础——命令行下安装Microsoft .NET Framework

文章插图
 
这里需要在启动前做一个判断:如果存在另一个安装进程,就结束安装操作 。
2.当启动安装程序dotNetFx40_Full_x86_x64.exe时,会启动子进程Setup.exe,这里没法做到通过设置启动参数隐藏启动进程Setup.exe来隐藏窗口
这里需要加一个循环判断,只要发现主窗口就对其隐藏 。
为了避免CPU占用过多,在做while循环时,应该加一个Sleep函数 。
3.启动安装程序后需要模拟鼠标点击
需要注意的是,接下来的安装过程中,子窗口Install(名称为&Install)会一直存在,为了避免重复向Install按钮发送点击消息,在实现上我使用了第二个函数来匹配其他按钮 。
4.安装完成后,弹出新的窗口提示安装成功,捕获子窗口,向其发送鼠标按键的命令
这里捕获的子窗口名称为&Finish 。
5.接下来,弹框提示是否重新启动系统时,需要通过FindWindow()重新获得句柄
这里可以放在第二个函数的同一个循环中,当发现子窗口Restart &Later时,向其发送鼠标按键的命令 。
需要注意弹出的窗口为新窗口,不能使用之前的窗口句柄,需要通过FindWindow()重新获得句柄 。
完整实现代码已开源,地址如下:
https://github.com/3gstudent/Homework-of-C-Language/blob/master/Install_.Net_Framework_from_the_command_line.cpp
代码支持命令行下安装Microsoft .NET Framework 4、Microsoft .NET Framework 4.5和Microsoft .NET Framework 4.5.1
小结
本文介绍了通过发送鼠标消息在命令行下安装Microsoft .NET Framework的方法,开源C代码,分享实现原理和脚本开发的细节 。
原文链接:https://www.4hou.com/posts/pXgX

【内网渗透基础——命令行下安装Microsoft .NET Framework】


推荐阅读