Tương tác với các tiến trình bằng tasklist
Trong bài trước, chúng ta đã thấy lệnh WMIC có thể cho ta nhìn thấy những thú vị bên trong các tiến trình (processes) đang hoạt động. Lệnh tasklist cũng có một số tính năng hay có thể xem xét, tách ra một số thuộc tính của tiến trình mà WMIC không làm được.
Khi chạy nó không kèm tham số, lệnh tasklist chỉ ra danh sách toàn bộ các tiến trình đang chạy, hiển thị tên của chúng, số hiệu PID và các thông kê khác. Để có một đầu ra phong phú hơn nữa, ta có thể chạy như sau:
C:\> tasklist /svc
Lệnh này cho ta thấy những dịch vụ nào đang chạy bên trong mỗi tiến trình (process). Nhiều người dùng windows không hiểu mối quan hệ giữa các dịch vụ và các tiến trình, cho rằng chúng hoàn toàn khác nhau trong khi thực chất chúng là một thực thể liên quan. Trong thực tế, mỗi dịch vụ trên máy chạy Windows đều chạy bên trong một tiến trình, và một số tiến trình còn có nhiều dịch vụ sống bên trong. Bởi thế, có một tới nhiều mối quan hệ giữa các tiến trình và dịch vụ mà lệnh tasklist có thể khám phá
Một câu thần chú hữu ích khác của lệnh tasklist là:
C:\> tasklist /m
Tham số “m” ở đây có nghĩa “modules”, hay là cách mà tasklist chỉ ra các DLLs, các thư viện mã lệnh được tải bởi các tiến trình khi chúng thực thi mệnh lệnh trên máy. Khi được khởi động theo cách này, tasklist chỉ ra từng DLL đang được tải vào tất cả các tiến trình đang chạy. Nó cung cấp cho người dùng một lượng lớn thông tin về những gì đang xảy ra trên máy của họ tại một thời điểm cho trước. Trong khi phân tích đầu ra là một công việc đáng nản lòng, thì những thông tin này rất hữu ích cho những nhà nghiên cứu malware để xác định bản chất các tiến trình đang chạy trên máy. Khi sử dụng Google search đối với những processes và DLLs cụ thể, có thể nhận được các mô tả malware từ các trang của nhà sản xuất phần mềm chống virus, mà trong đó chỉ ra các động cơ tấn công cùng các mẫu vật malware đó.
Lệnh reg để phân tích chi tiết registry.
Lệnh reg cho chúng ta tương tác với registry của máy bằng dòng lệnh. Thay vì sử dụng lệnh giao diện đồ họa cồng kềnh regedit để định vị thanh ghi registry, người chuyên nghiệp chỉ cần mở giao diện dòng lệnh Windows và dùng lệnh reg để đọc và cập nhật thanh ghi registry. Tuy thế, lệnh reg không cho phép duyệt thanh ghi registry một cách tương tác, người dùng cần phải biết đường dẫn đầy đủ tới các registry keys mà họ muốn xem hay thay đổi. Dù vậy, khi có đường dẫn thì sử dụng lệnh reg là cách dễ nhất để thay đổi nội dung registry.
Để xem thiết lập của một reistry key cho trước, ta dùng lựa chọn “query” của lệnh reg như sau:
C:\> reg query hklm\software\microsoft\windows\currentversion\run
Khóa thanh ghi này kiểm soát các phần mềm tự khởi động khác nhau của Windows tại thời điểm boot máy và tiếp sau khi người dùng đăng nhập vào hệ thống. Nhiều loại malware thay đổi khóa này để chắc chắn rằng chúng sẽ được khởi động khi máy khởi động lại
Để xuất ra những khóa (keys) riêng biệt hoặc toàn bộ một phân khúc của thanh ghi ra thành tệp để phân tích hoặc cài đặt trên hệ thống riêng biệt, lệnh reg hỗ trợ chức năng “reg export” Ngoài khả năng đọc và xuất các thiết lập thanh ghi, lệnh reg có thể cập nhật các thiết lập này. Lệnh “reg add” sẽ cập nhật giá trị của các khóa đang có, hoặc tạo khóa mới nếu chúng chưa tồn tại. Lệnh “reg import” có thể nhập nhiều khóa cùng lúc.
Dùng ipconfig để phân tích DNS.
Phần lớn những người dùng Windows thực sự đều quen biết lệnh ipconfig, thường được dùng để chỉ ra các thiết lập về Mạng của máy chạy Windows. Tuy nhiên, có những tính năng hữu ích cụ thể của ipconfig mà khá nhiều người không biết – là chức năng rất có ích để những người chuyên về an ninh biết về những năng lực của botnets hôm nay. Lệnh ipconfig có thể hiển thị DNS cache của máy tại chỗ như sau:
C:\> ipconfig /displaydns
Kết xuất của lệnh cho ta một loạt những tên miền được cache tạm, các địa chỉ ip của chúng và time to live (tính bằng giây) của các bản ghi DNS. Nếu người dùng chạy lặp lệnh này, họ có thể thấy time to live giảm dần cho tới khi các bản ghi (records) quá hạn, hoặc được làm tươi lại. Giám sát DNS cache và giá trị time to live (TTL) đóng một vai trò quan trọng khi điều tra fast-flux botnets, bởi botnets này sẽ sử dụng các DNS records với TTLs nhỏ để buộc phải thường xuyên cập nhật và gây rối người điều tra khi xác định vị trí server back-end quan trọng của hacker Phải thừa nhận rằng, ipconfig không có nhiều lựa chọn thú vị như những lệnh khác được giới thiệu trong bài này như tasklist và reg. Tuy nhiên việc sử dụng lệnh này là cực kỳ hữu ích.
Chạy lặp với vòng lặp FOR /R.
Đôi khi người quản trị hay chuyên gia an ninh muốn chạy một lệnh lặp đi lặp lại, có thể với khoảng cách thời gian 5 giây để có thể quan sát sự thay đổi kết xuất. Để đạt mục đích này, chúng ta có thể trông chờ vào lòng lặp FOR của Windows. Windows hỗ trợ 5 loại vòng lặp khác nhau, có thể thay đổi thông qua file integers, tên file, tên thư mục, nội dung của file và chuỗi. Chúng ta sẽ tập trung vào những vòng lặp đơn giản nhất, đặc biệt là biến FOR /L, với các vòng lặp được chỉ ra thông qua integer vì chúng có thể được dùng để tạo các lệnh chạy liên tục. Cú pháp của vòng lặp FOR /R như sau:
C:\> for /L %[var] in ([start],[step],[stop]) do [command]
Biến [var] là biến iterator, là một ký tự đơn có thể nhận các giá trị nguyên khác nhau tại mỗi bước của vòng lặp , Bạn sẽ gán giá trị ban đầu của biến, giá trị tăng dần của từng bước trong toàn bộ vòng lặp, và giá trị tối đa của nó. Cũng cần chỉ ra lệnh cần chạy tại từng bước của vòng lặp. Để minh họa, ta sẽ xem dòng lệnh sau:
C:\> for /L %i in (1,1,10) do @echo %i
Vòng lặp này sử dụng %i là biến với giá trị ban đầu là 1. Cứ mỗi lần lặp lại của vòng lặp, %i sẽ tăng thêm 1, cho tới khi bằng 10. Khi đó, trong quá trình lặp, ta có thể in giá trị của biến thay đổi ra màn hình bằng lệnh echo. Ký hiệu @ báo cho hệ thống biết là không in bản thân câu lệnh (command) ra màn hình, như thế ta sẽ có kết xuất đẹp hơn. Chúng ta chỉ cần bảo hệ thống đếm từ 1 đến 10.
Giờ chúng ta sẽ cùng xem cách thức dùng lệnh này để làm cho lệnh tasklist chạy liên tục:
C:\> for /L %i in (1,0,2) do @tasklist
Với lệnh này, chúng ta lệnh cho máy khởi động vòng lặp với biến bắt đầu bằng 1, số đếm bằng không, cho tới khi đạt giá trị bằng 2. Vòng lặp này sẽ đếm hoài không ngừng nghỉ, cho tới khi chúng ta gỏ CTRL-C để dừng nó lại. Như vậy chúng ta chỉ việc chạy lệnh tasklist tại mỗi lần lặp.
Để thêm vào một đoạn chờ vài giây giữa từng lần lặp, chúng ta chỉ cần ping chính máy của mình (172.0.0.1) nhiều lần tại mỗi lần lặp của toàn bộ vòng lặp, bằng cách thêm dòng “& ping –n 6 127.0.0.1 >nul” như sau:
C:\> for /L %i in (1,0,2) do @tasklist & ping --n 6 127.0.0.1 > nul
Do dòng lệnh của Windows không có chức năng cài sẵn là “ngủ” để chờ một khoảng trễ cho trước, chúng ta có thể dùng lệnh ping để tạo khỏng trễ này. Lệnh trên đây sẽ ping địa chỉ localhost sáu lần (-n 6), tạo ra một quãng trễ 5 giây ( cú ping đầu tiên sẽ xảy ra ngay lập tức, các lần ping sau sẽ lần lượt thực hiện cứ 1 giây một lần ping cho hết 5 lần là 5 giây). Chúng ta hướng kết xuất của lệnh ping ra nul để chúng không xuất hiện trên màn hình. Kết quả là ta có lệnh tasklist chạy cứ 5 giây một lần. Kỹ thuật này có thể được áp dụng để chạy lặp tất cả những lệnh mà chúng ta đã xem xét , giúp người dùng có thể khảo sát kỹ lưỡng hơn kết xuất. Có những cú pháp phức tạp hơn có thể thậm chí phân tích kết xuất của lệnh nhằm cho phép tạo các scripts phân tích hệ thống chi tiết, tuy nhiên những cú pháp này nằm ngoài giới hạn của loại bài viết này.
Khởi động giao diện đồ họa Quản trị bằng dòng lệnh.
Trong khi chế độ dòng lệnh của Windows có nhiều công cụ mạnh mẽ, thì đôi khi công cụ giao diện đồ họa GUI có thể làm tốt hơn dòng lệnh. Tuy nhiên, nhớ lại những vùng tối tăm nơi mà Microsoft đã chôn vùi những controls khác nhau trong GUI của nó là một công việc khiến ta hoang mang .
May thay, người dùng không cần thiết đào bới toàn bộ GUI để tìm những gì họ cần, thay vào đó họ có thể dựa vào các command-line shortcuts. Ví dụ như, thay vì chuẩn bị khởi động menu để tìm và chạy GUI quản trị người dùng tại chỗ, ta có thể nhảy về dấu nhắc lệnh gần nhất và gõ:
C:\> lusrmgr.msc
Có một loạt các GUI controls có thể được chạy trực tiếp từ dòng lệnh theo cách này, chúng giúp tiết kiệm nhiều thời gian. Đây là một vài controls yêu thích:
Secpol.msc: Đây là hệ quản trị chính sách an ninh tại chỗ, được dùng để cấu hình hàng trăm thiết lập an ninh cho máy.
Services.msc: Đây là lệnh chạy các dịch vụ bàn điều khiển GUI (control panel)
Control: Lệnh này xổ lên toàn bộ các công cụ có trên bàn điều khiển control panel
Taskmgr.exe: Lệnh này khởi động Task Manager
Explorer.exe: Để kích hoạt trình duyệt tệp Windows bằng tay, ta chạy lệnh này.
Eventvwr.msc: Lệnh này chạy Windows Event Viewer, rất tiện cho phân tích log.
Kết luận:
Đầu tiên, có vẻ như những lệnh Windows được trình bày trong bài tối nghĩa và khó nhớ. Tuy vậy, nếu thực hành siêng năng, những công cụ dòng lệnh Windows có thể giúp những người quản trị và chuyên viên an ninh vận dụng thêm nhiều quyền năng với máy tính chạy Windows của họ, cấu hình chúng an toàn hơn và phân tích chúng chi tiết hơn khi bị tấn công.
Về tác giả:
Ed Skoudis là một giảng viên của tổ chức SANS và là nhà sáng lập, tư vấn cao cấp về an toàn thông tin của Intelguardians, một công ty về An toàn thông tin có trụ sở ở DC. Chuyên môn sâu của ông bao gồm các phương thức tấn công của hacker và cách phòng vệ, các vấn đề về ngành an toàn thông tin và computer privacy. Ông giành được các giải thưởng 2004,2005 và 2006 của Microsoft MVP về an ninh Windows Server.