[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
13. Opsporen van het binnendringen in je systeem
Inhoud:
13.a. Aide (Advanced Intrusion Detection Environment)
Aide is een hostgebaseerde IDS (vrij alternatief voor Tripwire). Indien je
Tripwire kent dan zou je geen moeilijkheden mogen hebben met de configuratie
van Aide.
Het configuratiebestand is gebaseerd op reguliere expressies, macros en regels
voor bestanden en directories. We hebben de volgende macro's:
| Macro |
Uitleg |
Syntax |
| ifdef |
Indien gedefinieerd |
@@ifdef "name" |
| ifndef |
Indien niet gedefinieerd |
@@ifndef "name" |
| define |
Definieer een variabele |
@@define "name" "value" |
| undef |
Undefinieer een variabele |
@@undef "name" |
| ifhost |
Indien "hostname" |
@@ifhost "hostname" |
| ifnhost |
Indien niet "hostname" |
@@ifnhost "hostname" |
| endif |
Endif moet gebruikt worden na alle macro's behalve define
en undef |
@@endif |
Deze macro's zijn zeer handig indien je meer dan 1 Gentoo pc hebt en je wil
Aide op alle pc's gebruiken. Niet alle machines bevatten immers dezelfde
services of dezelfde gebruikers.
Vervolgens hebben we een verzameling van eigenschappen van bestanden of
directories waarop we controleren. Dit zijn een combinatie van permissies,
bestandseigenschappen en cryptografische hashes of checksums.
| Flag |
Uitleg |
| p |
permissies |
| i |
inode |
| n |
aantal links |
| u |
gebruiker |
| g |
groep |
| s |
grootte |
| b |
hoeveelheid blokken |
| m |
mtime |
| a |
atime |
| c |
ctime |
| S |
controleer op groeiende grootte |
| md5 |
md5 checksum |
| sha1 |
sha1 checksum |
| rmd160 |
rmd160 checksum |
| tiger |
tiger checksum |
| R |
p+i+n+u+g+s+m+c+md5 |
| L |
p+i+n+u+g |
| E |
Lege groep |
| > |
Groeiende logbestand p+u+g+i+n+S |
En indien Aide gecompileerd is met mhash ondersteuning heeft het nog enkele
andere mogelijkheden:
| Flag |
Uitleg |
| haval |
haval checksum |
| gost |
gost checksum |
| crc32 |
crc32 checksum |
Nu kan je je eigen regels aanmaken gebaseerd op bovenstaande vlaggen door deze
als volgt te combineren:
Codevoorbeeld 1.1: Instellen van AIDE-regel |
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
|
Het laatste wat we nu moeten doen is kijken hoe je regels toevoegt voor een
bestand of directorie. Eenvoudig gezegd geef je gewoon de bestandsnaam of
directorie naam in en dan de regel. Aide zal dan alle bestanden recursief
toevoegen tenzij je iets anders specifieert:
| Flag |
Uitleg |
| ! |
Voeg dit bestand of directorie niet toe |
| = |
Voeg deze directorie toe, maar niet recursief |
Laten we eens een volledig voorbeeld beschouwen:
Codevoorbeeld 1.2: /etc/aide/aide.conf |
@@ifndef TOP DIR
@@define TOPDIR /
@@endif
@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif
@@ifhost smbserv
@@define smbactive
@@endif
# De locatie van de database waarvan gelezen moet worden
database=file:@@{AIDEDIR}/aide.db
# De locatie van de database waarnaartoe geschreven moet worden
database_out=file:aide.db.new
verbose=20
report_url=stdout
# Regel definities
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm
|
In bovenstaand voorbeeld specifieren we enkele macro's alsook waar de
hoofddirectorie is en waar de aide-directorie is. Aide controleert
/etc/aide/aide.db voor de bestandsintegriteit. Maar wanneer er
geupdate moet worden of wanneer een nieuw bestand aangemaakt wordt wordt deze
opgeslagen in /etc/aide/aide.db.new. Dit is omdat het eerste
db-bestand niet zou overschreven worden. De optionele report_URL is een
"nog te implementeren" feature dat nu nog geen resultaat geeft, maar
de bedoeling is dat er in de toekomst de URL komt van een e-mailadres of van
een script waarnaartoe gemaild kan worden of welke uitgevoerd kan worden.
Na de configuratie moet je je eigen db-bestand aanmaken door aide -i uit
te voeren, en dan het bestand /etc/aide/aide.db.new naar
/etc/aide/aide.db te kopieren. Daarna voeg je de controle toe aan
cron door crontab -e als root uit te voeren.
Nota:
Afhankelijk van je CPU en de vlaggen die gebruikt hebt kan de controle
een tijdje duren.
|
Codevoorbeeld 1.3: aide -u als een cronjob instellen |
0 3 * * * /usr/bin/aide -u
|
Nota:
Herinner je eraan om je mailserver te configureren zodat je de root's
mail krijgt. Anders zal je nooit Aides rapporten ontvangen.
|
In bovenstaand geval wordt aide om 3am uitgevoerd. Dit is omdat ik niet de
gebruikers wil lastig vallen wanneer deze werken. Ik gebruik tevens de
-u (Update) optie in plaats van de -C (Check). De reden daartoe
is dat -u de bestanden controleert en niet de originele database
overschrijft waardoor je tijd wint aangezien het enige wat je moet doen
wanneer een bestand veranderd is is het aidebestand kopieren. Controleer
gewoon de aanpassingen om te zien of jij het wel bent die de verandering heeft
doorgevoerd in plaats van een hacker alvorens je aide aanpast aan de nieuwe
situatie.
Nu is er een probleem met het opslaan van de database op je bestandssysteem
aangezien de hacker (als hij weet dat aide geinstalleerd is) waarschijnlijk zal
proberen om de db-bestanden aan te passen of te verwijderen. Dus is het
belangrijk dat deze bestanden op een CD of een ander medium staan (origineel of
als kopie) alsook de aide binaire bestanden (want die kan een hacker ook
aanpassen). Dus maak je best een CD of een ander medium en maak je het best een
kopie van de .db bestanden en de aide binaire bestanden.
Meer informatie vind je op aide's projectpagina
(Engels).
13.b. Snort
Codevoorbeeld 2.1: Aanmaken van de gebruiker snort |
# user add snort -d /var/log/snort -s /dev/null
# chown -R snort /var/log/snort
|
Codevoorbeeld 2.2: /etc/conf.d/snort |
PID FILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOG DIR="/var/log/snort"
CO NF=/etc/snort/snort.Cong
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"
|
Codevoorbeeld 2.3: /etc/snort/snort.conf |
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any
var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_decode: 80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute
preprocessor telnet_decode
include classification.config
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules
|
Codevoorbeeld 2.4: /etc/snort/classification.config |
config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1
# Nieuwe classificaties
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1
|
Meer informatie kan je vinden op Snorts
website (Engels).
13.c. Het ontdekken van slecht werkende software met chkrootkit
HIDS zoals AIDE zijn een goede manier om veranderingen op te merken in jouw
systeem, maar het zal nooit pijn doen om nog een andere beveiliging voor je pc
te gebruiken. chkrootkit is een programma dat gewone system files
controleert op hun aanwezigheid van rootkits (software die gemaakt is om
aanvalacties wegsteekt en hem toelaat andere slecht-werkende software te
instaleren. Waar chkrootkit en alternativen zoals rkhunter) zijn
handige gebruiksinstrumenten, bijde voor systeemonderhoud en opsporen van
invallen na een aanva, ze kunnen niet verzekeren dat je systeem veilig is.
De beste manier om chkrootkit te gebruiken aanvallen te ondekken is
gewoon het te starten en best ook regelmatig via cron. Om te starten; emerge
app-admin/chkrootkit. chkrootkit kan ook in de command line
worden opgestart met het gelijknamige command, of via cron met zo'n uitzicht.
Codevoorbeeld 3.1: Plan chkrootkit als een cronjob |
0 3 * * * /usr/sbin/chkrootkit
|
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|
|