Windows帐号角色权限的安全检查分析以及PowerShell的使用介绍
一、Windows帐号角色权限的安全检查分析
1.net user:检查用户情况;
net user X:检查某个特定的用户X。
2.lusrmgr.msc --> local user manger缩写:本地用户和组管理器。
whoami /user :查看当前的用户信息。
4.net localgroup :检查用户组情况;
net localgroup X:查看X用户组的情况。
5.eventvwr.msc:日志查看器。
6.权限检查的几个工具:SubInACL(查看更多:https://www.microsoft.com/en-us/download/details.aspx?id=23510)、accesschk64、ProcessExplorer:procexp、ProcessMonitor、ProcessMonitor、icacls,Windows自带的文件/进程权限检查:icacls "C:\Windows\System32\winlogon.exe"
secpol.msc:用户权限分配检查。
二、Windows PowerShell的使用介绍
1.PowerShell简介:
<1>.PowerShell(Include:PowerShell Core)是Windows任务自动化和配置管理的命令行脚本环境,有.NET Framework、.NET Core;是构建命令行界面壳层(Comand Shell Line)相关脚本语言组成;最初只是Windows组
件,后来,2016年8月18日开源并跨平台支持。
<2>.PowerShell管理任务通常由cmdlets(command-lets,小命令 )执行,是执行特定操作的专用.NET类。可将cmdlet集合至脚本、可执行文件中,或通过常规.NET类、WMI/COM对象实例化。面向对象、完全支持对象的强大
Shell管理工具。
<3>.当前PowerShell有4个版本,分别为:v1,v2、v3、v4、v5:
Window 7 或 Server 2008,默认内置v2;
Windows 8 或 Server 2012,内置v3;
Windows 8.1 或 Server 2012 R2,内置v4;
Windows 10 或 Server 2016/R2,内置v5。
<4>.文件扩展名:
.ps1,脚本文件;
.ps1xml,XML文档;
.psc1,控制台文件;
.psd1,数据文件;
.psm1,脚本模块;
.pssc,会话配置文件;
.cdxml ,Cmdlet定义的XML文档。
<5>.官方参考资料:
https://docs.microsoft.com/zh-cn/powershell/
<6>.获取源代码和安装包:
https://github.com/PowerShell/PowerShell
2.PowerShell攻击频频:
<1>.以PowerShell作为攻击平台的概念,首次在2010年Dave Kennedy & Josh Kelley的Def Con18演讲,演示了PowerShell编写的绑定和反向shell进行攻击。
2012 年,Matt Graeber开发了PowerSploit并发表博文,从此,PowerShell利用率大幅提升!
2013年,Mimikatz开始支持PowerShell调用(aka Invoke-Mimikatz)。PowerShell彻底流行起来!
成熟的PowerShell工具,如:Nishang、PowerSploit、Empire。
Empire,可实现无需powershell.exe就可运行PowerShell代理功能,快速部署后期漏洞利用模块,从Key Logger到Mimikatz,且能够躲避多种安全检测。
<2>.使用过PowerShell攻击技术的APT组织:
“海莲花”(APT-TOCS);
“白象”(White Elephant);
“方程式”(Equation);
“绿斑”(GreenSpot);
Fub7;
APT-C-01:针对中国政务/科技/教育/国防等机构。
PowerShell开源,跨平台支持,攻击将会越来越常见!
<3>.为什么PowerShell会成为黑客攻击的最爱?
对Network Socket访问简单、高效、直接;
可动态地在内存组装恶意的二进制文件,直接运行在内存,杀毒软件极难检测;PowerShell结合 .NET 实施“无文件”攻击(攻击代码下载、执行均在内存实现,无需在系统创建攻击文件,可有效逃避安全软件检测拦截),混
合在正常网络流量,难以追踪。攻击行为便捷、有效、隐蔽;
直接访问Win32应用程序编程接口(API);
使用Windows管理工具的简单接口(WMI);
强大的脚本环境;
动态的调用运行时间方法;
轻而易举地访问密码库,例如:IPSec、哈希算法;
能够钩住托管代码;
完全绑定组件对象模型(COM)。
<4>.PowerShell危害分析:
对企业而言,服务器被攻击,拉取PowerShell进程,远程执行恶意代码,多数情况下是由于企业自身安全意识不足防御有破绽,对爆出的系统漏洞、应用程序漏洞未及时修复,导致服务器被入侵,影响企业信息安全。
统计表明,攻击者通常利用高危漏洞进行攻击:永恒之蓝、Weblogic反序列化、MS17-010、Struts2系列漏洞,备受青睐!
弱口令”也给企业带来约51%的安全隐患。该漏洞攻击成本低,结合社工、钓鱼方式,利用恶意邮件( Foxmail),结合Office宏执行恶意代码,实施深层次攻击。
统计表明,攻击者入侵成功后,最喜欢投放:挖矿木马、勒索病毒。都与数字货币直接相关。窃密木马、远控木马,实施对目标企业定向攻击。给企业带来严重安全威胁!
3.PowerShell开发工具:
<1>.Windows系统自带的工具:PowerShell ISE;
启动方式:输入powershell,进入powershell界面,输入ise即可打开。
<2>.其他工具:PowerShell Studio & Visual Studio;
查看更多:https://www.sapien.com/software/powershell_studio
4.PowerShell脚本调用的方法:
如果脚本是直接写的代码而不是只定义了函数,则直接执行脚本.script.ps1即可;
如果载入了函数,则需要:+空格+.script.ps1;
或使用Import-Module .script.ps1,直接使用有脚本的函数。
5.PowerShell执行的可选参数:
PowerShell[.exe] [-PSConsoleFile <file> | -Version <version>] [-EncodedCommand <Base64EncodedCommand>] [-ExecutionPolicy<ExecutionPolicy>] [-File <filePath> <args>] [-InputFormat {Text | XML}] [-NoExit] [-NoLogo] [-
NonInteractive] [-NoProfile] [-OutputFormat {Text | XML}] [-Sta] [-WindowStyle <style>] [-Command { - | <script-block> [-args <arg-array>] | <string>[<CommandParameters>] } ]PowerShell[.exe] -Help | -? | /?
<1>.-Command,需要执行的代码;
<2>.-ExecutionPolicy,设置默认的执行策略,一般使用Bypass;
<3>.-EncodedCommand,执行Base64代码;
<4>.-File,需要执行的脚本名;
<5>.-NoExit,执行完成命令之后不会立即退PS会话;
<6>.-NoLogo,不输出PS的Banner信息;
<7>.-Noninteractive,不开启交互式的会话;
<8>.-NoProfile,不使用当前用户使用的配置文件;
<9>.-Sta,以单线程模式启动PS;
<10>.-WindowStyle,设置Powershell的执行窗口:Normal、Minimized、Maximized、Hidden;
<11>.-Version,设置用什么版本去执行代码。
Powershell混淆框架nvoke-Obfuscation,下载地址:https://github.com/danielbohannon/Invoke-Obfuscation
6.PowerShell执行策略:
PowerShell提供:Restricted、AllSigned、RemoteSigned、Unrestricted、Bypass、Undefined,六种执行策略。
<1>.Restricted:
受限制。可执行单个命令。不能执行脚本。Windows 8/8.1/10、Server 2012默认策略,执行会报错。
可通过:Set-ExecutionPolicy -ExecutionPolicy Bypass,即可设置策略为Bypass,即可执行脚本。
Get-ExecutionPolicy,获取当前的执行策略:
<2>.AllSigned::
允许执行所有具有数字签名的脚本。
<3>.RemoteSigned:
执行从网上下载的脚本,需要脚本具备数字签名,否则,脚本运行失败。
如果在本地创建的脚本,可直接执行,不要求数字签名。
<4>.Unrestricted:
比较宽容的策略,允许运行未签名的脚本。从网上下载的脚本,运行前安全提示,需确认是否执行。
<5>.Bypass:
脚本执行不设任何限制,任何脚本都可执行,并且不会有安全提示。最宽松!
<6>:Undefined:
没有设置脚本策略。当然,此时会发生继承或应用默认的脚本策略。
7.PowerShell的语法:
变量、数组、哈希表(Hash table)、条件判断、循环语句、函数、对象、
8.PowerShell命令举例:
获取所有命令:Get-Command;
停止所有当前运行中的以"p"字符开头命名的程序:get-process p* | stop-process;
停止所有当前运行中的所有使用大于1000MB存储器的程序:get-process | where { $_.WS -gt 1000MB } | stop-process;
计算一个目录下文件内的字节大小:get-childitem | measure-object -property length -sum;
等待一个叫做"notepad"的程序运行结束:
$processToWatch = get-process notepad;
$processToWatch.WaitForExit();
把"$UserProfile"设置成数值"UserProfile"的环境变量:$UserProfile = $env:UserProfile;
9.PoshC2:
基于PowerShell和C#的命令控制工具-PoshC2,不仅实现了各种各样攻击技术,还能够绕过目标主机中部署的各种安全检查。
https://github.com/nettitude/PoshC2