Đầu tiên, cần xem xét mức độ của các dữ liệu PSTR muốn thu thập. Giải pháp lý tưởng là tập trung vào việc thu thập dữ liệu tầng ứng dụng cần thiết, càng nhiều từ các giao thức văn bản rõ càng tốt. Vì có nhiều biến thể của dữ liệu PSTR có thể được thu thập nên không gian lưu trữ dữ liệu sẽ biến đổi rất lớn. Vì vậy, nên sử dụng một số phương pháp thảo luận ở phần trước để xác định có bao nhiêu không gian lưu trữ để sử dụng cho dữ liệu PSTR.
Song song với việc xác định loại dữ liệu PSTR sẽ tạo ra, cũng nên xem xét các khoảng thời gian dữ liệu được lưu lại. Việc lưu dữ liệu FPC thường được xem xét theo chu kỳ vài giờ hoặc vài ngày, trong khi duy trì dữ liệu phiên cần xem xét theo chu kỳ quý hoặc năm. Dữ liệu PSTR nên theo chu kỳ tuần hoặc tháng để lấp đầy khoảng trống giữa FPC và dữ liệu phiên.
Khi đánh giá các nhu cầu lưu trữ dữ liệu PSTR, nên chú ý là sẽ có sự biến đổi rất lớn. Ví dụ, trong thời gian ăn trưa, lưu lượng HTTP là ở đỉnh cao và lưu lượng được tạo ra từ các giao thức khác có liên quan chặt chẽ tới các quy trình kinh doanh giảm xuống. Điều này có thể không ảnh hưởng đến tổng lượng dữ liệu PCAP được thu thập trong khoảng thời gian này, nhưng nó sẽ làm tăng lượng dữ liệu PSTR được thu thập.
Có một số ứng dụng mã nguồn mở miễn phí có thể thực hiện cả hai việc: thu thập dữ liệu PSTR từ mạng và tạo ra từ dữ liệu FPC. Phần sau sẽ xem xét một số các công cụ.
a. Tạo dữ liệu PSTR thủ công
Trước khi xem xét một số công cụ có thể được sử dụng để tự động tạo ra dữ liệu PSTR, hãy tìm hiểu một số phương pháp khác nhau để tạo ra dữ liệu PSTR bằng cách sử dụng công cụ trong môi trường BASH Linux. Xét các dữ liệu ASCII từ một tệp tin PCAP. Với dữ liệu PSTR, dữ liệu duy nhất cần quan tâm là tập hợp các ký tự đọc được, vì vậy chỉ cần giới hạn kết quả bằng dữ liệu thông qua chuỗi các tiện ích Linux.
Script theo kiểu log dưới đây sẽ tạo ra dữ liệu tương tự như trong Hình 2.20, với các bản ghi theo dòng mô tả chi tiết URI gắn với yêu cầu của người sử dụng.
#!/bin/bash
#Send the ASCII from the full packet capture to stdout /usr/sbin/tcpdump -qnns 0 -A -r test.pcap |
#Normalizes the PCAP strings |
#Parse out all timestamp headers and Host fields
grep -e '[09][09]:[09][09]:[09][09].[09]\'7b6\'7d\Host:'| grep -B1 “Host:” | #Clean up the results
grep -v -- “--"| sed 's/Host.*$//g'| tr “” “-” | sed 's/--//g'| sed 's/-Host:/ -/g'
Các giải pháp thủ công tuy chậm trong xử lý dữ liệu nhưng sẽ rất linh hoạt.
b. URLSnarf
URLsnarf thu thập dữ liệu yêu cầu HTTP một cách thụ động và lưu chúng dưới định dạng log chung (common log format - CLF). URLsnarf có trong bộ công cụ dsniff, không được cài đặt mặc định trên SO, vì vậy nếu muốn sử dụng nó, cần phải cài đặt:
sudo apt-get install dsniff
Khi chạy không có tham số, URLsnarf sẽ thụ động lắng nghe trên một giao diện và xuất dữ liệu thu thập được tới đầu ra chuẩn. Mặc định, nó sẽ lắng nghe trên giao diện eth0 và bắt lưu lượng trên cổng TCP 80, 8080 và 3128.
URLsnarf chỉ có 4 tùy chọn:
-p: Cho phép người dùng chạy URLsnarf trên một tệp tin PCAP đã có gói tin thu thập -i: Xác định một giao diện mạng
-n: Phân tích dữ liệu mà không phân giải địa chỉ DNS
-v <expression>: Mặc định, có thể xác định một URL cụ thể, được coi là một biểu thức trong thời gian chạy để chỉ hiển thị các URL phù hợp với biểu thức đó. Tùy chọn -v cho
Do đầu ra là định dạng log chuẩn, phân tích đầu ra bằng cách chuyển (pipe) qua các công cụ dòng lệnh BASH như grep, cut, và awk dễ hơn là chỉ định biểu thức với tùy chọn -v. Trong Hình 2.22 dưới đây, đầu tiên sẽ bắt lưu lượng truy cập bằng tcpdump và sau đó truyền qua URLsnarf với tùy chọn -p.
Hình 2.22 Dữ liệu mẫu từ URLsnarf
Đầu ra thể hiện trong Hình 2.22 là một tập hợp các log tiêu chuẩn mô tả chi tiết các yêu cầu HTTP khi truy cập trang web appliednsm.com.
c. Httpry
Httpry là một công cụ bắt gói tin chuyên để hiển thị và ghi lại lưu lượng HTTP. Httpry chỉ có thể phân tích lưu lượng HTTP. Tuy nhiên, không giống như URLsnarf, Httpry có rất nhiều tùy chọn khi xử lý các dữ liệu đã thu thập, cho phép bắt và xuất thông tin về tiêu đề HTTP theo bất kỳ thứ tự nào. Khả năng tùy chỉnh đầu ra theo các công cụ khác làm cho httpry hữu ích trong việc tạo dữ liệu PSTR hữu ích. Httpry không có sẵn trong SO, nhưng có thể được cài đặt khá dễ dàng như sau.
1. Cài đặt thư viện phát triển libpcap sudo apt-get install libpcap-dev
2. Tải về tarball từ website Httpry của Jason Bittel
wget http://dumpsterventures.com/jason/httpry/httpry-0.1.7.tar.gz 3. Giải nén
tar -zxvf httpry-0.1.7.tar.gz
4. Vào thư mục Httpry và thực hiện cài đặt ứng dụng make && sudo make install
Sau khi cài đặt hoàn tất, có thể chạy chương trình không có tham số để bắt đầu thu thập lưu lượng HTTP từ cổng 80 trên giao diện mạng đánh số thấp nhất. Hình 2.23 hiển thị httpry đọc lưu lượng từ một tệp tin bằng cách sử dụng tham số -r và xuất ra đầu ra.
Hình 2.23 Ví dụ dữ liệu Httpry
Httpry cung cấp một số tham số dòng lệnh, và sau đây là một vài tham số hữu ích nhất để bắt đầu:
-r <file>: Đọc từ một tệp tin PCAP đầu vào thay vì thực hiện bắt gói tin trực tiếp -o <file>: Ghi ra một tệp tin httpry log (cần thiết cho các script phân tích)
-i <interface>: Bắt dữ liệu từ một giao diện xác định -d: Chạy httpry như một daemon
-q: Chạy trong chế độ im lặng, loại dữ liệu đầu ra không quan trọng như banner và thống kê.
Httpry có sẵn một số kịch bản có thể xử lý đầu ra cho phép phân tích dữ liệu đầu ra tốt hơn. Bằng cách sử dụng tham số -o, có thể buộc các dữ liệu được thu thập bởi httpry được xuất ra bởi một trong các plugin. Một số các plugin có khả năng xuất ra các thống kê tên máy, thông tin tóm lược về HTTP log, và khả năng chuyển đổi các định dạng đầu ra thành định dạng log chung, từ đó cho phép tạo ra kết quả tương tự như những gì URLsnarf có.
Khả năng tạo ra kịch bản phân tích cho phép tích hợp các plugin giúp tự động hoá một giải pháp dữ liệu PSTR dựa trên httpry. Việc chuyển đổi đòi hỏi một script gọi là parse_log.pl. Script này nằm trong thư mục của httpry scripts/plugins/, và hoạt động bằng cách sử dụng các plugin có trong thư mục đó. Ví dụ, các lệnh dưới đây có thể được sử dụng cho một script phân tích. Trong trường hợp này, sử dụng định dạng nhật ký chung khi tạo ra dữ liệu httpry trong một định dạng linh hoạt cho việc phân tích bằng các công cụ phát hiện và phân tích.
1. Chạy Httptry và hướng đầu ra vào một tệp tin httpry -o test.txt
2. Phân tích đầu ra
perl scripts/parse_log.pl -p scripts/plugins/common_log.pm test.txt
Hình 2.24 Ví dụ đầu ra Httpry được phân tích thành định dạng chung
Tạo ra dữ liệu PSTR với httpry thường nhanh hơn đáng kể so với URLsnarf.