Synecta SecCheck

Transcrição

Synecta SecCheck
Synecta SecCheck
IPA 2003 Christian Burri
Technische Dokumentation
 2003 by Synecta Informatik AG
VERTRAULICHES DOKUMENT – NUR ZUR INTERNEN VERWENDUNG
Inhaltsverzeichnis
1. Danksagung...........................................................................................................
3
2. Einleitung................................................................................................................ 4
3. Systemarchitektur................................................................................................... 5
4. Systemumgebung...................................................................................................
Plattform, Betriebssystem, Netzwerkkonfiguration...............................................
Windows Update, Automatic Update………………………………………………...
Einstellungen, Sec Policy, User Rights, Default Shares, Stack Hardening…...…
Windows Security Options, Windows Services………………………...…………..
7
7
8
9
10
5. Zusätzliche Softwarepakete................................................................................... 11
6. Installation / Konfiguration Softwarepakete......................................................... 13
7. Abschließende Systemeinstellungen................................................................... 15
8. Entwicklungswerkzeuge......................................................................................... 16
9. Datenbanken........................................................................................................... 17
10. CGI-Tags.................................................................................................................. 18
11. Die CGI-Applikationen............................................................................................ 19
12. Der Gesamtablauf................................................................................................... 20
13. Abschließende Bemerkungen................................................................................ 21
14. Referenzen............................................................................................................... 22
Anhang
A Datenbankdokumentation
B Quellcode seccheck.cgi
C Quellcode secscan.cgi
D Beispielbericht
Vertraulich
Seite 2
13.05.2013
Danksagung
Mein persönlicher Dank für mentale Unterstützung geht an dieser Stelle an:
d1cer, ampoz, b|ueberry, K|mberly, GUIN, nox, pingsweep, ALK und an fonerwall:
Spezielles Dankeschön an ziricon für die Mithilfe bei der Erstellung der Port-Datenbank.
Danke an folgende Coder, deren Komponenten ich in meinem Projekt verwende:
Kevin O’Brien, Fredrik Qvarfort, David Midkiff, Randy Birch und Phil Fresle.
Vielen Dank auch an die Entwickler der eingesetzen Kommandozeilenapplikationen:
Fyodor, NTSleuth und Craig Peacock.
Vertraulich
Seite 3
13.05.2013
Einleitung
Mit zunehmender Verbreitung von PC’s mit Internet-Anschluss im generellen, und der steigenden
Verfügbarkeit von Breitbandverbindungen im speziellen, steigt die potentielle Bedrohung aus dem
weltweiten Datennetz immer weiter an.
Wo in der Realen Welt Diebe, Räuber und skrupellose Gangster lauern, um uns unser Hab und Gut
abzunehmen, sehen wir unsere Computersysteme und Daten den sogenannten Script Kiddies und
Crackern in der Virtuellen Welt ausgeliefert.
Bewaffnet mit den allerneusten 0day-Exploits und Scannern jagen sie durch die endlosen Weiten des
Cyberspace, wie Schakale auf der Suche nach einem Kadaver, den sie ausweiden können. Ist die
Gelegenheit günstig, fallen Sie über jedes ungeschützte System her. Auch wenn es sich dabei nicht
um einen bekannten Webserver handelt, und sich ein „Defacement“ also nicht wirklich lohnt: jedes
System ist gut genug; und sogar von einem gehackten Windows-Rechner aus kann man Angriffe auf
weitere Systeme starten.
Sehr beliebt in der Movie-Szene ist zur Zeit das Scannen nach ungesicherten Windows-Rechnern, um
auf diesen einen XDCC-Bot (eine Art Fileserver, über IRC zu erreichen) zu betreiben.
Selbstverständlich dienen diese XDCC-Bots dann dazu, illegal kopierte Spielfilme oder ähnlich
zweifelhaftes Material zu verbreiten.
Ebenso werden ungeschützte oder ungenügend gesicherte Rechner auch dazu missbraucht, DenialOf-Service-Attacken oder andere Hackerangriffe gegen dritte Netzteilnehmer zu starten. So gibt es
einen Exploit, welcher gefundene Microsoft IIS-Server mit Unicode-Bug benutzt, um Ping Floods
gegen eine bestimmte IP-Adresse auszuführen.
Den allermeisten dieser Angriffe ist aber gemeinsam, dass sie sich relativ primitiven Techniken
bedienen, um einen Rechner zu „übernehmen“:
-
Kein Passwort definiert für das Administrator-Konto
Schwache Administrator-, Benutzer- oder Share-Kennwörter
LAN-Dienste im Internet verfügbar (Bsp. NetBIOS)
Nicht eingespielte Security-Patches und Updates
Fehlkonfigurationen in Serverdiensten
...
Das Problem bei diesen Sicherheitslücken ist, dass sie hauptsächlich dort Auftreten, wo oftmals keine
- oder nur ungenügende - Kenntnis der Problematik vorhanden ist: Beim Endanwender.
Synecta Informatik AG möchte mit SecCheck auch dem nicht-versierten Internet-Anwender die
Möglichkeit geben, sein eigenes System einer grundlegenden Sicherheitsprüfung zu unterziehen. Die
Prüfung fokussiert –marktgerecht- auf Windows-basierte Betriebssysteme, und SecCheck greift dabei
auf eine Reihe von bekannten und bewährten Security-Tools zurück.
Um Synecta SecCheck zu nutzen, benötigt der Anwender lediglich einen Browser und eine gültige
EMail-Adresse. Die Bedienung gestaltet sich dabei äusserst einfach, da SecCheck den Benutzer
schrittweise (Im Assistenten-Stil) durch den gesamten Vorgang leitet.
Das Ergebnis wird dem Anwender als deutschsprachiger HTML-Bericht am Bildschirm präsentiert,
was im Gegensatz zu vielen vergleichbaren Produkten steht, die sich meist auf englische Sprache
beschränken.
Christian Burri, April 2003
Vertraulich
Seite 4
13.05.2013
Systemarchitektur
Synecta SecCheck ist als CGI-Applikation aufgebaut. Dies heisst, das der Scanner einen Webserver
zum Betrieb benötigt. Wir verwenden in unserer Lösung den Apache-Webserver [1], als Betriebssystem kommt Windows 2000 Advanced Server (US-Version) zum Einsatz.
Eine CGI-Applikation wird prinzipiell auf einen Request vom Browser hin durch den Webserver
ausgeführt, und kommuniziert mit diesem über die CGI-Schnittstelle. Die CGI-Applikation erzeugt eine
Antwort, welche über die CGI-Schnittstelle zurück an den Webserver, und von diesem an den Browser
geleitet wird. Die Standard-CGI-Schnittstelle [2] bedient sich dabei den STDIO-Kanälen, sowie einigen
Umgebungsvariablen.
CGI-Programme oder –Skripte laufen auf der Servermaschine ab. Der
Webserver schickt eingehende Daten via STDIN (sowie Umgebungsvariablen) an das CGI-Programm. Dieses sendet seine Ausgabe via
STDOUT und STDERR an den Webserver zurück.
Nur der Webserver kommuniziert hierbei mit dem Client-Browser. Es
existiert keine direkte Verbindung zwischen Client und CGI-Programm.
Während man für CGI-Applikationen üblicherweise Skriptsprachen wie Perl, Python oder PHP
verwendet, handelt es sich bei den SecCheck-CGI’s um kompilierte Executables. Dies bringt
erhebliche Performancevorteile mit sich, da Executables im Gegensatz zu Skripten nicht zur Laufzeit
interpretiert werden müssen. Der Nachteil der schwierigeren Portierbarkeit fällt hier nicht ins Gewicht,
da weitere Microsoft-spezifische Technologien verwendet werden, und eine Portierung ohnehin nicht
vorgesehen ist.
Die SecCheck-Applikation selbst ist unterteilt in mehrere CGI-Programme, die jeweils unterschiedliche
Teilaufgaben ausführen:
seccheck.cgi
secscan.cgi
secadmin.cgi
seccheckd.exe
Registrierungs- und Login-Funktion
Scanner und Report Generator
Administration
Maintenance Daemon / Service
Im Hintergrund der CGI-Applikationen stehen drei Datenbanken:
seccheck.mdb
Speichert Konfiguration und HTML
seccheck-users.mdb Speichert User- und Scan-Daten
seccheck-ports.mdb Enthält Informationen über TCP- und UDP-Ports
Alle Datenbanken sind im Microsoft Access Format gehalten, und werden an die CGI-Programme
mittels Microsoft Jet-Engine / Data Access Objects [3] angebunden. Dies hat den immensen Vorteil,
keine SQL-Server-Lizenz vorauszusetzen. Grundsätzlich kann bei der gewählten Architektur gänzlich
auf einen Datenbankserver verzichtet werden, was auf der Scannermaschine einen zusätzlich
laufenden Service einspart und somit das Verwundbarkeitspotential reduziert.
Anmerkung:
Es ist zu Beachten, dass Administrations-CGI-Programm und Maintenance-Daemon aus zeitlichen
Gründen nicht Gegenstand dieser IPA sein konnten, und deshalb in der vorliegenden Version nicht
implementiert wurden.
Aus diesem Grund kommt als Datenbank-Editor vorläufig Microsoft Access 2000 zum Einsatz. MDB
ist das native Datenbank-Format für Access.
Vertraulich
Seite 5
13.05.2013
Vertraulich
Seite 6
13.05.2013
Die Systemumgebung
Dieser Abschnitt beschreibt Art und Konfiguration der Systemumgebung (Hardware und Betriebssystem). Bei der Betriebssystemkonfiguration werden zu tätigende Einstellung beschrieben. Wird eine
Einstellung nicht erwähnt, so ist der Vorgabewert (Default) zu verwenden.
Installation Plattform
Hardware
Operating System
Drivers
IBM NetVista
CPU: Pentium III 733MHz, RAM: 256MB, HD: 20GB, NIC: 10/100
Windows 2000 Advanced Server (US-English)
IBM NetVista Driver Package (Video, Audio, LAN, Chipset)
Betriebssystem Installationsparameter
Locale
Keyboard
Hostname
OS Admin Login
OS Admin Pass
Licensing Mode
Win2k Components
German (Switzerland), Set as System Default
German (Switzerland)
seccheck
root
XaNVi3R-1337
Per Server (250 Connections – irrelevant for our application)
Accessories and Utilities
Management and Monitoring Tools
Script Debugger
Terminal Services (Remote Admin Mode)
Netzwerkkonfiguration
Network Interface
FQ Hostname
IP Address
Subnet Mask
Default Gateway
Protocol Bindings
DNS Servers
WINS
Vertraulich
Intel PRO/100 VE
seccheck.synecta.ch
213.180.179.166
255.255.255.252
213.180.179.165
TCP/IP
Network Monitor Driver
213.180.179.170 (synectabdc.synecta.ch)
213.180.179.171 (synectant.synecta.ch)
212.90.192.190 (ns2.cybernet.ch)
Disable NetBIOS over TCP/IP
Seite 7
13.05.2013
Windows Update
OS Service Pack
Internet Explorer
Hotfixes
Service Pack 3
Version 6, Service Pack 1
810847: Cumulative Patch for IE6 SP1
Q815021: Security Update (unspecified)
814033: Important Update (Windows Update)
Q327696: Security Roll-up Package for IIS (unspecified)
Q329115: Security Update (Certificate Validation Flaw)
810030: Security Update (Microsoft VM for Windows 2000)
329170: Security Update (Security Policies)
810649: Important Update (Windows Components)
Q328310: Security Update (Remote Admin Compromise)
331935: Security Update (Denial Of Service Vulnerability)
810833: Security Update (Remote Admin Compromise)
814078: Security Update (Microsoft Jscript 5.6)
Q329414: Security Update (MDAC 2.5)
Q329834: Security Update (BOF Vulnerability in PPTP)
Q324096: Security Update (SmartHTML Interpreter)
Q323172: Security Update (Flaw in Certificate Enrollment)
W326830: Security Update (BOF Vulnerability in NetBIOS)
Q326886: Security Update (Flaw in Network Con Mgr)
Q324380: Security Update (Flaw in MS RDP Crypto)
Q323255: Security Update (BOF Vuln. in HTML Help)
MS02-008: Security Update (MSXML Disclosure Vuln.)
811630: Important Update (Windows 2000 HTML Help)
813951: IE6 SP1 Update (Authentification Flaw)
322913: Recommended Update (WM_TIMER Patch)
Q322842: Recommended Update (GDI Thread Deadlock Patch)
816093: Security Update (Microsoft Virtual Machine)
Windows Automatic Update
Notification Settings
Vertraulich
Set “Automatically download updates, and install on specified
schedule” (for unattended operation).
Set Schedule to “Every day at 3:00 AM”
Seite 8
13.05.2013
Generelle Windows-Einstellungen
Paging File Settings
Max Registry Size
System Failure
App. Response
Other Settings
[C:] 384MB – 1024MB
64MB
Write Debug Info: None
Send Administrative Alert: No
Automatically Reboot: Yes
Optimize for: Applications
Default Values
Windows Auditing Policy
Account Logon
Account Mgmnt
Logon Events
Policy Change
Privilege Use
System Events
Other Settings
Success, Failure
Success, Failure
Success, Failure
Success, Failure
Failure
Failure
Default Value (No Auditing)
Windows User Rights Assignment
Bypass Traverse
Checking
Deny Access to
Computer from
Network
Log On Locally
Other Settings
Administrators, Backup Operators, Power Users, Users
(Remove “Everyone”)
SECCHECK\Guest
SECCHECK\IUSR_SECSCAN, Administrators, Backup Operators,
Power Users, Users, SECCHECK\TSInternetUser
(Remove “Guest”)
Default Values
Windows Default Shares
C$
Do Not Share This Folder
TCP/IP Stack Hardening [4]
Registry Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
SynAttackProtect
TcpMaxHalfOpen
TcpMaxHalfOpenRetried
PerformRouterDiscovery
EnableICMPRedirect
KeepAliveTime
EnableDeadGWDetect
NoNameReleaseOnDemand
2 (Strong)
200 (Max 200 Half Open Connections)
140 (Max 140 Half Open Retrying Connections)
0 (Disabled, Key is in Interfaces\<interface>)
0 (Disabled)
300000 (milliseconds = 5 minutes)
0 (Disabled)
0 (Disabled)
All Values are decimals of Type REG_DWORD
Vertraulich
Seite 9
13.05.2013
Windows Security Options
Restrictions for
Anonymous
Connections
Audit Use of Backup
and Restore
Privilege
Clear Page File when
System shuts down
Digitally Sign Server
Communications
(when possible)
Do not display last
Username in Logon
Screen
Msg Text for Users
attempting to Logon
Msg Title for Users
attempting to Logon
Rename Admin
Account
Rename Guest
Account
Secure Channel
Require strong
session key
Unsigned Driver
installation
Unsigned Non-Driver
installation
Other Settings
No Access without explicit Anonymous permissions
Enabled
Enabled
Enabled
Enabled
This is a private computer system. Unauthorized Access is strictly
prohibited. Any connection attempts will be logged and/or
monitored. Unauthorized Access will be prosecuted to the
maximum extent possible by applicable law.
RESTRICTED ACCESS!
root
Guest_User
Enabled
Warn but allow installation
Warn but allow installation
Default Values
Windows Services
Alerter
DHCP Client
FTP Publishing Svc
WWW Publishing
IIS Admin Svc
IPSec Policy Agent
License Logging
Messenger
Print Spooler
RAS Auto Con Mgr
RAS Con Manager
Remote Registry Svc
SNMP Service
SNMP Trap Service
Telephony
Telnet
Other Services
Vertraulich
Manual
Disabled
Disabled
Disabled
Disabled
Manual
Disabled
Disabled
Manual
Manual
Manual
Disabled
Disabled
Disabled
Disabled
Disabled
Default Value
Seite 10
13.05.2013
Zusätzliche Softwarepakete
Dieser Abschnitt beschreibt alle zusätzlichen Softwarepakete, die ausser dem Betriebssystem auf der
Scanner-Maschine installiert werden. Es wird jeweils eine Kurzinfo zu jedem Softwarepaket
aufgelistet, mit Quellenangabe und Versionsnummern. Alle Applikationen wurden auf der
Scannermaschine im Verzeichnis c:\Software hinterlegt.
Web Server
Application
Source
Version
Filename
Size
Author
FoxServ (Apache, mySQL, PHP, Perl, Python)
http://foxserv.net
FoxServ 3.0 gold
FoxServ-3.0.exe
34’711’426 Bytes
FoxServ Development Team
Application
Source
Version
Filename
Size
Author
WinZIP
http://www.winzip.com
WinZIP 8.1 SR-1
winzip81.exe
1’897’672 Bytes
WinZip Computing, Inc.
Application
Source
Version
Filename
Size
Author
nmap for Windows
http://www.nmap.org
3.20-win32 (stable)
nmap-3.20-win32.zip
205’689 Bytes
Fyodor
Archiver/Packer
Portscanner
WinPcap Packet Drivers
Driver
Source
Version
Filename
Size
Author
Vertraulich
WinPcap
http://winpcap.polito.it
3.0
WinPcap_3_0.exe
440’557 Bytes
NetGroup, Politecnico Di Torino
Seite 11
13.05.2013
Antivirus
Application
Source
Version
Filename
Size
Author
Serial Number
AVG AntiVirus
http://www.grisoft.com
6.0.470 (Free Edition)
Avg6467fu_free.exe
5’683’200 Bytes
Grisoft Inc.
AVG-1-7404773-IGA
SCP Client
Application
Source
Version
Filename
Size
Author
WinSCP
http://winscp.vse.cz
2.2 Build 122
WinSCP2.exe
681’984 Bytes
Martin Prickl
Zeitsynchronisation
Application
Source
Version
Filename
Size
Author
Tardis NT
http://www.kaska.demon.co.uk/
1.4
nmapNTsp1.zip
1’253’750 Bytes
Mingham Smith H.C.
NetBIOS-Enumerator
Application
Source
Version
Filename
Size
Author
NBTEnum
http://www.packetstormsecurity.nl/
3.0
NBTEnum30.zip
670’341 Bytes
NTSleuth
SMTP-Mail-Submitter
Application
Source
Version
Filename
Size
Author
Vertraulich
bmail
http://www.packetstormsecurity.nl/
1.05
Bmailv105.zip
17’518 Bytes
Craig Peacock
Seite 12
13.05.2013
Installation/Konfiguration Softwarepakete
WinZIP
Install Type
Install Path
Settings
Guided Installation (Setup Wizard)
C:\Program Files\WinZIP
Start with WinZIP Classic
AVG AntiVirus
Install Type
Install Path
Components
Automatic Update
Resident Shield
Configuration
EMail Scanner
Configuration
Update Manager
Configuration
Other Settings
Guided Installation (Setup Wizard)
C:\Program Files\Grisoft\AVG6
AVG Resident Shield: Enabled
AVG E-Mail Scanner: Disabled
AVG Control Center: Enabled
Enabled, Server www.grisoft.com
Enable “Use heuristics”
Disable “Confirmation” (for unattended operation)
Disable “What to do next” (for unattended operation)
Disable “Check incoming messages”
Disable “Check outgoing messages”
Set “Update will start at” to 1:30 AM
Set “Update if DB is older than” to 2 days
Set “If not successful, then repeat in” to 1 day
Keep default values
nmap 3.20
Install Type
Install Path
Additional Steps
PCap Packet Driver
Other Settings
ZIP file, for manual extraction
C:\Program Files\nmapNT\
Rename nmapnt.exe to nmap.exe
Windows 2000 Version of PACKET.DLL and PACKET.SYS
(See WinPcap Documentation; reboot is sometimes required)
None
Tardis NT
Install Type
Install Path
Additional Steps
NTP Time Servers
Additional Settings
ZIP file, for manual extraction
C:\WinNT\System32\
Follow Instructions in readme.txt from ZIP archive
swisstime.ethz.ch
time.ethz.ch
time.unibe.ch
Enable „Notify other applications when time is set“
Adjust “How often the time is set” to 5 minutes
Enable “Log error messages”
WinSCP
Install Type
Install Path
Settings
Vertraulich
Executable, No installation required
C:\Program Files\WinSCP
None
Seite 13
13.05.2013
FoxServ
Install Type
Install Path
Administrator EMail
Server Port
Apache Svc
Apache Monitor Svc
MySQL Svc
Troubleshooting
Note
Guided Installation (Setup Wizard)
C:\FoxServ
[email protected]
80 (TCP)
Yes
Yes
No
All attempts to install ApacheMonitor as service failed. The reason
is unknown. Workaround: Put a shortcut to ApacheMonitor.exe into
Startup folder (Service functionality is not really required anyways).
Apache Configuration File
Config File Location
Disable PHP
C:\FoxServ\Apache\conf\httpd.conf
Comment out LoadModule directive:
# LoadModule php4_module C:\FoxServ\php\sapi\php4apache2.dll
Disable ISAPI
Comment out LoadModule directive:
# LoadModule isapi_module modules/mod_isapi.so
Disable User Folders
Comment out LoadModule directive:
# LoadModule userdir_module modules/mod_userdir.so
Comment out UserDir directive:
# UserDir "My Documents/My Website"
Set Hostname
Edit ServerName directive:
ServerName seccheck.synecta.ch:80
Prevent Web Users
from Downloading
MDB Files
Add a <Files> Section:
<Files ~ "^\.mdb">
Order allow,deny
Deny from all
</Files>
Edit CustomLog directive:
Enable Combined
Logs
CustomLog logs/access.log combined
Disable Server
Signature/Banner
ServerSignature Off
Edit CGI Script Alias
Edit ServerSignature directive:
Edit ScriptAlias directive:
ScriptAlias /cgi/ "C:\FoxServ\www\cgi-bin/"
Achtung: In C:\FoxServ\www zusätzlich die Verzeichnisse phpMyAdmin und docs löschen!
Alle nicht speziell erwähnten Anwendungen sind gemäss Default-Parameter zu installieren.
ZIP-Distributionen von Kommandozeilentools, welche manuell extrahiert werden müssen, können in
einen temporären Ordner entpackt werden. Siehe auch nächster Abschnitt.
Vertraulich
Seite 14
13.05.2013
Abschliessende Systemeinstellungen
Dieser Abschnitt beschreibt zusätzlich notwendige Konfigurationsschritte, um den SecCheck-Scanner
zu betreiben.
SecCheck User Account
Der Scanner benötigt einen eigenen User-Account: SECCHECK_USR
User mittels lokaler Benutzerverwaltung erzeugen
„Change Password At Logon“-Flag abschalten
„Password Never Expires“ einschalten
„Allow Logon To Terminal Service“ abschalten
Ein sicheres Passwort vergeben und unten Notieren
-
SECCHECK_USR Paßwort: __KL432rew78645tw___________
Der Apache-Service muss hernach via Services-Applet gestoppt, und der Service-User muss
geändert werden. Dazu im Services-Applet die Eigenschaften des Apache-Services aufrufen, und im
Register „Log On“ den Apache Service-Account von „Local System Account“ umschalten auf „This
Account“ und den Account .\SECCHECK_USR angeben. Es muß noch das Paßwort für den
SECCHECK_USR angegeben werden, danach auf „Apply“ clicken.
Das Betriebssystem führt die Änderung aus, und gibt dem SECCHECK_USR-Account das Recht, als
Service anzuloggen. Dies wird mittels einer Messagebox angezeigt, welche mit OK zu bestätigen ist.
Sind die Änderungen durchgeführt, kann der Apache-Service wieder gestartet werden.
Anmerkung:
Da der SYSTEM-User aus Sicherheitsgründen keinen Zugriff auf Network-Shares hat, sollte
SecCheck (und damit der Webserver) nicht als SYSTEM ausgeführt werden. Läuft SecCheck als
SYSTEM, können beim NetBIOS-Passworttest falsche Negative resultieren [5].
SecCheck Verzeichnisse
Es werden ausserdem drei Verzeichnisse benötigt. Da diese Verzeichnisse nicht zum öffentlichen
Zugriff bestimmt sind, werden sie ausserhalb des Document Root des Apache Servers erzeugt:
Applikationen
Daten
Temporär
C:\SECCHK_APPS\
C:\SECCHK_DATA\
C:\SECCHK_TEMP\
Von den CGI’s verwendete CLI-Tools
Datenbanken und andere Konfigurationsdateien
Zur Zwischenablage von Dateien
Vollzugriff auf diese Verzeichnisse (und deren Unterverzeichnisse und Objekte) ist für die User
SECCHECK_USR, Administrator und SYSTEM vorgesehen. Die Gruppe EVERYBODY sollte nicht
Zugriffsberechtigt sein.
Das Applikationsverzeichnis beinhaltet alle von den SecCheck-CGI’s verwendeten Kommandozeilenapplikationen, und zwar jeweils in eigenen Unterverzeichnissen:
nMap
NBTEnum
bMail
.\nmap\
.\nbtenum\
.\bmail\
Portscanner und dessen Hilfsdateien
NetBIOS-Enumerator
SMTP-Mail-Submitter
In diese Verzeichnisse sind die jeweiligen Kommandozeilen-Applikationen direkt hineinzukopieren. Im
Fall von nmap müssen alle zusätzlichen Files mitkopiert werden.
Vertraulich
Seite 15
13.05.2013
Entwicklungswerkzeuge
Die bei der Entwicklung von SecCheck verwendeten Werkzeuge werden hier aufgelistet:
CGI-Applikationen
Visual Basic 6
(Enterprise Edition)
Microsoft Standart-RAD-Entwicklungswerkzeug in der Version 6.0.
Bestandteil von Visual Studio 6.
NLINK (C.A.P.)
Erweiterung für Visual Basic 6. Erlaubt das kompilieren von
Windows-Konsolenanwendungen direkt aus VB6 heraus. Aus
privater Entwicklung (spacebitch.com softlabs [8]).
Data Access Objects
Microsoft Data Access Objects. Die Standard-Schnittstelle zu
Microsoft Access-Datenbanken für Visual Basic-Programme.
Enthalten in VB6 Enterprise.
CGI4VB
Public-Domain Library zur Unterstützung des CGI-Interfaces in
Visual Basic Anwendungen. Wir benutzen eine leicht modifizierte
Version (siehe Quellcode).
Datenbanken
Access 2000
Microsoft Access 2000 ist das Standart-OfficeDatenbankprogramm von Microsoft.
Bestandteil von Office 2000 Premium Edition.
HTML/Javascript
Arachnophilia
Bekannter Freeware-HTML-Editor.
Verfügbar im Internet, bezogen via Tucows.com.
Windows Terminal
Services
Microsoft Windows Terminal Services bieten Remote-GUI-Zugriff
auf einen Windows-Rechner. Wurde während der Entwicklung
intensiv verwendet zum Zugriff auf Scanner- sowie Testmaschine.
Dient auch zur Fernwartung der Scannermaschine.
Bestandteil von Windows 2000 Server und Advanced Server.
WinSCP
Der Freeware-SCP-Client für Windows stellt eine sichere
Alternative zur Installation eines FTP-Servers dar. SCP wurde
verwendet, um Dateien zwischen Entwicklungs- und ScannerMaschine zu übertragen (unter Zuhilfenahme eines vorhandenen
Linux-Servers mit SSH-Dienst).
Tools
Vertraulich
Seite 16
13.05.2013
Datenbanken
Der genaue Aufbau der Datenbanken kann der MDB-Dokumentation im Anhang entnommen werden.
An dieser Stelle soll nur Zweck und Inhalt der Datenbanken erläutert werden.
Die Konfigurations-Datenbank (seccheck.mdb)
Die secccheck.mdb-Datenbank speichert Text- , HTML-Vorlagen und Einstellungen ab.
Die Textvorlagen beschränken sich in der vorliegenden Version auf Text und Betreffzeile des
Passwort-Emails. Diese befinden sich in der Tabelle TBL_TEXT.
Die CGI-Applikationen erzeugen die angezeigten HTML-Seiten on-the-fly. Dies bedeutet, dass für jede
HTML-Seite eine Vorlage (Template) aus der Datenbank geladen wird, und bestimmte Elemente (hier
CGI-Tags genannt) in der Vorlage -vor der Auslieferung an den Client-Browser zwecks Anzeige- mit
aktuellen Daten ersetzt werden. Die Vorlagen befinden sich in der Tabelle TBL_HTML.
Die dritte Tabelle, TBL_CONFIG, speichert Konfigurationsinformationen wie die EMail-Adresse des
Scanner-Administrators, die DNS/IP-Adresse des Mailservers, den Mailserver-Port und ähnliches. Es
gibt auch ein Flag, um den Scanner vorübergehend abzuschalten.
Die User-Datenbank (seccheck-users.mdb)
In der seccheck-users.mdb-Datenbank befindet sich die Benutzertabelle, sowie die Scan-Tabelle.
Die Benutzertabelle, TBL_USERS, speichert benutzerspezifische Daten wie EMail-Adresse, Passwort,
Session Key, Session Key Salt, sowie einige Timestamps.
Die Tabelle TBL_SCANS speichert alle auf einen Scan bezogenen Daten ab. Dies beinhaltet
Zeitstempel, Eigentümer des Scans (Verknüpfung mit der Benutzertabelle), die Resultate der
durchgeführten Tests sowie einige weitere Attribute.
Aus dem Inhalt der TBL_SCANS-Tabelle wird am Ende des Scans der HTML-Bericht erzeugt.
Die Port-Datenbank (seccheck-ports.mdb)
Die Port-Datenbank enthält Informationen zu TCP- und UDP-Ports:
-
ARIN Service Name
Beschreibung
Weiterführender Link (wenn Verfügbar)
Sicherheits-/Gefahren-Index
Diese Informationen werden zur Aus- und Bewertung der ausgeführten TCP/UDP-Portscans
verwendet.
Hinweis: die Port-Datenbank wurde zur Verfügung gestellt von spacebitch.com softlabs [8]
Achtung:
Damit SecCheck Zugriff auf die Datenbanken hat, ist es notwendig, die Datei MSDAO36.DLL in’s
System32-Verzeichnis der Scannermaschine zu kopieren. Die DLL muss danach durch einen Aufruf
von Regsvr32 in der Systemregistrierung eingetragen werden.
Vertraulich
Seite 17
13.05.2013
CGI-Tags
Es gibt generell gültige (globale) CGI-Tags, welche grundsätzlich in jeder Vorlage verwendet werden
können. Sie sind immer gültig, und können von der CGI-Applikation in jedem Fall sinnvoll ausgefüllt
werden:
$SCRIPT_URL
$SESSION_KEY*
$USER_ID*
Die komplette URL der aktuellen CGI-Applikation
Aktuell gültiger Session-Key
Verschlüsselte User-Kennung (Email-Adresse)
* Nur für angemeldete User innerhalb secscan.cgi gültig
Ausserdem existieren in einigen Templates lokale Tags, welche nur für die jeweilige Vorlage Gültigkeit
haben:
$ERROR_REASON
Fehlermeldungstext
Grund oder Fehlerbeschreibung
AccountExists
$USER_EMAIL
Benutzer-Email-Adresse im Klartext
ConfirmScan
$TARGET_IP
Zieladresse des Scans
SetScanParameters $TARGET_IP
Zieladresse des Scans
ErrorPage
$ERROR_MESSAGE
ScanRunning
$PROGRESSBAR_IMAGE
ScanReport
$REPORT_DATE
Vertraulich
Name der Progressbar-Grafik
Datum der Berichterstellung
$REPORT_TIME
Zeit der Berichterstellung
$USER_EMAIL
Email-Adresse des Auftraggebers
$TARGET_IP
Ziel-IP, die gescannt wurde
$TARGET_RDNS
Reverse-DNS-Hostname des
Zielrechners
$TARGET_OS
Nmap Operating System Guess
$TARGET_UPTIME
Nmap Target Uptime Guess
$FIREWALL_INFO
Firewall Detection Status
$TARGET_TCP_PORTS
Tabellenelemente für TCP-Portliste
$TARGET_UDP_PORTS
Tabellenelemente für UDP-Portliste
$NETBIOS_NAME
NetBIOS-Name des Zielrechners
$ACCOUNT_LOCKOUT
Account Lockout Threshold
$NETBIOS_SHARELIST
NetBIOS-Shares-Liste
$NETBIOS_ACCOUNTLIST
NetBIOS-Account-Liste
$TARGET_PASSWORD_TABLE Tabellenelemente der Passwortliste
$RECOMMENDATION
Generelle Empfehlungen
Seite 18
13.05.2013
Die CGI-Applikationen
Wie bereits erwähnt, besteht SecCheck im wesentlichen aus drei CGI-Applikationen, wovon hier nur
zwei beschrieben werden, da das dritte Modul gegenwärtig nicht implementiert ist.
Hinweis: Einige Komponenten, die verwendet wurden, stammen von Planet Source Code [7].
Login / Registrations – CGI (seccheck.cgi)
Das Login/Registrations-CGI dient als „Vordertüre“, es wird nach einem Aufruf des Scanners im
Webbrowser angezeigt. Ein neuer Benutzer kann sich durch die Bekanntgabe seiner E-Mail-Adresse
registrieren. Stimmt er den Nutzungsbedingungen zu, so erstellt seccheck.cgi einen neuen Eintrag für
den User in der Userdatenbank. Ausserdem erzeugt seccheck.cgi das Paßwort für den neuen
Benutzer, und verwendet anschließend bmail.exe, um das Paßwort dem Benutzer per Email
zuzustellen. Achtung: Dieser Vorgang benötigt einen externen SMTP-Server.
Der Benutzer kontaktiert daraufhin erneut das Login/Registrations-CGI und gibt seine EMail-Adresse
und sein per Email erhaltenes Paßwort an. Das Login-CGI erzeugt daraufhin einen gültigen SessionKey für den User, und leitet diesen an das Scanner-CGI weiter.
Scanner-CGI (secscan.cgi)
Dies ist der eigentliche Security-Scanner und gleichzeitig der Report-Generator. Der Scanner verlangt
nochmals eine Bestätigung der Prüfung, und erlaubt anschließend, zwischen abgesichertem oder
komplettem Scan zu wählen.
Der Abgesicherte Modus dient nur zur Problemvermeidung, und sollte nach Möglichkeit nicht
verwendet werden.
Im Abgesicherten Modus verzichtet SecCheck auf einen UDP-Portscan, und außerdem werden bei
der NetBIOS-Enumeration keine Paßwörter getestet. Beim TCP-Scan benutzt SecCheck im
Abgesicherten Modus den gewöhnlichen TCP-Connect() Modus.
Beim Vollständigen Scan hingegen wird ein SYN-Stealth TCP Portscan durchgeführt, kombiniert mit
einem UDP-Scan und einer Paßwortanalyse bei der nachfolgenden NetBIOS-Enumeration.
Der NetBIOS-Passworttest wird übrigens nur durchgeführt, wenn der Account Lockout Treshold auf
null steht bzw. nicht definiert wurde. Dies ist eine Vorsichtsmaßnahme, um versehentlich gesperrte
Benutzeraccounts zu vermeiden.
Die Ergebnisse werden in der User-Datenbank zwischengespeichert (Tabelle TBL_SCANS), und
anschließend vom Reporting-Modul (in secscan.cgi integriert) ausgewertet. Alle verfügbaren
Informationen werden dem Benutzer im darauffolgenden Schritt am Browser im HTML-Format
präsentiert.
Wurde ein vollständiger Scan durchgeführt, gibt SecCheck auch einen Sicherheits-Index aus, welcher
das Gefährdungspotential des geprüften Rechners in Zahlen zu fassen versucht. Grundsätzlich gilt
dabei: je mehr Informationen der Scanner über den Zielrechner in Erfahrung bringen kann, desto
höher wird der index ausfallen.
Ein hoher Index steht somit für einen unsicheren Rechner, während ein niedriger Index einen sicheren
Rechner kennzeichnet. Die Indexberechnung basiert auf dem Durchschnittswert der Klassifizierungen
aller gefundenen Ports. Zusätzlich werden für bestimmte „Sicherheitsverstöße“ oder
Fehlkonfigurationen Strafpunkte vergeben. Diese können relativer (keine Firewall gefunden ergibt
einen 15% Penalty), oder absoluter Natur sein (kein Administratorpaßwort gibt 2 Extra-Strafpunkte).
SecCheck gibt auch eine Liste von Empfehlungen aus, basierend auf gefundenen Sicherheitslücken
und weiteren Scan-Ergebnissen.
Vertraulich
Seite 19
13.05.2013
Der Gesamtablauf
Zur Registration muss der Anwender eine gültige Email-Adresse angeben. An diese schickt SecCheck
das automatisch generierte Benutzerpasswort. Die Email-Registration soll helfen, allfälligem
Missbrauch des Scanners vorzubeugen.
Nach erfolgter Registration kann sich der Benutzer zum Scan anmelden.
Daraufhin wird vom Benutzer eine Bestätigung für den anstehenden Scan verlangt. Erfolgt die
Bestätigung, kann der Scantyp (Vollständig/Abgesichert) ausgewählt werden.
Daraufhin wird der Scan gestartet, eine Fortschrittsanzeige erscheint.
Nach Abschluss des Scans kann sich der Benutzer den HTML-Bericht mit den Prüfungsergebnissen
anzeigen lassen. Vom Bericht aus kann der Scan wiederholt, oder aus dem System ausgeloggt
werden.
Beim Ausloggen (Abmelden), wird der Benutzer auf eine Seite mit Links geleitet. Es ist auch die
zukünftige Option einer Weiterleitung auf eine bestimmte, existierende HTML-Seite denkbar. Dies
könnte eventuell vom Referrer abhängig gemacht werden, unter welchem der Kunde den Scanner
ursprünglich aufgerufen hat.
Vertraulich
Seite 20
13.05.2013
Abschliessende Bemerkungen
Die Entwicklung von SecCheck verlief einigermaßen unproblematisch, was wohl auch auf die Qualität
der verwendeten Tools und Komponenten schließen läst.
Einige Probleme und Besonderheiten, die erwähnenswert sind:
-
ApacheMonitor läuft auf der Scanner-Maschine nicht als Service, der Grund ist unklar. Da
dies aber ohnehin nicht zwingend notwendig ist, wurde das Programm in das AutostartVerzeichnis des Administrators kopiert.
-
Bmail.exe hat Probleme mit der Reihenfolge der Kommandozeilenargumente; Eine
akzeptable Reihenfolge mußte durch Trial-and-Error gefunden werden.
-
Eigentlich kein Problem, sondern ein Segen: Die offizielle Windows-Version von nmap ist
während der Entwicklung erschienen. Somit konnte auf die (sehr instabile) nmapNTVersion von eeye.com verzichtet werden. Als Folge daraus werden Scans sofort nach
Eingang des Auftrages ausgeführt. Der Bericht muß nicht mehr per Email zugestellt
werden, sondern kann sofort als HTML am Browser des Anwenders angezeigt werden.
-
NBTEnum.exe hat keinen Zugriff auf Remote-Shares im SYSTEM-Userkontext: Dies ist
ein Sicherheits-Feature von Windows NT. Dem Apache-Service (unter dessen Kontext
auch gestartete CGI-Programme ausführen) mußte deshalb ein neuer Benutzer
zugeordnet werden, was aber ein neues Problem (siehe Unten) verursachte.
-
Da nur dem SYSTEM-User das Recht, mit dem Desktop zu interagieren zugeteilt werden
kann, der SYSTEM-User aber aufgrund des oben beschrieben Share-Problems nicht
verwendet werden darf, mußte der eingesetzte PRNG [6] modifiziert werden. Diese
Modifikation betrifft alle Teile, die mit dem Desktop interagieren. Diese wurden aus
Zeitgründen einfach auskommentiert, was die Sicherheit des PRNG etwas reduziert. In
einem späteren Schritt sollten neue Entrophiequellen hinzugefügt werden; beispielsweise
könnten Error-Counters der Netzwerkkarte verwendet werden.
-
Zeitproblem – Aufgrund des sehr engen Zeitrahmens der IPA und der relativ hohen
Komplexität des Produktes mußten das ursprünglich vorgesehene Administrations-CGIProgramm, sowie der Maintenance Daemon als Bestandteile der IPA gestrichen werden.
Aus dem gleichen Grund gestaltet sich der Umfang der verwendeten Port-DB relativ
bescheiden. An allen drei Punkten soll in Zukunft aber noch weitergearbeitet werden.
Von diesen kleineren Problemen einmal abgesehen, ist im Zuge dieser IPA dennoch ein beachtliches
Werk entstanden – ich war selber beeindruckt, als ich den ersten Report gesehen habe. Ich hoffe,
dass der Synecta SecCheck vielen Internet-Usern dabei helfen wird, ihre Systeme besser abzusichern, und dass der kostenlose Security-Checker viele neue Besucher –und potentielle Kunden- auf
die Synecta-Homepage bringen möge.
In diesem Sinne, ANNUIT COEPTIS!
Vertraulich
Seite 21
13.05.2013
Referenzen
[1]
Apache Webserver
http://www.apache.org
[2]
Common Gateway Interface
http://hoohoo.ncsa.uiuc.edu/cgi/overview.html
[3]
Microsoft Data Access Objects (DAO 3.6)
http://msdn.microsoft.com/library/default.asp?url=/library/enus/odeomg/html/deovrmicrosoftdataaccessobjectsdao36objectlibrary.asp
[4]
Hardening Windows 2000 TCP/IP Stack against Denial Of Service
http://support.microsoft.com/?kbid=315669
[5]
Restrictions of Local System User Account
http://msdn.microsoft.com/library/default.asp?url=/library/enus/dllproc/base/localsystem_account.asp
[6]
Ethereal Chaos Generator (Cryptographically Strong PRNG)
http://www.a1vbcode.com/app.asp?ID=1406
[7]
Planet Source Code, Public Source Code Repository
http://www.pscode.com
[8]
spacebitch.com softlabs
http://softlabs.spacebitch.com/
Vertraulich
Seite 22
13.05.2013

Documentos relacionados