Maison Opération et maintenance Sécurité Trois techniques d'injection de processus dans la matrice Mitre ATT&CK

Trois techniques d'injection de processus dans la matrice Mitre ATT&CK

Nov 26, 2019 am 10:02 AM
矩阵

Trois techniques d'injection de processus dans la matrice Mitre ATT&CK

Trois techniques d'injection de processus dans la matrice Mitre ATT&CK : injection de processus classique, Process Hollowing et Process Doppelgänging.

L'objectif principal des logiciels malveillants utilisant l'injection de processus est généralement d'éviter la détection par un logiciel antivirus ou d'effectuer des opérations d'élévation de privilèges. Ici, nous discuterons principalement en détail des trois méthodes du premier cas.

1 : Injection de processus classique (injection de DLL)

C'est la méthode la plus classique, et le processus est également très simple et clair :

OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

2 : Processus d'évidement

Il s'agit d'une méthode très ancienne, généralement traduite en chinois par « créer une marionnette processus" », le processus créé à l'aide de cette méthode peut être déguisé en n'importe quel processus juridique, tel que IE. Lorsqu'il est visualisé à l'aide d'un pirate de processus dans la mémoire, ses ressources d'icônes, sa description et sa signature numérique seront toutes les valeurs d'IE. Cela peut être difficile à détecter pour les intervenants d’urgence au cours de l’enquête.

Résumez cette méthode dans un langage concis, c'est-à-dire que le processus malveillant crée d'abord un processus dans un état suspendu, puis annule son mappage mémoire d'origine et le remplace par un code malveillant pré-préparé, puis effectue des opérations sur le fichier image modifié. Restaurer l’état d’exécution du processus après la redirection.

Idées d'implémentation :

1. Créez le processus cible via CreateProcess et transmettez le paramètre CREATE_SUSPENDED pour suspendre le processus

1 (2).jpg

2. .Par NtQueryProcessInformation Obtenez l'adresse de base du fichier image dans la mémoire du processus cible. (Structure de données du bloc PEB)

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

3. Effacez les données de mémoire (section) du processus cible via NtUnmapViewOfSection. Les paramètres entrants sont le handle du processus et l'adresse de base du. fichier image

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

4. Demandez une nouvelle mémoire via VirtualAllocEx (l'adresse de départ est l'adresse de base du fichier image précédent et la taille est la taille du fichier image). payload)

5. Écrivez la charge utile dans la mémoire via WriteProcessMemory

6 Redirigez l'adresse de base de la charge utile écrite dans la mémoire

7. thread cible via GetThreadContext et modifiez le registre eax du contexte pour Corriger le point d'entrée du code

8 Définissez le point d'entrée via SetThreadContext

9. Réveillez le processus via ResumeThread et exécutez la charge utile.

Idées de confrontation :

De la mise en œuvre Il ressort de l'idée que les étapes 1, 4, 5, 6, 7, 8 et 9 sont des méthodes conventionnelles de création d'un processus puis d'injection c'est vous-même. Seules les étapes 2 et 3 sont spéciales. Il peut être détecté à l’aide de méthodes de détection conventionnelles telles que les fonctions de touche Hook.

Trois : Processus Doppelgänging

Il s'agit d'une méthode d'injection relativement nouvelle, proposée pour la première fois lors de la conférence européenne du chapeau noir en 2017. Cette méthode est similaire à Process Hollowing dans son principe et ses performances. Lorsque le processus créé à l'aide de Process Doppelgänging est visualisé en mémoire à l'aide de Process Hacker, ses ressources d'icônes, sa description et sa signature numérique sont tous les programmes cibles spécifiés.

Cette méthode tire parti des caractéristiques de la transaction Windows (TxF), en utilisant des fichiers malveillants pour écraser les fichiers légitimes dans la transaction. À ce stade, la transaction n'est pas soumise (c'est-à-dire que l'écrasement ne se produira pas). le disque), puis une section est créée (actuellement copie de la transaction). Après avoir obtenu le handle de section, la transaction est annulée pour empêcher les fichiers malveillants d'écraser les fichiers légitimes sur le disque. Après cela, le handle de la section en mémoire est utilisé pour créer le processus. Le processus créé contient des informations sur les fichiers exécutables légaux.

Comme vous pouvez le constater, puisque le fichier doit être écrasé dans la transaction, cette méthode nécessite une autorisation en écriture sur le fichier cible.

Idées d'implémentation :

1. Créer un objet de transaction TxF (NtCreateTransaction)

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

2. Ouvrir les fichiers exécutables légaux avec l'API de transaction, c'est-à-dire ajouter le fichier à l'objet de transaction (CreateFileTransacted)

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

3. Ouvrez le fichier malveillant et allouez-lui de l'espace mémoire (CreateFile, GetFileSizeEx -> NtAllocateVirtualMemory -> ; ReadFile)

4. Écrasez le fichier exécutable légitime dans la transaction avec le fichier malveillant dans la mémoire (WriteFile)

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

5. la transaction en cours (NtCreateSection)

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

6. Annulez la transaction et restaurez l'écrasement dans un fichier exécutable légal (NtRollbackTransaction)

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

Utilisez la section dans la mémoire pour créer l'objet de processus. (NtCreateProcessEx )

Trois techniques dinjection de processus dans la matrice Mitre ATT&CK

8. Obtenez le point d'entrée du fichier malveillant, créez un bloc de paramètres de processus, puis écrivez le bloc de processus dans la mémoire du processus (NtQueryInformationProcess -> RtlInitUnicodeString -> RtlCreateProcessParametersEx)

9. Mettez à jour le bloc de paramètres de processus dans le PEB, créez un thread pour l'objet de processus cible et exécutez du code malveillant (NtCreateThreadEx)

Contre-mesures :

À partir des étapes, Hook Cette technique peut être détectée en portant des jugements sur les fonctions clés (telles que NtCreateThreadEx).

Résumé

Plusieurs tendances peuvent être dégagées de l'évolution des trois techniques ci-dessus.

Le premier point est que la capacité de dissimulation dans la mémoire devient de plus en plus forte. Depuis le début, il n'y avait aucune dissimulation, jusqu'à maintenant, elle peut se comporter dans la mémoire conformément au programme légal.

Le deuxième point est que la méthode de libération de la charge utile en mémoire devient de plus en plus difficile à détecter. Initialement, la charge utile était copiée directement en mémoire. Les attaquants peuvent désormais utiliser certaines fonctionnalités (telles que TxF) pour dissimuler davantage la libération. processus.

Le troisième point est que les fonctions clés de la phase finale ne subissent presque aucun changement. Même si la libération de la charge utile devient de plus en plus cachée, elle sera toujours libérée dans la mémoire et appelée pour exécution. En accrochant un nombre limité de fonctions clés, la charge utile finale devrait être vidée.

Autres recommandations de didacticiels connexes : Sécurité du serveur Web

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explorer l'histoire et la matrice de l'intelligence artificielle : tutoriel sur l'intelligence artificielle (2) Explorer l'histoire et la matrice de l'intelligence artificielle : tutoriel sur l'intelligence artificielle (2) Nov 20, 2023 pm 05:25 PM

Dans le premier article de cette série, nous avons discuté des liens et des différences entre l’intelligence artificielle, l’apprentissage automatique, l’apprentissage profond, la science des données, etc. Nous avons également fait des choix difficiles concernant les langages de programmation, les outils et bien plus encore que toute la série utiliserait. Enfin, nous avons également introduit un peu de connaissances matricielles. Dans cet article, nous aborderons en profondeur la matrice, le cœur de l’intelligence artificielle. Mais avant cela, comprenons d’abord l’histoire de l’intelligence artificielle. Pourquoi avons-nous besoin de comprendre l’histoire de l’intelligence artificielle ? Il y a eu de nombreux booms de l’IA au cours de l’histoire, mais dans de nombreux cas, les énormes attentes quant au potentiel de l’IA ne se sont pas concrétisées. Comprendre l’histoire de l’intelligence artificielle peut nous aider à voir si cette vague d’intelligence artificielle créera des miracles ou n’est qu’une autre bulle sur le point d’éclater. nous

Programme Python pour calculer la somme des éléments diagonaux droits d'une matrice Programme Python pour calculer la somme des éléments diagonaux droits d'une matrice Aug 19, 2023 am 11:29 AM

Python est un langage de programmation généraliste populaire. Il est utilisé dans divers secteurs, notamment les applications de bureau, le développement Web et l’apprentissage automatique. Heureusement, Python possède une syntaxe simple et facile à comprendre qui convient aux débutants. Dans cet article, nous utiliserons Python pour calculer la somme de la diagonale droite d'une matrice. Qu'est-ce qu'une matrice ? En mathématiques, nous utilisons un tableau ou une matrice rectangulaire pour décrire un objet mathématique ou ses propriétés. Il s'agit d'un tableau ou d'un tableau rectangulaire contenant des nombres, des symboles ou des expressions disposés en lignes et en colonnes. Par exemple -234512367574 Il s'agit donc d'une matrice de 3 lignes et 4 colonnes, exprimée sous la forme d'une matrice 3*4. Or, il y a deux diagonales dans la matrice, la diagonale primaire et la diagonale secondaire.

Comment calculer le déterminant d'une matrice ou d'un ndArray en utilisant numpy en Python ? Comment calculer le déterminant d'une matrice ou d'un ndArray en utilisant numpy en Python ? Aug 18, 2023 pm 11:57 PM

Dans cet article, nous allons apprendre comment calculer le déterminant d'une matrice à l'aide de la bibliothèque numpy en Python. Le déterminant d'une matrice est une valeur scalaire qui peut représenter la matrice sous forme compacte. C'est une quantité utile en algèbre linéaire et a de nombreuses applications dans divers domaines, notamment la physique, l'ingénierie et l'informatique. Dans cet article, nous aborderons d’abord la définition et les propriétés des déterminants. Nous apprendrons ensuite comment utiliser numpy pour calculer le déterminant d'une matrice et verrons comment il est utilisé en pratique à travers quelques exemples. Le déterminant de la matrice est une valeur scalaire qui peut être utilisée pour décrire la propriété

Programme Python pour multiplier deux matrices à l'aide de tableaux multidimensionnels Programme Python pour multiplier deux matrices à l'aide de tableaux multidimensionnels Sep 11, 2023 pm 05:09 PM

Une matrice est un ensemble de nombres disposés en lignes et en colonnes. Une matrice avec m lignes et n colonnes est appelée une matrice mXn, et m et n sont appelés ses dimensions. Une matrice est un tableau à deux dimensions créé en Python à l'aide de listes ou de tableaux NumPy. En général, la multiplication matricielle peut être effectuée en multipliant les lignes de la première matrice par les colonnes de la deuxième matrice. Ici, le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice. Scénario d'entrée et de sortie Supposons que nous ayons deux matrices A et B. Les dimensions de ces deux matrices sont respectivement 2X3 et 3X2. La matrice résultante après multiplication aura 2 lignes et 1 colonne. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

Programme C pour comparer deux matrices pour l'égalité Programme C pour comparer deux matrices pour l'égalité Aug 31, 2023 pm 01:13 PM

L'utilisateur doit saisir l'ordre des deux matrices ainsi que les éléments des deux matrices. Ensuite, comparez les deux matrices. Deux matrices sont égales si les éléments et les tailles de la matrice sont égaux. Si les matrices sont de taille égale mais pas égales en éléments, alors les matrices s'avèrent comparables mais pas égales. Si les tailles et les éléments ne correspondent pas, les matrices d'affichage ne peuvent pas être comparées. Le programme suivant est un programme C, utilisé pour comparer si deux matrices sont égales-#include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10] ; dans

Programme Python : échangez les positions du premier et du dernier élément dans une matrice entre les colonnes Programme Python : échangez les positions du premier et du dernier élément dans une matrice entre les colonnes Sep 08, 2023 pm 04:29 PM

Une matrice est un tableau bidimensionnel de nombres disposés en lignes et en colonnes. Python n'a aucun type de données pour représenter les matrices, mais nous pouvons utiliser des listes imbriquées ou des tableaux NumPy comme matrices. Consultez les scénarios d’entrée et de sortie suivants pour voir comment permuter les éléments de première et de dernière colonne d’une matrice. Scénario d'entrée-sortie Supposons que nous ayons une matrice 3X3 représentée à l'aide d'une liste de listes. La matrice de sortie sera la matrice résultante de l’échange des premier et dernier éléments de colonne. Matrice d'entrée :[1,3,4][4,5,6][7,8,3]Matrice de sortie :[4,3,1][4,5,6][3,8,7]Considérons un autre Une matrice dont les lignes et les colonnes sont inégales. Matrice d'entrée :

Comment annuler le compte dans la matrice ? Que signifie l'inversion matricielle ? Comment annuler le compte dans la matrice ? Que signifie l'inversion matricielle ? Mar 27, 2024 pm 12:16 PM

Dans les opérations sur les réseaux sociaux, le reflux matriciel des comptes est une stratégie courante. En dirigeant le trafic entre différents comptes, les fans peuvent se compléter et augmenter leur activité. Le reflux entre les comptes matriciels nécessite une planification et une exécution minutieuses et n’est pas simple. Cet article expliquera en détail comment mettre en œuvre l'inversion entre différents comptes et l'importance de l'inversion matricielle. 1. Comment annuler le compte dans la matrice ? Parmi les comptes matriciels, il est crucial de choisir un compte principal, qui deviendra la principale source de trafic et la plateforme de publication du contenu principal. La planification du contenu consiste à formuler des plans de contenu correspondants en fonction des caractéristiques du compte et des publics cibles afin de garantir une qualité et un style de contenu cohérents. 3. Recommandez-vous et aimez-vous les uns les autres : faites la promotion et aimez-vous les uns les autres entre les comptes matriciels, et guidez les fans à travers une mise en page et des arrangements raisonnables.

Comment mettre en place la matrice de compte Douyin ? Comment résoudre le problème de compte lors de l'exécution d'une matrice ? Comment mettre en place la matrice de compte Douyin ? Comment résoudre le problème de compte lors de l'exécution d'une matrice ? Mar 25, 2024 pm 11:01 PM

Avec le développement rapide de l'industrie de la vidéo courte, Douyin est devenue l'une des plateformes de vidéo courte les plus populaires en Chine. De nombreuses entreprises et travailleurs indépendants espèrent étendre leur influence en créant une matrice de comptes Douyin. Alors, comment construire une bonne matrice de compte Douyin ? Cet article répondra à cette question pour vous et présentera des moyens de résoudre les problèmes de compte. 1. Comment mettre en place la matrice de compte Douyin ? Lors de l’établissement d’une matrice de compte Douyin, la première tâche consiste à déterminer avec précision le positionnement de chaque compte. Selon les caractéristiques de la marque ou de l'individu, clarifier le thème et le style de chaque compte, de manière à attirer le public cible. Il est essentiel de déterminer votre stratégie de contenu, notamment les sujets de contenu, la fréquence de publication et les techniques de prise de vue. Ces étapes peuvent aider la matrice de compte à en tirer le meilleur parti. 3. Interaction entre les comptes : Établir une bonne relation entre chaque compte

See all articles