Kategorier
Metodik

IT-säkerhetsgranskning av Flash-filer (SWF)

Adobe Flash säkerhetVid ett penetrationstest av en webbsida eller webbtjänst så bör samtliga filer genomgå en granskning. Oavsett om det är JavaScript, CSS, PHP eller andra filer som förekommer.

En av de vanligare filformat som just innehåller säkerhetsbrister är Shockwave Flash, dvs .swf-filer. Och förutom säkerhetsbrister så kan även dessa swf-filer avslöja annan intressant information såsom kommunikation till bakomliggande API:er som även omfattas av ett penetrationstest.

Följande metodik är ett exempel på hur granskning av swf-filer kan genomföras.

Identifiering

Först identifieras samtliga SWF-filer och sådana som ej är av intresse sållas bort. Det kan exempelvis vara sådana som ej innehåller ActionScript eller bara visar en video (var observant för dessa kan vara intressanta).

Ibland så går det enbart ej att förlita sig på en Google-sökning likt denna:

site:domän.se filetype:swf

Det finns även fall då swf-filer laddas in dynamiskt via javascript såsom Facebook gör. Där kan en loggande proxy användas eller/och tillsammans med en spindel (crawler) som exekverar JavaScript. Firefox tillsammans med Selenium kan användas för detta syfte.

Nyttjande av brister

När du väl identifierat samtliga flash-filer så rekommenderar vi att du försöker dekompilera dessa med FFdec för att ta del av ActionScript kod. Även så kan webbläsarens inbyggda debugger eller Firebug användas för att kontrollera bakomliggande kommunikation.

Vid kontrollen av AcrionScript-kod så finns det någa delar som är mer intressanta, och det är vilka argument som går att skicka till swf-filen samt eventuella anrop till:

loadVariables()
loadMovie()
getURL()
loadMovie()
loadMovieNum()
FScrollPane.loadScrollContent()
LoadVars.load 
LoadVars.send 
XML.load ( 'url' )
LoadVars.load ( 'url' ) 
Sound.loadSound( 'url' , isStreaming ); 
NetStream.play( 'url' );

flash.external.ExternalInterface.call(_root.callback)
htmlText    

I ovan exempel då ExternalInterface.call anropas kan en XSS-attack genomföras med:

http://host/swf?callback=(new Function(“alert(‘Xss’)”))

Samt annat att kontrollera är om det går att ange egen URL vid laddning av XML eller videofilmer.

Avslutningsvis

Det absolut viktigaste är att läsa på om andra sårbarheter som identifierats i swf. Och det finns massor av läsning såsom OWASP:

Kategorier
Mobil

Penetrationstest av mobila appar

Penetrationtest mobiltelefoni

Att genomföra penetrationtest (IT-säkerhetstest) av mobila appar är en avancerad uppgift och kan vara tidsödande. Det som tar mest tid är att sätta upp test-miljön och allt vad det innebär med jailbreaks och verktyg som ska installeras.

Som tur var är detta något som enbart behöver genomföras en gång, sedan kan samma testmiljö användas för att testa flertalet appar.

Även fleratalet delar går att testa utan en avancerad testmiljö. Såsom att kontrollera hur trafiken är krypterad till och från appen om den gör någon extern kommunikation.

Vi kommer i denna guiden ej gå igenom hur du sätter upp en testmiljö utan att fokusera på några av de tester du bör genomföra vid en granskning av en mobil applikation.

Nätverkskommunkation

För titta på nätverkskommunikation så kan med fördel en proxy såsom Burp eller Charles användas. Jag rekommenderar även att betala för dessa verktyg då priset är relativt lågt.

Du kan även med fördel sätta upp ett dedikerat WiFi-nät för att just titta på kommunikation mellan appar för att lättare se vilken trafik som just går till/från telefonen.

Sen ställer du bara in så att din dator som kör Burp eller Charles blir proxy, detta går att göra under WiFi-inställningarna längst ner för det nät du använder.

Charles Proxy

Om du har tur så ser du sedan kommunikationen. Då är det dags att göra tester, det första du kan testa är att göra SSL MITM och se om det fungerar. Det bör ej fungera men om det fungerar så är det ett första fel du har identifierat i appen då den ej kontrollerar certifikatet. Sedan kan du installera Charles root-certifikat i telefonen och testa att göra SSL-mitm igen (om nu SSL används). Fungerar det då att göra SSL MITM så bör du rekommendera att kunden använder sig av Certificate Pinning som förhindrar denna MITM-attack.

En annnan smidig sak som går att använda är RVI (Remote Virtual Interface) för att spela in kommunikationen direkt till PCAP-format via tcpdump eller liknande. Gäller dock enbart iOS.

Reverse-Engineering

Innan du börjar att genomföra reverse-engineering på en app så bör du fungera ut vad syftet är. Bara att det fungerar är dock något att anmärka på anser jag om kunden ej obfuskerat sin Andorid App. För det är nämligen så att det är 10x lättare att genomföra reverse-engineering på en APK-fil än iOS.

För att dekompilera en Android-app så behöver du för använda en såkallad APK-downloader såsom denna:

Sedan så kan du använda följande webbtjänst som dekompilerar APK-filen:

Vilket eg. bara är följande verktyg som används automatiserat:

  • dex2jar
  • JAD – Java Decompiler
  • apktool
  • zip/unzip

Men sen då? Nu kan du titta efter krypteringsalgoritmer, statiska nycklar eller liknande som kan vara av intresse. Även söka efter sådan som du kanske identifierade när du tittade på nätverkstrafiken.

För verktyg till iOS så rekommenderas följande lista: iphonedevwiki.net/index.php/Reverse_Engineering_Tools

Även så rekommenderas gdb samt så finns det testappar såsom denna om du vill utveckla dina kunskaper:

Titta även efter eventuella debug-meddelanden som återfinnes (NSLog) om dessa avslöjar något intressant.

Filsystemet

Att kontrollera vilka filer som ligger på filsystemet är alltid bra. På iOS så ligger apparna under katalogen /var/mobile/Applications och följande kommando listar var du kan hitta apparna i underkatalogerna:

find /var/mobile/Applications -name "*.app" -type d
18E89E69-1F4E-417F-8606-575F43BC8DF0/Toca Tailor.app
D2691A4E-D9E8-40B3-8480-AC65158FA117/SwishC2B.app
D4C0D618-17EC-4FCE-B2BE-C68698E0251A/BankID.app
3AD50C2C-1ECB-4DF6-96F8-F97979A32536/Swedbank.app
A8C99A3F-AE14-43A8-89AD-00F5CD6D743D/WyWallet.app

Titta efter SQLite filer, krypterade filer. Källkod som har glömts eller liknande. För .plist filer så kan verktyget plutil används för att titta närmare på dessa (iOS).

Avslutande ord

Det bästa sättet att lära sig är att läsa andras rapporter samt att ladda hem några av test-apparna som finns. Kör du fast så går det då att lära hur andra har löst eventuella problem som uppstår.

Här finnes en test-app till iOS: damnvulnerableiosapp.com

Och publika rapporter har vi lagt upp under knappen publika rapporter.

Kategorier
Metodik

Olika steg vid penetrationstest

Penetrationstest gubbe

I denna artikel beskriver några av dom olika tekniska stegen som utförs vid ett penetrationstest. Vad som ej omfattas är eventuella möten eller avrpporteringar som genomförs löpande före, under och efter ett test. Även så bör rigorösa förberedelser genomföras innan då verktyg och material som används vid testet färdigställs.

Insamling

I detta moment så kartläggs personer, organisation och tekniska delar såsom IP-adress, domännamn och sociala medier. Även kan metadata från dokument sökas igenom och E-posthuvuden användas för att kartlägga interna strukturer bakom brandväggar exempelvis.

Vid insamlingsfasen kan även Google-dorks användas för att hitta information om så många anställda och dess E-post som möjligt. Även offentliga upphandlingar och andra typer av dokument kan användas för insamling.

DNS samt whois är även en bra källa till information.

Det finns ett antal bra moduler (script) till Nmap för detta vid namn:

  • http-google-email
  • http-email-harvest
  • dns-brute
  • http-reverse-ip

Målsökning

Under målsökningsfasen så identifieras potentiella mål för angrepp såsom webbservrar, mailservar och klienter. Versioner framgår och liknande såsom banner grabbing utförs. Källkod på webbsidor kan kontrolleras efter ledtrådar till versioner på WordPress eller andra CMS.

penetrationstest stegVPN-anslutningspunkter eller andra metoder att ansluta till målsystemet ingår också i målsökningen.

Exploitering

Vid explotering så nyttjas sårbarheter som identifierats vid målsökningen. Eventuella skal eller bakdörrar upprättas och förberedelse för exfiltration påbörjas.

Vid denna fas så bör alltid en nära dialog föras med uppdragsgivaren då ett exekveringsflöde ändras på ett relativt okontrollerat sätt.

En typ av exploitering kan vara att testa kringgå antivirus-produkter genom att skicka riktad skadlig kod mot testpersoner inom målorganisationen.

Här är en omfattande presentation på 170 slides med knep för att använda Google för att hitta brister och information:

Exfiltration

Här så testas olika metoder att förändra, stjäla eller injicera information på olika sätt. Långt ifrån många system medger att information skickas direkt ut från målsystemet. Det kan röra sig om VPN, brandväggar eller tunna klienter som måste nyttjas för att informationen ska exfiltreras.

Dropbox kan exempelvis anändas för att föra ut information, se mer här:

 

Kategorier
Metodik

Responder.py ute i ny version: 2.0.9

Responder

Attackverktyget Responder av Laurent Gaffié som jobbar på Spiderlabs är nu ute i en ny version. Verktyget används vid angrepp/penetrationstester av Windows-miljöer och mer specifikt så utger sig verktyget för att vara en fiktiv server när det gäller ett stort antal protokoll såsom:

  • DHCP
  • WPAD
  • LLMNR
  • Netbios Name Service
  • ICMP Redirect

När väl trafiken blivit omstyrd till angriparen så används svagheter i olika protokoll för att komma över behörigheter. Då nyttjas svagheter i SMB som används i operativsystem från Windows 95 upp till Windows 2012 RC.

Men även följande:

  • LDAP
  • MSSQL
  • FTP
  • IMAP
  • HTTPS/HTTP
  • POP3
  • SMTP

Här kan du ladda hem Responder:

https://github.com/Spiderlabs/Responder

Kategorier
Mobil

Penetrationstest av iPhone Appar

Det primära att kontroller är kommunikation till och från appen samt eventuella kryptografiska svagheter såsom statiska nycklar eller proprietära algoritmer som går att återskapa.

Att genomföra reverse-engineering på iPhone appar är inte helt trivialt och jag rekommenderar att om appen finns till Android också att kontroller denna.

Kontrollen av trafik till och från appen genomförs med fördel genom att använda en MITM-proxy såsom Burp Proxy eller Charles Proxy. Använder appen krypterad trafik med SSL så kan du installera ett SSL-certifikat som följer med Charles Proxy för att granska trafiken.

Följande blogginlägg går igenom mer i detalj hur du gör att titta på API-trafiken:

Kategorier
böcker

Bok om penetrationstest

PenetrationstestEnbart i dag har O’Reilly mycket bra rea på en bok om penetrationstester. Boken är skriven av Georgia Weidman och ges ut av No Starch, kostar runt 120 kr samt finns som eBok i PDF-format (ingen DRM).

Boken släpptes i Maj 2014 och innehåller nedan kapitel. Riktar sig till nybörjare inom penetrationstester.

  1. The Basics

    1. Chapter 1 Setting Up Your Virtual Lab

      1. Installing VMware
      2. Setting Up Kali Linux
      3. Target Virtual Machines
      4. Creating the Windows XP Target
      5. Setting Up the Ubuntu 8.10 Target
      6. Creating the Windows 7 Target
      7. Summary
    2. Chapter 2 Using Kali Linux

      1. Linux Command Line
      2. The Linux Filesystem
      3. Learning About Commands: The Man Pages
      4. User Privileges
      5. File Permissions
      6. Editing Files
      7. Data Manipulation
      8. Managing Installed Packages
      9. Processes and Services
      10. Managing Networking
      11. Netcat: The Swiss Army Knife of TCP/IP Connections
      12. Automating Tasks with cron Jobs
      13. Summary
    3. Chapter 3 Programming

      1. Bash Scripting
      2. Python Scripting
      3. Writing and Compiling C Programs
      4. Summary
    4. Chapter 4 Using the Metasploit Framework

      1. Starting Metasploit
      2. Finding Metasploit Modules
      3. Setting Module Options
      4. Payloads (or Shellcode)
      5. Types of Shells
      6. Setting a Payload Manually
      7. Msfcli
      8. Creating Standalone Payloads with Msfvenom
      9. Using an Auxiliary Module
      10. Summary
  2. Assessments

    1. Chapter 5 Information Gathering

      1. Open Source Intelligence Gathering
      2. Port Scanning
      3. Summary
    2. Chapter 6 Finding Vulnerabilities

      1. From Nmap Version Scan to Potential Vulnerability
      2. Nessus
      3. The Nmap Scripting Engine
      4. Running a Single NSE Script
      5. Metasploit Scanner Modules
      6. Metasploit Exploit Check Functions
      7. Web Application Scanning
      8. Manual Analysis
      9. Summary
    3. Chapter 7 Capturing Traffic

      1. Networking for Capturing Traffic
      2. Using Wireshark
      3. ARP Cache Poisoning
      4. DNS Cache Poisoning
      5. SSL Attacks
      6. SSL Stripping
      7. Summary
  3. Attacks

    1. Chapter 8 Exploitation

      1. Revisiting MS08-067
      2. Exploiting WebDAV Default Credentials
      3. Exploiting Open phpMyAdmin
      4. Downloading Sensitive Files
      5. Exploiting a Buffer Overflow in Third-Party Software
      6. Exploiting Third-Party Web Applications
      7. Exploiting a Compromised Service
      8. Exploiting Open NFS Shares
      9. Summary
    2. Chapter 9 Password Attacks

      1. Password Management
      2. Online Password Attacks
      3. Offline Password Attacks
      4. Dumping Plaintext Passwords from Memory with Windows Credential Editor
      5. Summary
    3. Chapter 10 Client-Side Exploitation

      1. Bypassing Filters with Metasploit Payloads
      2. Client-Side Attacks
      3. Summary
    4. Chapter 11 Social Engineering

      1. The Social-Engineer Toolkit
      2. Spear-Phishing Attacks
      3. Web Attacks
      4. Mass Email Attacks
      5. Multipronged Attacks
      6. Summary
    5. Chapter 12 Bypassing Antivirus Applications

      1. Trojans
      2. How Antivirus Applications Work
      3. Microsoft Security Essentials
      4. VirusTotal
      5. Getting Past an Antivirus Program
      6. Hiding in Plain Sight
      7. Summary
    6. Chapter 13 Post Exploitation

      1. Meterpreter
      2. Meterpreter Scripts
      3. Metasploit Post-Exploitation Modules
      4. Railgun
      5. Local Privilege Escalation
      6. Local Information Gathering
      7. Lateral Movement
      8. Pivoting
      9. Persistence
      10. Summary
    7. Chapter 14 Web Application Testing

      1. Using Burp Proxy
      2. SQL Injection
      3. XPath Injection
      4. Local File Inclusion
      5. Remote File Inclusion
      6. Command Execution
      7. Cross-Site Scripting
      8. Cross-Site Request Forgery
      9. Web Application Scanning with w3af
      10. Summary
    8. Chapter 15 Wireless Attacks

      1. Setting Up
      2. Monitor Mode
      3. Capturing Packets
      4. Open Wireless
      5. Wired Equivalent Privacy
      6. Wi-Fi Protected Access
      7. WPA2
      8. Wi-Fi Protected Setup
      9. Summary
  4. Exploit Development

    1. Chapter 16 A Stack-Based Buffer Overflow in Linux

      1. Memory Theory
      2. Linux Buffer Overflow
      3. Summary
    2. Chapter 17 A Stack-Based Buffer Overflow in Windows

      1. Searching for a Known Vulnerability in War-FTP
      2. Causing a Crash
      3. Locating EIP
      4. Hijacking Execution
      5. Getting a Shell
      6. Summary
    3. Chapter 18 Structured Exception Handler Overwrites

      1. SEH Overwrite Exploits
      2. Passing Control to SEH
      3. Finding the Attack String in Memory
      4. POP POP RET
      5. SafeSEH
      6. Using a Short Jump
      7. Choosing a Payload
      8. Summary
    4. Chapter 19 Fuzzing, Porting Exploits, and Metasploit Modules

      1. Fuzzing Programs
      2. Porting Public Exploits to Meet Your Needs
      3. Writing Metasploit Modules
      4. Exploitation Mitigation Techniques
      5. Summary
  5. Mobile Hacking

    1. Chapter 20 Using the Smartphone Pentest Framework

      1. Mobile Attack Vectors
      2. The Smartphone Pentest Framework
      3. Remote Attacks
      4. Client-Side Attacks
      5. Malicious Apps
      6. Mobile Post Exploitation
      7. Summary
  1. Appendix Resources

    1. Chapter 0: Penetration Testing Primer

    2. Chapter 2: Using Kali Linux

    3. Chapter 3: Programming

    4. Chapter 4: Using the Metasploit Framework

    5. Chapter 5: Information Gathering

    6. Chapter 6: Finding Vulnerabilities

    7. Chapter 7: Capturing Traffic

    8. Chapter 8: Exploitation

    9. Chapter 9: Password Attacks

    10. Chapter 11: Social Engineering

    11. Chapter 12: Bypassing Antivirus Applications

    12. Chapter 13: Post Exploitation

    13. Chapter 14: Web Application Testing

    14. Chapter 15: Wireless Attacks

    15. Chapters 16–19: Exploit Development

    16. Chapter 20: Using the Smartphone Pentest Framework

    17. Courses

  2. Downloading the Software to Build Your Virtual Lab

Kategorier
Metodik

Olika typer av penetrationstester

Vid penetrationstester eller IT-säkerhetgranskningar så brukar dessa delas upp inom olika områden där det enda ej utersluter det andra. Dvs ett test kan omfatta flertalet av dessa:

Whitebox tester

Med detta menas att full dokumentation och insyn finnes i systemet, nätverket eller produkten. Intern dokumentation eller liknande tas del av innan testet. Detta kan framförallt spara tid och ge maximalt för pengarna.

Blackbox tester

Denna typ av test brukar mest avspegla den information som en eventuell antagonist besitter. All kartläggning och informationsinhämtning sker genom öppna källor (OSINT). Ingen information eller dokumentation ges i förväg till den som utför penetrationstestet.

Externt penetrationstest

Detta test genomförs oftast över Internet eller annan typ av fjärrnätverk. Brandväggar och andra perimeterskydd finns mellan den som genomför testet och målobjektet. E-post och andra kanaler används för att försöka kringgå skyddet.

Internt penetrationstest

Avspeglar oftast en insider eller personal som vill illa. Testet genomförs ute hos kunden och på insidan av nätverket vid exempelvis en nätverksport som finns allmänt tillgänglig.

Avslutande ord

När testet är slut så levereras en rapport skriftligen. Den kund som beställt uppdrag bör också begära skriftligen på att samtlig information som insamlats raderas med säker överskrivning. Eller att ingen företagssekretess lämnar kundens lokaler under eller efter testet.

Finns så klart mycket mer att tänka på som vi återkommer till längre fram.

Kategorier
Verktyg

Ny version av Kali Linux

Kali Linux

Det har utkommit en ny version av Kali Linux som är en Linuxdistribution speciellt anpassad för penetrationstester och andra IT-säkerhetsrelaterade uppgifter.

Denna nya version heter 1.0.7 och har förutom en ny kernel stöd för att skapa och köra krypterat från USB-minne.

För att uppgradera din nuvarande version kan du bara köra:

apt-get update
apt-get dist-upgrade
# If you've just updated your kernel, then:
reboot

Kali Linux gick tidigare under namnet Backtrack Linux och liknande distar finns vid namn BlackArch och BlackBuntu.

Här hittas Kali Linux: