Các máy tính Windows là những máy tính bị
tấn công nhiều nhất. Chính vì vậy mà Microsoft đã xây dựng rất nhiều
công cụ trong hệ điều hành Windows để các quản trị viên và một số người
dùng có thể phân tích nhằm xác định xem máy tính của họ hiện có bị thỏa
hiệp hay không. Trong hướng dẫn gồm hai phần này, phần đầu tiên chúng
tôi sẽ giới thiệu cho các bạn về 5 công cụ dòng lệnh hữu dụng trong
Windows để thực hiện một hành động phân tích đó.
1. WMIC
Windows Management Instrumentation Command-line
(WMIC) không chỉ đơn thuần là một lệnh mà có rất nhiều tính năng khác.
Công cụ này có một giao diện dòng lệnh cho Windows Management
Instrumentation API bên trong Windows. WMIC cho phép quản lý người dùng
truy cập các thông tin chi tiết trên máy tính Windows, gồm có các thuộc
tính chi tiết của hàng ngàn các thiết lập và đối tượng. WMIC được xây
dựng bên trong Windows XP Professional, Windows 2003 và Windows Vista.
Để sử dụng nó, người dùng phải khởi chạy chương trình bằng cách chạy
lệnh WMIC, theo sau là phần mà người dùng quan tâm (thường được gọi là
các alias bên trong hệ thống). Cho ví dụ, để biết về các quá trình đang
chạy trên máy tính, người dùng có thể chạy lệnh:
C:\> wmic process
Phần đầu ra của lệnh này có vẻ khá khó đọc vì định
không được chỉ định. Tuy nhiên với WMIC, đầu ra mà công cụ này cung cấp
được định dạng hoàn toàn khác, trong đó phần "list full" sẽ hiển thị các thông tin chi tiết cho mỗi lĩnh vực mà người dùng quan tâm, còn phần "list brief"
sẽ cung cấp một dòng đầu ra cho mỗi một mục báo cáo dưới sạng danh sách
các mục, chẳng hạn như các quá trình đang chạy, các chương trình tự
động khởi chạy và những chia sẻ hiện hữu.
Cho ví dụ, chúng ta có thể quan sát mọi quá trình đang chạy trên máy tính bằng cách chạy lệnh:
C:\> wmic process list brief
Lệnh trên sẽ hiển thị tên, ID của quá trình và quyền
ưu tiên của mỗi quá trình đang chạy cũng như các thuộc tính khác. Để
nhận thêm các thông tin chi tiết hơn, chạy lệnh:
C:\> wmic process list full
Lệnh này sẽ hiển thị tất cả các thông tin chi tiết,
gồm có đường dẫn của file thực thi có liên kết với quá trình và lệnh
triệu gọi dòng lệnh của nó. Khi nghiên cứu một máy tính có bị tiêm
nhiễm hay không, quản trị viên cần phải xem xét từng quá trình để xác
định xem các quá trình này có hợp lệ trên máy tính hay không, sau đó
nghiên cứu các quá trình lạ hoặc không mong đợi bằng cách sử dụng các
cỗ máy tìm kiếm.
Ngoài các alias về các quá trình, người dùng có thể
thay thế startup để nhận danh sách các chương trình tự động khởi chạy
trên máy tính, gồm có các chương trình khởi chạy khi hệ thống khởi động
hoặc người dùng đăng nhập, đây là những chương trình được định nghĩa
bởi một auto-start registry key hoặc thư mục:
C:\> wmic startup list full
Rất nhiều malware có thể tự động chạy trên máy tính
bằng cách thêm một mục auto-start bên cạnh các mục hợp lệ khác có bên
trong các công cụ antivirus hay các chương trình system tray. Người
dùng có thể quan sát các thiết lập khác trên máy tính với WMIC bằng
cách thay thế "startup" bằng "QFE" (cụm chữ cái viết tắt cho Quick Fix Engineering) để thấy được mức vá của một hệ thống, bằng "share" để xem danh sách các file chia sẻ trên Windows hoặc bằng "useraccount" để thấy được các thiết lập tài khoản chi tiết của người dùng.
Một tùy chọn khác bên trong WMIC là khả năng chạy
một lệnh để thu thập thông tin trên trên một chu kỳ nào đó bằng cách sử
dụng cú pháp "/every:[N]" sau phần còn lại của lệnh
WMIC. [N] ở đây là một số nguyên, chỉ thị rằng WMIC sẽ chạy lệnh trên
cứ [N] giây một lần. Bằng cách đó, người dùng có thể tìm kiếm các thay
đổi trong các thiết lập của hệ thống theo thời gian, cho phép khảo sát
một cách kỹ lưỡng đầu ra. Sử dụng chức năng này để kéo toàn bộ các
thông tin về quá trình trong 5 giây một lần, người dùng có thể chạy:
C:\> wmic process list brief /every:1
Nhấn CTRL+C sẽ dừng chu kỳ.
2. Lệnh net
Giới thiệu ở trên, WMIC là một lệnh tương đối mới,
tuy nhiên còn có một số lệnh khác không phải là mới nhưng khá hữu dụng
đó là lệnh "net". Các quản trị viên có thể sử dụng lệnh này để hiển thị tất cả các thông tin hữu dụng.
Cho ví dụ, lệnh "net user" sẽ hiển thị tất cả các tài khoản người dùng được định nghĩa nội bộ trên máy tính. Lệnh "net localgroup" sẽ hiển thị các nhóm, lệnh "net localgroup administrators" sẽ hiển thị thành viên của nhóm quản trị viên và lệnh "net start" hiển thị các dịch vụ đang chạy.
Các hacker thường đưa người dùng vào một hệ thống
hoặc đặt các tài khoản của họ vào một nhóm quản trị viên, vì vậy chúng
ta luôn phải kiểm tra đầu ra của các lệnh này để xem liệu hacker đã sửa
đổi các tài khoản trên máy tính hay chưa. Thêm vào đó, một số hacker có
thể tạo các dịch vụ xấu trên máy tính, vì vậy người dùng nên cần thận
với chúng.
3. Openfiles
Nhiều quản trị viên Windows không quen với việc sử dụng các lệnh openfiles
mạnh có trong Windows. Mặc dù vậy, như tên ngụ ý của nó, lệnh này sẽ
hiển thị tất cả các file được mở trong máy tính, chỉ thị tên quá trình
đang tương tác với mỗi file. Nó được xây dựng trong các phiên bản
Windows đời mới, từ XP Pro đến Vista. Giống như lệnh lsof
phổ biến cho Linux và Unix, nó cũng thể hiện cho các quản trị viên tất
cả các file đang mở trên máy tính, cung cấp tên quá tình và đường dẫn
hoàn chỉnh cho mỗi file. Tuy nhiên không giống như lsof, nó không cung cấp nhiều thông tin chi tiết, chẳng hạn như số ID của quá trình, số người dùng hoặc các thông tin khác.
Xem xét phân vùng thông tin mà nó thu thập được, bạn sẽ không hề ngạc nhiên rằng lệnh openfiles thực sự tiêu hao rất nhiều hiệu suất. Chính vì vậy, thông thường các quá trình có liên quan đến openfiles
bị tắt mặc định, nghĩa là người dùng không thể kéo bất cứ dữ liệu nào
từ lệnh này cho tới khi bật nó. Chức năng này có thể được kích hoạt
bằng cách chạy lệnh:
C:\> openfiles /local on
Người dùng sẽ cần phải khởi động lại và khi hệ thống hoạt động trở lại, họ sẽ có thể chạy lệnh openfiles như dưới đây:
C:\> openfiles /query /v
Lệnh này sẽ hiển thị đầu ra một cách chi tiết, gồm
có tài khoản người dùng mà quá trình cho một file mở đang chạy bên
trong. Từ đó có thể nhận biết được malware gì đã được cài đặt, hoặc tấn
công gì có thể đang được thực hiện trên máy tính, người dùng nên tìm
kiếm các file dị thường hoặc các file không mong đợi, đặc biệt các file
có liên quan đến những người dùng nội bộ không mong đợi trên máy tính.
Khi kết thúc với lệnh openfiles,
chức năng tính toán của nó có thể được tắt bỏ và hệ thống sẽ trở lại
với tình trạng hiệu suất bình thường bằng cách chạy lệnh dưới đây và
khởi động lại máy tính:
C:\> openfiles /local off
4. Netstat
Lệnh netstat
trong Windows có thể hiển thị hành vi mạng, tập trung vào TCP và UDP
mặc định. Vì malware thường truyền thông trong toàn mạng, nên người
dùng có thể tìm kiếm các kết nối không bình thường trong đầu ra của
netstat, chạy lệnh dưới đây:
C:\> netstat -nao
Tùy chọn –n sẽ thông báo cho netstat
hiển thị các số trong đầu ra của nó, trừ tên máy và giao thức mà thay
vì đó sẽ hiển thị các địa chỉ IP và TCP hoặc số cổng UDP. –a chỉ thị hiển thị tất cả các kết nối và các cổng đang lắng nghe. Tùy chọn –o thông báo cho netstat
hiển thị số processID của mỗi chương trình đang tương tác với cổng TCP
hoặc UDP. Nếu thay vì TCP và UDP, bạn chỉ quan tâm đến ICMP, khi đó bạn
có thể chạy lệnh netstat như dưới đây:
C:\> netstat –s –p icmp
Lệnh trên chỉ thị rằng nó sẽ trả về thống kê (-s)
của giao thức ICMP. Mặc dù không thể hiện nhiều chi tiết bằng TCP và
UDP nhưng người dùng có thể thấy được liệu máy tính có đang gửi lưu
lượng ICMP không mong đợi trên mạng hay không. Tuy nhiên một số
backdoor và một số malware khác có thể truyền thông bằng cách sử dụng
tải trọng của các thư ICMP Echo.
Giống như WMIC, lệnh netstat cũng cho phép chúng ta chạy nó theo một chu kỳ lặp đi lặp lại. Tuy nhiên thay vì sử dụng cú pháp "/every:[N]" như WMIC, người dùng chỉ cần thêm sau lệnh triệu gọi netstat
dấu cách và số nguyên. Như vậy, để liệt kê các cổng TCP và UDP đang sử
dụng trên máy tính cứ sau 2 giây một lần, người dùng có thể chạy:
C:\> netstat –na 2
5. Find
Hầu hết các lệnh mà chúng tôi đã giới thiệu cho đến
đây đều hiển thị rất nhiều đầu ra trên màn hình, điều này đôi khi làm
khó người dùng trong việc quan sát toàn bộ để tìm ra một mục nào đó mà
họ quan tâm. Tuy nhiên Windows có một công cụ khác có thể giúp bạn khắc
phục điều này. Người dùng có thể tìm kiếm trong toàn bộ đầu ra của mỗi
lệnh bằng cách sử dụng lệnh findstr và find trong Windows. Lệnh find sẽ tìm kiếm các chuỗi đơn giản, trong khi đó lệnh findstr
sẽ hỗ trợ cho các từ ngữ thông thường, một cách phức tạp hơn để phân
biệt các mẫu tìm kiếm. Do các từ ngữ thông thường được hỗ trợ bởi findstr vượt ra ngoài phạm vi của bài viết này, nên chúng tôi chỉ tập trung vào lệnh find. Mặc định lệnh find sẽ phân biệt giữa chữ hoa và chữ thường, tuy nhiên bằng cách sử dụng tùy chọn /i bạn có thể làm mất đi sự phân biệt này.
Lệnh find cũng có khả năng đếm. Được triệu gọi với lệnh /c,
nó sẽ đếm số dòng của đầu ra gồm có chuỗi đã cho. Nếu người dùng muốn
đếm số lượng dòng trong đầu ra của lệnh để biết được số lượng quá trình
đang chạy, số lượng mục startup đang hiện diện, hoặc một loạt các hành
động khác trên máy. Để đếm số dòng đầu ra, người dùng có thể dẫn đầu ra
của họ qua find /c /v "". Lệnh này sẽ đếm (/c) số dòng trừ dòng trống.
Lúc này, với lệnh find, người dùng có thể quan sát
đầu ra của mỗi một lệnh mà chúng tôi đã giới thiệu cho đến đây để tìm
ra những điều thú vị riêng. Cho ví dụ, để xem thông tin mỗi giây về các
quá trình cmd.exe đang chạy trên máy tính, bạn hãy đánh:
C:\> wmic process list brief /every:1 | find "cmd.exe"
Để đếm số file mở trên máy tính khi openfiles được kích hoạt, bạn chỉ cần đánh:
C:\> openfiles /query /v | find /c /v ""
Dù có đếm các mục theo một cách nào đi nữa, các bạn
cần nhớ trừ đi số dòng được liên kết với header cột. Ví dụ, để xem với
độ chính xác theo mỗi giây khi cổng TCP 2222 bắt đầu được sử dụng trên
máy tính, cùng với process ID đang sử dụng trên cổng, chạy:
C:\> netstat –nao 1 | find "2222"
Nghiên cứu đầu ra
Với 5 công cụ này, người dùng có thể xử lý các thông
tin về cấu hình, trạng thái bảo mật của mỗi một máy tính Windows. Mặc
dù vậy để sử dụng mỗi lệnh trong việc nhận diện sự thỏa hiệp, người
dùng cần phải so sánh các thiết lập hiện hành củ máy tính bị nghi ngờ
với máy tính bình thường.
Có ba cách có thể thiết lập sự so sánh này. Đầu
tiên, nếu người dùng là một “thợ săn” malware đã có kinh nghiệm thì anh
ta có thể nhận biết về những gì đúng và những gì sai với máy tính, nhận
ra những vấn đề không bình thường dựa trên kinh nghiệm. Cách thứ hai,
so sánh này có thể được thực hiện với một máy không bị tiêm nhiễm nếu
có. Nếu không có một máy tính “sạch”, người dùng có thể dựa vào tùy
cách thứ ba – tìm kiếm các file, tên quá trình, tên file và số cổng cụ
thể được nhận biết bởi các lệnh này và tìm kiếm chúng online nhằm xác
định xem chúng có phải là các file thông thường cho máy tính và phần
mềm mà nó đã cài đặt hay có liên quan tới một số loại malware.
Trong phần này, chúng tôi đã giới thiệu cho các bạn
5 lệnh rất mạnh trong Windows. Trong phần tiếp theo của loạt bài này,
chúng tôi sẽ giới thiệu tiếp cho các bạn 5 lệnh hữu dụng khác từ dòng
lệnh.
(Theo Techtarget)
|