Phân ch Log ( 1)
Tequila (VietHacker.org Translator Group Leader)
Compose by hieupc
Trong lĩnh vc computer forensics, thì dường như máy tính ca bn là hin trường nơi xy ra ti phm.
Nhưng không ging như phân tích v loài người, các nhà phân tích v máy tính thường làm vic vi 1 cái
máy tính đang làm vic mà có th đưa ra các du hiu mà nhng th khác có th sai lm. Chương này
chúng ta s làm vic vi vic phân tích log, mà có th được coi như là 1 nhánh ca forensics. Mt file log
riêng r có th rt quan trng và chúng ta phi quyết định đưa chúng vào các phn khác nhau.
Nhng gì là ví d cho nhng file log? Chúng ta có th phân loi file log bng các thiết b mà làm vic da
trên chúng, bi vì nhng thiết b thường quyết định loi thông tin cha trong các file. Ví d, các file log ca
host (như Unix, Linux, Windows, VMS…) là khác nhau t log ca các ng dng network khácnhau (víd
như sn phm switchs, routers hoc các thiết b mng khác ca Cisco, Nortel, Lucent…). Tương t như
vy, các log ca các ng dng an toàn thông tin (như firewall, IDS, thiết b chng ddos, h thng phòng
b…) cũng rt khác nhau trên c phương din host và các log mng. Trong thc tế, các thiết b an toàn
mng hin nhiên to nên mt s phân b không th tưởng tượng được nhng gì chúng có th ghi li và
định dng mà chúng có th to ra. Sp xếp t các địa ch IP đơn gin cho ti nhng giao dch đầy đủ phc
tp trên mng, các thiết b an toàn h thng thường to nên mt giá tr rt to ln nhng thông tin rt thú v,
c nhng thông tin v nhng s vic hp l và không hp l. Làm thế nào để chúng ta có th tìm được đâu
là nhng s vic không được cho phép. Làm thế nào để chúng ta hc được v nhng xâm nhp trong quá
kh và thm chí là tương lai t logs? Chúng ta hoàn toàn có th hi vng vào vic tìm kiếm trong hàng
gigabytes file log để tìm ra nhng hot động mà không được phép xy ra khi mà nhng hacker đã rt là cn
thn không để li mt dư tha nào? Chương này s tr li cho chúng ta tt c nhng câu hi đó.
18.1 Cơ bn ca vic phân tích Log
Phân tích các log hoc các chui thng kê là mt ngh thut ca vic trích dn đầy đủ ý nghĩa thông tin
đưa ra kết lun v mt trng thái an toàn t các bn ghi thng kế nhng s vic được sn sinh bi máy
tính. Phân tích log không phi là 1 khoa hc, nhưng ngày nay, vic tin tưởng vào k năng phân tích độc lp
và trc quan cũng như tính cht may mn trong vic phân tích log cht lượng cũng là mt khái nim khoa
hc. Định nghĩa vic phân tích log có th nghe rt khô khan, nhưng quan trng là rút ra mt “Kết lun có ý
nghĩa”. Nhìn mt cách đơn gin vào các file log không phi là phân tích, bi vì hiếm có nhng cái gì ngoài
nhng s nhàm chán và dường như chng liên quan gì đến nhau. Trong trường hp mt thiết b 1 người
s dng vi rt ít các hot động, tt c nhng bn ghi log mà chưa được nhìn trước là rt it nghi ng,
nhưng trong thc tế li không d dàng như vy.
Hãy th xem mt phân tích log cho nhng telnet chung. Đầu tiên, hãy nhìn qua toàn b log cn phi phân
tích(ging như file log ca mt thiết b xâm nhp đối vi 1 thông báo tn công thành công) và to quan h
vi nhng ngun thông tin khác. Vic to quan h có nghĩa là thc hin nhng thao tác bng tay hoc t
động để thiết lp nên mi quan h gia các s kin tưởng chng không liên quan xy ra trên mng. Các s
kin xy ra trên các thiết b khác nhau trong các thi đim khác nhau có th to nên nhng quan h tc thi
(xut hin trong thi gian ngn). Đây có phi là mt l hng cho k tn công có th phát hin được? Có
phi các quy tc ca các h thng phát hin xâm nhp đưa ra 1 d báo sai. Có phi là mt ai đó trong s
các nhân viên ca bn đang th quét các l hng trong mng ca bn? Tr li cho nhng câu hi tương t
như vy là rt cn thiết trước khi lp kế hoch phn ng cho các thông báo ca IDS. Các c gng kết ni,
nm bt các dch v và nhng sai lm đa dng ca h thng thường yêu cu thc thi rt nhiu nhng vic
to mi quan h vi nhng ngun thông tin khác nhau theo nhiu mc để đạt được thông tin có ý nghĩa đầy
đủ nht.
18.2 Nhng ví d v log
Trong phn này chúng ta s lt ví d trên các file log đã được tng hp trên các h thng Unix và sau đó là
Windows.
18.2.1 Unix
Vic ph biến các h thng Unix thương mi và min phí ngày càng phát trin khiến cho k năng phân tích
Unix log cũng là mt ưu tiên phát trin hàng đầu. Các h thng Unix và Linux to ra mt lot các thông báo
(ging như các log h thng), thường tn ti dưới các dng plain text, được định dng như trong ví d sau:
<date / time> <host> <message source> <message>
Ví d như :
Oct 10 23:13:02 ns1 named[767]: sysquery: findns error (NXDOMAIN) on ns2.example.edu?
Oct 10 23:17:14 ns1 PAM_unix[8504]: (system-auth) session opened for user anton by (uid=0)
Oct 10 22:17:33 ns1 named[780]: denied update from [10.11.12.13].62052 for "example.edu"
Oct 10 23:24:40 ns1 sshd[8414]: Accepted password for anton from 10.11.12.13 port
2882 ssh2
Ví d này rt quen thuc cho ai qun tr h thng Unix trong ít nht 1 ngày. Định dng này bao gm các
trường sau:
Timestamp
Gi h thng ca thiết b khi ghi nhn log (trường hp log 1 đăng nhp t xa) hoc ca thiết b to log
(trong trường hp t to log).
Hostname or IP address of the log-producing machine
Hostname có th là mt tên domain name cht lượng (FQDN) ví d như ns1.example.edu hoc ch là tên
máy ging như là ns1 trong ví d trên.
Message source
Ngun có th là mt phn mm h thng (sshd hoc là named trong ví d trên) hoc là 1 b phn (ví v
như PAM_unix) mà sn sinh ra thông báo log.
Log message
Thông báo log có th có nhiu định dng khác nhau, thông thường bao gm tênng dng, các biến tình
trng đa dng, địa ch IP ngun, giao thc … Thnh thong định danh tiến trình ca mt tiến trình có th to
ra nhng bn ghi log và được ghi vào các ch trng.
4 thông báo log sau đây được ch ra, theo th t:
- Có vn đề xy ra đối vi DNS server th 2
- Mt người s dng , (anton) đã đăng nhp vào thiết b
- Mt truy cp DNS b cm xut hin.
- Mt người s dng (anton) đã được cung cp mt khu an toàn h thng đang đăng nhp t xa t địa ch
IP 10.11.12.13.
18.2.1.1Phân tích log h thng Unix
Log 1h thng Unix được qun lý bi1 daemon syslog. Thiết b daemon này đầu tiên xut hin trong nhng
h thng BSD đầu tiên. Chương trình và các thành phn ca h điu hành có th đưa các s kin vào
syslog thông qua h thng các lnh, mt socket (/dev/log), hoc mt kết ni mng s dng UDP cng 514.
Các logging ni b thì thường đuc thc thi thông qua API.
Ging như trong trang hướng dn syslogd, “logging h thng được cung cp bi 1 thiết b nhn syslogd t
các ngun BSD,. Các h tr cho logging kernel được cung cp bi tin ích klogd (trên Linux), cái mà cho
phép logging kernel có th được qun lý trong nhng mu chun riêng hoc ging như 1 máy trm ca
syslogd. Trong mu chun riêng, klogd chuyn các thông báo kernel ra 1 file, còn trong mu kết hp, nó
đẩy thông báo ti 1 daemon syslogd.
Các kết ni t xa đòi hi daemon syslog phi đưc thiết lp để lng nghe trên UDP cng 514 (cng chun
ca syslog) cho các giao tiếp thông tin. Để cho phép 1 đăng nhp t xa, bn chy syslogd –r trong Linux.
Chc năng này được mc định là cho phép trong Solaris và mt vài môi trường Unix khác. Các thông báo
ti các mng dưới dng plain text và không có liên quan đến thi gian nào (Nó được đánh du bi thiết b
nhn). Các thông báo ti cũng bao gm các giá tr thc tếđơn gin, được gii mã bi daemon syslog.
Các log nhn đuc hoc ni b được daemon syslog chuyn ti nhiu đích khác nhau (có th là các file,
các thiết b, các chương trình, điu khin h thng hoc nhng h thng syslog khác) theo th t và nhng
tin nghi khác. Nhng tin nghi khác bao gm auth, authpriv, cron, daemon, kern, lpr, mail, mark, news,
security (cũng ging như auth), syslog, user, uucp và local0 qua local7. Hướng dn syslog cũng đồng thi
cung cp danh sách theo th t ca syslog (sp xếp da trên độ quan trng): debug, info, notice, warning,
warn (same cũng ging như warning), err, error (tương t như err), crit, alert, emerg, và panic (tương t
như emerg). Th t error, warn, and panic hin nay vn được s dng cho các h thng syslog theo tuân
th các th t.
File thiết lp syslog thường nm trong /etc/syslog.conf. Ging như được ch ra dưới đay, nó cho phép bnc
ó th thiết lp các sp xếp thppng báp theo các file khác nhau và các cu trúc khác nhau:
*.* @log host
kern.* /dev/console
*.crit anton,other,root
local2.* |/dev/custom_fifo
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* /var/log/maillog
cron.* /var/log/cron
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
Các thông báo có th được trc tiếp đưa đến các file cc b (ging như /var/log/messages), gi ti các
thiết b (như a /dev/console), hoc được ph biến ti tt c hoc là ch nhng ngui s dng được la chn
(anton, other, root) trong các lnh tương t hoc các lnh wall shell.Thêm vào đó, thông đip có th được
chuyn ti mt remote host (nhìn đon log host tên) và trc tiếp ti các đường dn đã được định danh
hoc nhng FIFOs khác (trong ví d trên là /dev/custom_fifo) được to bi lnh mknod hoc mkfifo. Thm
chí nhng thông đip mà được ti t mng có th được chuyn tiếp ti nhng thiết b khác, được các thiết
b syslog daemon cu hình để làm nhim v này (ging như syslogd –h trong Linux). Vic chuyn tiếp được
mc định là không cho phép bi vì nó th gây nên s tác nghn mng và nhng vn đề khác (bi vì nó
nhân đôi lưu lượng trên đường truyn).
Các đăng nhp t xa được ghi nhn là mi li ln cho nhng người mà mong mun tp trung tt c các
bn ghi thu nhn được vào mt ch. Các thc thi syslog t các phiên bn Unix khác nhau đều có th làm
vic tt. Bn có th dùng ln nhiu box Unix trong 1 nn tng syslog.
Mt vài vn đề v syslog s xut hin mt cách hin nhiên trong khi làm vic. Đây là 1 danh sách ngn:
1. Định dng ca thông đip log là mâu thun vi nhau ng dng và h điu hành. Mt phn là thi gian,
host, phn còn li ca thông đip là mt mu t do, điu này có th to ra rt nhiu khó khăn nếu tt c các
thông đip khác nhau đều hin th.
2. Vic lc các thông đip theo theo th t và kh năng không tht hiu qu bi vì nó có th dn đến mt s
log file tr thành st rác ca mt m hn tp các loi thông đip. Không có cách nào để lc các thông đip
theo ni dung ca chúng và thm chí vic điu chnh th t hoc kh năng ca mt chương trình to log
cũng thường xuyên chng t nhng th thách đó.
3. Các chuyn dch trên mng da trên UDP là không th tin tưởng được, nếu nhng cái nhn được kết
thúc ca 1 liên kết UDP (không phi là kết ni, bi vì UDP còn chưa kết ni) mà gim xung, thì thông đip
s b mt mà không có cơ hi để phc hi li.
4. Các chuyn dch trên mng da trên UDP thường được din ra dưới dng plain text (không được mã
hóa), không được xác thc và rt ít được bo v. Đây có th là mt thm ha v an toàn thông tin. Tuy
nhiên thông thường thì đây không phi làm 1 vn đề trm trng bi syslog được s dng trong các mng
ni b có th tin tưởng được hoc thm chí là 1 mng LAN được ch định qun lý.
5. Khi chuyn tiếp các thông đip t host ti host, ch có trm cui cùng mi có th nhìn thy thông đip.
Bi vì, nếu 1 thiết b gi các thông đip ti nhng máy khác - mà có th chuyn tiếp ti bt k đâu, thì thông
đip nhn được dường như là nguyên bn ti thiết b th 2 này.
6. Vic lưu tr các log dưới các file plain text có th làm cho nó tr nên khó khăn hơn khi phân tích mt
lượng ln các d liu log. Hãy th c gng để thc thi 1 lnh grep hoàn chnh trên 1 file khong 5 GB và
bn s hiu đang phi đối mt vi vn đề gì. Trong khi quay vòng log, lưu tr và gim bt tt c nhng s
giúp đỡ để gii quyết vn đề, 1 cơ s d liu quan h là thc s cn thiết.
7. Các log được lưu trđim yếu (??) để sa cha hoc xóa đi, đặc bit là khi lu tr ni b. Rt là khó
để kim tra nhng file log có thiếu mt đon d liu nào đó hay không, đặc bit nếu chúng đã được thay đổi
bi mt người tn công có kinh nghim vi vic truy cp root.
S thay thế nhng syslog ca các h thng Unix ph biến xác định nhng s thiếu ht. Chúng ta s xem 2
s thay thế khá ni tiếng đó là thay thế syslog-ng bi BalabIT (http://www.balabit.hu/en/downloads/syslog-
ng); và thay thế msyslog bi CORE SDI (http://www.corest.com). Nhng chương trình này to nên giao tiếp
TCP đáng tin cy vi các message bufferring,và nhiu la chn lc hơn (thêm vào đó vi tính và tính thc
tế ca syslog. Nhng tài khon không có quyn root đảm bo an ninh cho các thao tác trong chroot, cung
cp d liu log và điu khin truy cp tt hơn vi các d liu được mã hóa và thm chí cung cp c nhng
file log đã được tích hp.
Hãy th quan sát cách thiết lp msyslog cho mt mng nh. Không ging như trong ví d v cu hình
syslog chuyn tt c các thông đip ti các thiết b host thông qua UDP, trong trường hp này, chúng ta
s s dng TCP vi b đệm và lưu tr các log trong d liu và các file dng plain text. Hơn na, chúng ta
s cho phép bo v mã hóa cho các log file dng plain text mà có th cho phép chúng ta tì ra nhng thay
đổi trong các log đã được lưu gi.
Trên các máy trm mà to ra hoc chuyn tiêp các file lò, chúng ta phát trin và cu hình msyslog. msyslog
s dng file hp l /etc/syslog.conf vi các thay đổi ph, như ví d sau :
*.* %tcp -a -h log host -p 514 -m 30 -s 8192
ví d này, tt c các thông đip s được chuyn t các localhost ti các host log thông qua kết ni TCP
cng 514, ghi vào b đệm 8,192 thông đip trong trường hp kết ni không thành công và ch khong 30
giây để thiết lp li kếy ni ti log host . Dòng khác như /etc/syslog.conf có th có mt trong nhng định
dng syslog ging như được miêu t trên, Daemon được kích hot chy thông qua lnh msyslogd -i linux
-i unix hoc s dng nhng kch bn mc định được cung cp bi các msyslog package.
Ti server, chúng ta cu hinh để chy msyslog như sau:
msyslogd -i linux -i unix -i tcp -a -p 514
Điu này làm cho daemon phi lng nghe các kết ni qua TCP cng 514 và cho phép đăng nhp t tt c
các thiết b. Các quy ước điu khin truy cp có th được ng dng để gii hn các host da trên địa ch IP
(các host có th chuyn logs). Chúng ta cũng thêm vào bo v crypto nhiu thông đip quan trng (chng
hn như th t ưu tiên). Để làm được điu này, chúng ta thêm vào dòng lnh đon /etc/syslog.conf như
sau::
*.crit %peo -l -k /etc/.var.log.authlog.key %classic /var/log/critical
Tiếp theo, kết thúc msyslog daemon, xóa hoc quay các logs, và to ra các khóa mã s dng tin ích rt
quen thuc:
peochk -g -k /etc/.var.log.authlog.key
Khi động li daemon, và bo v log được bt. Sau khi nhn thông đip mi, msyslog cp nht li điu
kin. Và để kim tra tính tích hp ca log, chy lnh sau:
peochk -f /var/log/messages -k /etc/.var.log.authlog.key
Nếu mi vic tt đẹp, bn s nhìn thy như sau:
(0) /var/log/critical file is ok
Nếu logfile đã b thay đổi, bn s thy:
(1) /var/log/critical corrupted
Thêm vào đó, để gi các thông đip ti cơ s d liu, mt lnh sau cn phi được thêm vào trong
/etc/syslog.conf như sau:
*.* %mysql -s localhost -u logger -d msyslog -t syslogTB
Lnh này s lưu mt bn copy ca thông đip vào trong cơ s d liu MySQL . Tuy nhiên, trước khi s thu
thp d liu bt đầu, bn cn to ra mt phác đồ và chèn vào mt user được log, Điu này được làm hoàn
chnh thông qua lnh sau:
echo "CREATE DATABASE msyslog;" | mysql -u root -p
Lnh này s to ra 1 cơ s d liu. Nhưng trước đó, MySQL phi được cài đặt và chy tt trên h thng
ca bn. Lnh tiếp theo s là:
cat syslog-sql.sql | mysql msyslog
Lnh này định nghĩa 1bng để lưu tr log, syslog-sql.sql đưc ch ra như sau:
CREATE TABLE syslogTB (
facility char(10),
priority char(10),
date date,
time time,
host varchar(128),
message text,
seq int unsigned auto_increment primary key
);
Bước cui cùng là to cơ hi cho vic thêm các thông đip:
echo "grant INSERT,SELECT on msyslog.* to logger@localhost;" | mysql -u root -p
Vic cài đặt cơ s d liu như trên có th lưu tr an toàn hàng triu bn ghi. D liu có th được hin thi
thông qua các giao tiếp câu lnh (mysql) hoc mt trong s nhiu cơ s d liu GUI database frontends và
web frontends (ví d như PHPMyAdmin, viết trong PHP).
Để kết lun, msyslog và syslog-ng thao tác ln nhau vi các thc thi syslog truyn thng nếu log đưc vn
chuyn thông qua UDP. Trong trường hp này, syslog mi và các syslog truyn thng s được dùng chung
để phát trin mng, và mt syslog mi s được phát trin trên log-collection server. Nhng đặc đim tiến b
khác như lc, kim tra tích hp, sưu tp d liu là có sn, và ch cách chuyn vn ca các log mng là
được làm theo cách c đin mà thôi.
18.2.2 Windows
Windows (t NT/2000/XP tr lên) cũng cung cp logging h thng. Tuy nhiên, nó s dng định dng nh
phân (*.evt) để lưu tr 3 dng logfile:h thng, ng dng và an ninh (system, application, and security).
Figure 18-1 là 1 ví d ca log an toàn ca h thng windows . Log h thng bao gm rt nhiu các bn ghi
có liên quan ti các vn hành thông thường hoc bt thường ca máy tính. Ví d này ch ra 1 hot động
thông thường ca Windows XP. Xem chi tiết hình (Figure 18-2). Để đọc các log ca windows, bn cn s
dng chương trình hoc thiết b có th đọc được file *.evt . Thiết b đọc có th s dng để xut các file ra
dưới dng mi giá tr cách nhau 1 du phy cho vic phân tích hoc quan sát log qua các text editor.
Figure 18-1. Windows security log showing normal operation
Figure 18-2. Double-clicking to drill down for detail on the Windows security log