Thứ Sáu, 21 tháng 8, 2015

Hướng dẫn loại bỏ hoàn toàn mã độc trên máy tính

Malware viết tắt malicious software (phần mềm độc hại) là những phần mềm được sử dụng hay lập trình bởi tin tặc nhằm can thiệp vào máy tính, thu thập thông tin nhạy cảm, đoạt quyền truy cập đến hệ thống riêng tư. Nó có thể dưới dạng code, script, nội dung động hoặc các phần mềm khác. Malware là một thuật ngữ chung để chỉ các dạng phần mềm xâm nhập hoặc không thân thiện.
Malware bao gồm virus máy tính, ransomware, sâu, Trojan, rootkit, keylogger, spyware, adware, malicious BHO, phần mềm giả mạo …; mối đe dọa malware đang hoạt động chủ yếu thường là sâu và Trojan hơn là virus.
Không phải lúc nào cũng biết được một máy tính bị xâm nhập hay chưa; do tin tặc ngày nay đang có bước tiến dài trong việc che dấu mã độc và những phần mềm trên máy tính bị lây nhiễm. Rất khó để có thể cung cấp danh sách đặc điểm triệu chứng một máy tính bị lây nhiễm  bởi  đôi khi triệu chứng đó gây ra bởi không tương thích phần cứng hoặc hệ thống không ổn định. Tuy nhiên dưới đây là một số ví dụ rõ ràng về một máy tính đã bị xâm nhập:
  • Bạn nhận được thông báo “Internet Explorer could not display the page” khi truy cập vào trang web nào đó.
  • Trình duyệt web của bạn  (Microsoft Internet Explorer, Mozilla Firefox, Google Chrome) bị đơ, treo,…
  • Trang chủ trình duyệt bị thay đổi.
  • Truy cập bảo mật vào trang web bị chặn.
  • Bạn bị chuyển hướng sang trang khác khi truy cập web.
  • Bạn nhận được vô số popup thông báo.
  • Toolbar lạ xuất hiện trong trình duyệt.
  • Máy tính chạy chậm hơn bình thường
  • Máy tính bị treo, đơ …
  • Có một số biểu tượng mới trên màn hình nền mà bạn không nhận ra được.
  • Máy tính tự động khởi động lại(không phải do Windows Updates)
  • Bạn nhận được thông báo lỗi  (thông báo file bị mất hoặc file bị hỏng)
  • Không thể truy cập Control Panel, Task Manager, Registry Editor hoặc Command Prompt.
Bài viết là một hướng dẫn toàn diện loại bỏ hầu hết malware ra khỏi máy tính của bạn. Nếu bạn thấy bất kì triệu chứng nào bên trên, chúng tôi khuyên bạn nên thực hiện theo hướng dẫn dưới đây để kiểm tra và loại bỏ lây nhiễm.
Do một số loại malware không cho phép bạn chạy các tiện ích hoặc công cụ quét khi Windows ở chế độ thông thường. Bạn nên khởi động Windows vào chế độ Safe Mode với kết nối mạng (Safe Mode with Networking) và thực hiện quét. Để khởi động vào chế độ Safe Mode with Networking, bạn cần làm theo các bước sau:
  1. Loại bỏ tất cả đĩa mềm, CD, và DVD ra khỏi máy tính và sau đó khởi động lại.
  2. Nếu bạn sử dụng Windows XP, Vista hoặc Windows 7, nhấn và giữ phím F8 khi hệ thống khởi động lại. (Nhớ rằng ấn F8 trước khi logo khởi động của Windows xuất hiện). Nếu bạn sử dụng Windows 8, hãy ấn phím Windows key + C , chọn Setting. Chọn Power, giữ phím Shift trên bàn phím rồi chọn Restart. Tiếp tục chọn Troubleshoot và Advanced Option.
  3. Trong Advanced Options chọn Startup Settings, rồi Restart.
  4. Nếu bạn sử dụng Windows XP, Vista hoặc 7 trong Advanced Boot Options, sử dụng phím mũi tên chuyển đến Safe Mode with Networking , và ENTER.
safemode

BƯỚC 1: Loại bỏ bootkit và trojan với Kaspersky TDSSKiller

Trong bước này, chúng ta sẽ quét hệ thống với Kaspersky TDSSKIller nhằm loại bỏ phần mềm độc hại cài đặt trên hệ thống.
  1. Tải phiên bản chính thức mới nhất Kaspersky TDSSKiller.
    KASPERSKY TDSSKILLER DOWNLOAD LINK
  2. Nháy đúp vào tdsskiller.exe để mở bộ công cụ sau đó chọn Change Parameters.
    tdsskiller-change-parameters
  3. Cửa sổ mới hiện lên, chọn Detect TDLFS file system rồi nhấn OK.’
    tdsskiller-detect-tdfls
  4. Bắt đầu quét bằng cách nhấn nút Start Scan.
    tdsskiller-start-scan
  5. Quá trình quét sẽ được hiển thị.
    tdsskiller-scan
  6. Sau khi quét xong, chương trình sẽ hiển thị kết quả trên màn hình. Nếu tìm thấy malware sẽ hiển thị tương tự như sau:
    tdsskiller4
  7. Để loại bỏ lây nhiễm, đơn giản nhấn vào Continue và TDSSKiller sẽ dọn dẹp hộ bạn. Cần khởi động lại để thực hiện loại bỏ hoàn toàn lây nhiễm trên hệ thống.

BƯỚC 2: Sử dụng RKill dừng toàn bộ tiến trình độc hại

RKill là một phần mềm dừng toàn bộ tiến trình độc hại trên máy tính của bạn. Do chỉ dừng tiến trình mà không xóa file, bạn không nên khởi động lại hệ thống vì tiến trình malware hầu như được cấu hình khởi động tự động cùng hệ thống.
  1. Tải về phiên bản chính thức mới nhất RKill. Nó đã được đổi tên để tránh bị các phần mềm độc hại chặn. RKILL DOWNLOAD LINK (Tự động tải RKill và đổi tên thành iExplore.exe)
  2. Nháy đúp vào iExplore.exe khởi động RKill.
    [Image: RKILL Program]
  3. RKill sẽ khởi động và làm việc dưới nền, kiên nhẫn chờ phần mềm tìm tiến trình độc hại và dừng chúng.
    [Image: RKILL stoping malware]
  4. Sau khi hoàn thành, Rkill sẽ tạo ra một log. Không được khởi động lại máy tính vào thời điểm này.
    [Image: RKill Report]

BƯỚC 3: Loại bỏ Trojan, phần mềm bảo mật giả mạo và những file độc hại với phần mềm miễn phí Malwarebytes Anti-Malware

Malwarebytes Anti-Malware Free sử dụng công nghệ hàng đầu phát hiện và loại bỏ dấu về malware, bao gồm sâu, Trojan, rootkit, giả mạo, sypware… Malwarebytes Anti-Malware có thể làm việc tốt và không gây xung đột với phần mềm diêt virus khác.
  1. Tải Malwarebytes Anti-Malware từ đường dẫn dưới đây
    MALWAREBYTES ANTI-MALWARE DOWNLOAD LINK
  2. Sau khi tải xong, đóng hết các chương trình đang hạy, rồi nháy đúp vào biển tượng file cài đặt.
    [Image: Malwarebytes Anti-Malware setup program]
    Picture of User Account Control Máy tính có thể hiện thông báo User Account Control hỏi sự cho phép chạy file này. Chọn “Yes” để tiếp tục cài đặt.
  3. Khi bắt đầu cài đặt Malwarebytes Anti-Malware Setup Wizard sẽ hướng dẫn bạn.
    [Image: Malwarebytes Anti-Malware Setup Wizard]
    Đọc các thông báo và nhấn nút “Next”.
    [Image: Malwarebytes Anti-Malware Final Setup Screen]
  4. Cài đặt xong Malwarebytes Anti-Malware sẽ tự động chạy và bạn sẽ thấy thông báo chương trình cập nhật lần đầu tiên. Để quét hệ thống, sử dụng nút“Fix Now”.
    [Image: Click on the Fix Now button to start a scan]
    Hoặc bạn có thể chọn “Scan”  ->“Threat Scan“ -> “Scan Now”.
    [Image: Malwarebytes Anti-Malware Threat Scan]
  5. Malwarebytes Anti-Malware kiểm tra bản cập nhật nếu có, hoặc bạn sử dụng nút “Update Now”.
    [Image: Click on Update Now to update Malwarebytes Anti-Malware]
  6. Malwarebytes Anti-Malware bắt đầu quét
    [Image: Malwarebytes Anti-Malware while performing a scan]
  7. Sau khi quét xong, kết quả sẽ hiển thị lên màn hình. Để loại bỏ phần mềm độc hại, chọn “Quarantine All”  ->“Apply Now”.
    [Image: Remove the malware that Malwarebytes Anti-Malware has found]
  8. Malwarebytes Anti-Malware sẽ cách ly file độc hại và khóa registry. Khi loại bỏ đôi khi phần mềm yêu cầu bạn khởi động lại.
    [Image: Malwarebytes Anti-Malware while removing viruses]

BƯỚC 4: Loại bỏ adware với AdwCleaner

Công cụ AdwCleaner sẽ quét file độc hại, khóa registry phần mở rộng trên máy tính, trình duyệt, chúng có thể đã được cài đặt mà bạn không hề hay biết.
  1. Tải AdwCleaner với đường dẫn dưới đây.
    ADWCLEANER DOWNLOAD LINK
  2. Trước khi sử dụng AdwCleaner, đóng toàn bộ phần mềm và trình duyệt sau đó nháy đúp vào biểu tượng AdwCleaner.
    AdwCleaner Icon
  3. Cửa sổ phần mềm hiện lên, chọn nút “Scan”
    AdwCleaner scan button
  4. Loại bỏ mã độc tìm thấy bằng nút “Clean”.
    Remove  adware with AdwCleaner
  5. AdwCleaner lưu lại những file hoặc tài liệu đang mở vì phần mềm sẽ khởi động lại máy. Chọn OK.
    AdwCleaner removing malware

Bước 5: Loại bỏ khóa registry độc hại bằng RogueKiller

  1. Bạn có thể tải về phiên bản chính thức bằng đường dẫn dưới đây.
  2. Nháy đúp vào file  “RogueKiller.exe” hoặc “RogueKillerX64.exe”. Chờ Prescan hoàn thành rồi nhấn nút the “Scan” để thực hiện quét hệ thống.
    RogueKiller scanning for viruses
  3. Sau khi quét xong sử dụng “Delete” để xóa khóa registry hoặc file.
    Press Delete to remove malware

Giờ thì bạn đã có thể an tâm loại bỏ hoàn toàn malware ra khỏi hệ thống của mình. Nếu gặp bất kì sự cố malware nào, hãy liên hệ với chúng tôi để được tư vấn và giải quyết.

Theo SD.net

Một số lỗ hổng bảo mật.(cập nhật....)

1. Theo dõi vị trí GPS và cuộc gọi (kiểu như MTMD).

Một lỗ hổng nghiêm trọng trong hệ thống riêng điện thoại di động sử dụng để giao tiếp với nhau trên toàn thế giới – Hệ thống tín hiệu toàn cầu, gọi là SS7
SS7 hay còn gọi là hệ thống tín hiệu số 7 là một bộ giao thức được sử dụng bởi hầu hết các nhà khai thác viễn thông trên toàn thế giới để kết nối  với nhau khi chuyển hướng các cuộc gọi, văn bản và dữ liệu Internet. SS7 cho phép các hãng điện thoại di động thu thập thông tin về vị trí từ tháp điện thoại di động và chia sẻ với nhau. Điều này có nghĩa là một hãng viễn thông Mỹ sẽ tìm thấy khách hàng của mình, không có vấn đề gì ngay cả khi họ đi đến bất kỳ nước nào khác.
Khai thác thành công lỗ hổng trong SS7 có thể cho phép kẻ tấn công lắng nghe tất cả các cuộc gọi bằng giọng nói của bạn cũng như theo dõi vị trí chính xác GPS của bạn.

2. Nhiều lỗ hổng rò rỉ trong Pocket Add-on cho Firefox

Nút Pocket trong trình duyệt Firefox cho phép bạn lưu lại các liên kết, video, các trang web, hoặc các bài báo vào tài khoản Pocket của bạn chỉ với một cú nhấp chuột, giúp bạn đọc chúng sau này dễ dàng hơn, thường là khi ngoại tuyến. Tuy nhiên, các lỗ hổng được phát hiện bởi nhà nghiên cứu bảo mật Clint Ruoho có thể cho phép tin tặc có được quyền truy cập root không hạn chế tới các máy chủ lưu trữ các ứng dụng

3. Có thể bị hack ngay cả khi download phầm mềm từ trang chủ của nhà sản xuất

 Bài viết của Ddos. Trước đây, mục đích chính của MTIM là nghe lén, ăn cắp thông tin qua các gói tin, thay đổi hoặc làm độc ARP, thay đổi DNS. Nhưng với Josh Pitts, MITM không dừng lại ở đó. Ngoài những hệ quả trên của MITM, Josh Pitts đã thay đổi nội dung của gói tin và inject shellcode vào các gói tin ấy. Nó nguy hiểm ở chỗ, khi bạn muốn tải bất kỳ một file cài đặt dạng exe như idm.exe, winrar.exe từ trang chủ, kẻ tấn công sẽ thực hiện tấn công MITM sử dụng BDF và BDFProxy, khi nạn nhân gửi lệnh download, gói tin có chứa file .exe sẽ được kẻ tấn công chặn lại và chèn mã độc vào đó. Lúc này, nạn nhân không một chút hoài nghi bởi lẽ, họ đang tải file cài đặt từ trang chủ của phần mềm. Nhưng không may mắn, họ đã bị dính mã độc.

4.Lỗ hổng xâm nhập trái phép trên android

lỗ hổng trong Debuggerd (trình gỡ lỗi được tích hợp trong Android). Lỗi này có thể bị kết hợp với một số tùy biến để tin tặc thực hiện các mã khai thác trái phép trên thiết bị. hỗ hổng này hiện diện trong tất cả các phiên bản Android bắt đầu từ 4.0 (Ice Cream Sandwich) đến 5.x (Lollipop). Như vậy, ước tính lỗ hổng đang chiếm đến 94% thiết bị chạy Android.
tin tặc có thể tạo ra một tập tin EFL đặc biệt (Executable và Format Linkable - Định dạng thực thi và liên kết) để khiến trình gỡ lỗi (debugger) ngừng hoạt động nhằm xem được các tập tin kết xuất (dump file) và tập tin đăng ký (log file).
lợi dụng cho các mục đích tấn công từ chối dịch vụ, bằng cách liên tục làm ngừng hoạt động trình gỡ lỗi được tích hợp sẵn. Ngoài ra, lỗ hổng này còn xâm nhập được vào camera và các phân vùng lưu trữ bên ngoài.


5. khai thác Portmap  khuếch đại tấn công DDoS.

NFS sử dụng thủ tục RPC (Remote Procedure Calls) để gửi, nhận yêu cầu giữa máy trạm và máy chủ nên dịch vụ portmap (dịch vụ quản lý yêu cầu RPC) cần phải được khởi động trước. Trên máy chủ NFS (máy dự định sẽ chia sẻ dữ liệu) khởi động hai dịch vụ nfs và portmap.
Portmaper: tiến trình này không làm việc trực tiếp với dịch vụ NFS mà tham gia quản lý các yêu cầu RPC từ máy trạm gửi đến.
Portmaper hoạt động trên cổng 111(tcp và udp).

6. Một cách khai thác lỗ hỗng XSS.

Đây là lỗ hổng trong PayPal
  • Kẻ tấn công cần thiết lập một trang web mua sắm lừa đảo hoặc chiếm quyền điều khiển một trang web mua sắm hợp pháp bất kỳ nào đó
  • Sau đó, kẻ tấn công thay đổi nút “CheckOut” (Thanh toán) với một URL được thiết kế để khai thác lỗ hổng XSS
  • Bất cứ khi nào người dùng Paypal duyệt trang web mua sắm đã bị kẻ lừa đảo thay đổi, và bấm vào nút “CheckOut” để trả tiền với tài khoản Paypal của họ, họ sẽ bị chuyển hướng đến trang Secure Payments
  • Trang này thực ra hiển thị một trang web lừa đảo, trong đó các nạn nhân được yêu cầu nhập thông tin thẻ thanh toán của họ để hoàn thành việc mua sắm
  • Sau đó bằng cách nhấp vào nút Submit Payment (xác nhận thanh toán), thay vì trả tiền cho sản phẩm (chẳng hạn như 100 USD) thì người dùng Paypal sẽ trả số tiền này cho kẻ tấn công.
7. Mã độc tống tiền khóa PIN thiết bị Android

LockerPIN phát tán qua các kho ứng dụng của bên thứ ba không rõ nguồn gốc,  lừa người dùng tải về, Sau khi cài đặt thành công, mã độc cố gắng có được quyền quản trị trên thiết bị bằng cách chèn cửa sổ của chính nó lên tin nhắn hệ thống, giả mạo là một cập nhật, Khi nạn nhân click vào cài đặt có vẻ vô hại này, họ không biết rằng đã kích hoạt quyền quản trị trên thiết bị cho mã độc. khi đó LockerPIN sẽ thiết lập hoặc thay đổi khóa PIN của thiết bị, khóa màn hình và yêu cầu khoản tiền chuộc 500$.






































Pack và Unpack

Packer là một kiểu chương trình nén hoặc che dấu file thực thi (executable file). Các chương trình này ra đời bắt nguồn từ mục đích giảm kích thước của file, làm cho việc tải file nhanh hơn.
Rất nhiều các coder hay các hãng phần mềm sử dụng Packer nhằm mục đích khiến cracker/reverser khó khăn và tốn thời gian hơn trong việc bẻ khỏa hoặc đảo ngược phần mềm của họ. Đối với những kẻ chuyên phát tán các phần mềm độc hại (malicious software) thì Packer còn có tác dụng giúp kéo dài thời gian tồn tại của phần mềm càng lâu bị phát hiện càng tốt.
Cụ thể khi sử dụng, Packer nén, mã hóa, lưu hoặc dấu code gốc của chương trình, tự động bổ sung một hoặc nhiều section, sau đó sẽ thêm đoạn code Unpacking Stub và chuyển hướng Entry Point (EP) tới vùng code này. Bình thường một file không đóng gói (Nonpacked) sẽ được tải bởi OS. Với file đã đóng gói thì Unpacking Stub sẽ được tải bởi OS, sau đó chương trình gốc sẽ tải Unpacking Stub. Lúc này code EP của file thực thi sẽ trỏ tới Unpacking Stub thay vì trỏ vào mã gốc. Để hiểu được các phần trên thì các bạn cần hiểu cấu trúc PE file và cách thực thi của nó. Bạn có thể xem bài viết Tìm hiểu cấu trúc PE file.
Cấu trúc đầy đủ của một PE file như sau:
anh1
Trong môi trường DOS, chương trình sẽ kiểm tra DOS header và nếu hợp lệ sẽ thực thi DOS Stub. Còn bình thường file của chúng ta hay chạy trên Windows thì 2 trường này có thể bỏ qua. Trường này là một cấu trúc có 19 thành phần.
Cuối trường DOS header sẽ có một thành phần là: e_lfanew sẽ chứa offset của PE header so với vị trí  đầu file. Chương trình sẽ thực thi đến PE header. Tiếp đến là đọc Section Table để xem trong chương trình có những section nào. Sau đó chương trình sẽ nhảy đến từng section và thực thi. Entry Point thường nằm ở các section đầu nếu file chưa bị đóng gói.

2. Nguyên lí hoạt động của Packer

Cấu trúc của file PE ban đầu sẽ có dạng như sau:
packer-1
File này sẽ bị nén và mã hóa rồi được thêm vào một hay nhiều section do packer tự tạo ra.
Capture
Khi chạy file thì chương trình sẽ được thực thi như sau:
packer-3
Tiếp theo chương trình sẽ thực thi PE header:
packer-4

packer-5
packer-6
Sau khi nhảy đến Entry Point của section UMPACKER thì toàn bộ giá trị của các thanh ghi sẽ được lưu lại nhờ lệnh PUSHAD. Sau đó Import Table sẽ được tính toán lại. Trong một file bị pack, Import Table sẽ bị thay đổi và các dữ liệu sẽ bị mã hóa.
Tiếp theo chương trình sẽ khôi phục lại giá trị các thanh ghi đã được lưu trong Stack bằng lệnh POPAD. Cuối cùng chương trình sẽ nhảy đến Origin EntryPoint và thực thi như file lúc chưa bị đóng gói.

3.Nguyên lí Unpack

Đầu tiên ta phải nhận biết được xem một file có bị đóng gói hay không bằng cách dùng các công cụ như PEiD :
packer-7
Ở đây mình dùng file UnPackMe_ASPack2.12 làm đối tượng để test thử. File trên đã bị đóng gói bằng ASPack. Thông thường, các bước cơ bản để thực hiện unpack như sau:
packer-8
  1. Tìm OEP (Origin Entry Point): Orginal entry point là nơi mà chương trình gốc thực sự bắt đầu thực thi. Ta sẽ dùng một số công cụ debug file như OllyDbg và IDA để tìm lại OEP.
  1. Kết xuất file (Dump): Sau khi nhảy đến OEP ta sẽ tiến hành dump file. Mục đích của việc này là fix lại các section và import table như file ban đầu trước khi bị đóng gói. Sử dụng Plugin OllyDumpEx để dump file.
packer-9
  1. Sửa lại IAT (Repair Import Address Table): Sử dụng công cụ ImportREC.
packer-10
  1. Kiểm tra file xem còn các cơ chế Anti hoặc ngăn chặn việc thực thi hay không rồi tiến hành chỉnh sửa. Đảm bảo file sau unpack thực thi bình thường (Phần này sẽ được giới thiệu trong các phần sau).
một số kĩ thuật để tìm OEP(Origin Entry Point) cơ bản. Đây là quá trình khó nhất trong khi unpack.
Như đã giới thiệu trong phần trước thì các bước để unpack một file như sau:
  1. Tìm OEP
  2. Kết xuất file (Dump)
  3. Sửa lại IAT (Repair IAT)
  4. Kiểm tra file xem còn các cơ chế Anti hoặc ngăn chặn không cho thực thi không và tiến hành chỉnh sửa. Đảm bảo file sau unpack thực thi bình thường .
Bài viết sử dụng UnPackMe_ASPack2.12.exe và OllyDbg để minh họa.

1.1   Tìm opcode

Cách này đơn giản và hơi thô, chỉ có thể áp dụng với các trình packer đơn giản, không thể áp dụng nó cho các trình packer khó nhằn như Asprotect.
Ý tưởng cơ bản là tìm opcode của lệnh  LONG JMP (0xE9) hoặc LONG CALL (0xE8). Các trình packer sau khi thực hiện đóng gói file thì có khả năng có một lệnh nhảy hoặc một lời gọi hàm (call) tới section đầu tiên, mục đích là để tới được OEP. Với phương pháp này, ta hi vọng các lệnh JUMP hoặc CALL sẽ xuất hiện ngay đầu tiên trong quá trình tìm kiếm hoặc trình packer không có cơ chế tự động chỉnh sửa.
Ta chỉ cần tìm kiếm “Binary String” các chuỗi E9,E8. Sau đó xem câu lệnh nào có opcode. Ngoài ra câu lệnh đó phải nằm trong section đầu tiên của chương trình.
Chú ý , đôi khi ta xem code của các trình packer sẽ thấy có các lệnh kiểu như CALL EAX, CALL EBX, JMP EAX. Rất nhiều trình packer thường sử dụng các thanh ghi nhằm mục đích để che dấu việc nhảy tới OEP.

1.2 Sử dụng tính năng tìm kiếm OEP của OllyDBG

Mở đối tượng bị đóng gói trong OllyDBG, chọn Options > Debugging options hoặc nhấn phím tắt Alt+O, chuyển tới tab SFX:
vd1
Trong thẻ SFX  có 2 tùy chọn: “blockwise” cho phép tìm kiếm nhanh nhưng độ chính xác có thể không cao; “bytewise” cho phép  tìm kiếm với độ chính xác cao hơn nhưng tốc độ chậm hơn.
Chuyển qua thẻ Exceptions, lựa chọn tương tự như hình:
vd2
Sau khi cấu hình xong các bạn khởi động lại OllyDbg thì sẽ được như sau :
vd3
404000 chính là địa chỉ OEP của chương trình.Bạn có thể thử với tùy chọn khác trong SFX.
Sau khi thực hiện xong phương pháp này thì phải thiết lập tab SFX trở về tùy chọn ban đầu, nếu không thì OllyDBG sẽ không dừng lại tại EP như bình thường nữa mà luôn luôn thực hiện việc tìm kiếm OEP.

1.3. Sử dụng BPM on access với OllyDBG đã patch để tìm OEP

Load file vào OllyDBG, chuyển tới cửa sổ Memory map, lựa chọn section đầu tiên để thiết lập BPM:
vd4
Chuyển về cửa sổ code, nhấn F9 để chạy, OllyDBG sẽ break và dừng lại tại đây:
vd5
Ta thấy khi trace qua lệnh ret thì chương trình không nằm trong phân vùng đầu tiên nên ta cứ nhấn F9.Khi đó có thông báo hiện ra:
vd6
Khi đó chương trình đã kết thúc.Vậy chỗ OEP không nằm trong section đầu tiên. Ta thử với các section tiếp theo.
Với section thứ 2 tại địa chỉ 402000 cũng tương tự section thứ nhất. Ta thử tiếp với section thứ 3 tại địa chỉ 404000.Khi ta nhấn F9 thì chương trình sẽ dừng tại 404000 với câu lệnh WAIT.
Vì đây không nằm ngoài section ta đặt break point nên nó là địa chỉ câu lệnh đầu tiên của OEP.
vd7

1.4. PUSHAD Method

Nhiều trình packer sau khi được load vào OllyDBG ta thấy lệnh đầu tiên được thực thi là lệnh PUSHAD. Lệnh này nhằm mục đích bảo toàn các thanh ghi, nó sẽ thực hiện lưu toàn bộ giá trị khởi tạo của tất cả các thành ghi vào stack, sau đó thực hiện quá trình unpack, cuối cùng trước khi nhảy tới OEP, packer sẽ thực hiện việc khôi phục lại giá trị của các thanh ghi đã lưu trên stack bằng lệnh POPAD. Cặp lệnh PUSHAD và POPAD thường đi cùng với nhau. Nếu như ta thấy ở đâu đó trong mã của chương trình xuất hiện lệnh PUSHAD thì bên dưới chắc chắn sẽ có câu lệnh POPAD. Đây là phương pháp được áp dụng thành công cho khá nhiều trình packer.
Đầu tiên  load UnPackMe_ASPack2.12  vào OllyDBG và nhấn F9:
vd8
Thực hiện trace qua lệnh PUSHAD và quan sát trên cửa sổ Stack:
Như các bạn thấy tại cửa sổ Stack, giá trị ban đầu của các thanh ghi đã được lưu lại.Do vậy, trước khi nhảy tới OEP thì chắc chắn packer phải thực hiện việc khôi phục lại các giá trị đã lưu này. Căn cứ vào đó, ta có thể tiến hành đặt một Hardware BPX On Access trong OllyDBG nhằm break lại khi packer thực hiện lệnh khôi phục giá trị, và khi break ta sẽ dừng lại tại lệnh nhảy tới OEP.
Lựa chọn thanh ghi ESP, nhấn chuột phải và chọn Follow in Dump:
vd9
vd10
Sau đó ta đặt breakpoint hardware vào 0018FF6C.
Sau khi đặt BP xong, nhấn F9 để chạy, ta sẽ dừng lại tại đây:
vd11
Dưới lệnh POPAD sẽ là câu lệnh nhảy đến 004113BA. Nhưng nếu nhìn kĩ hơn một chút ta sẽ thấy có lệnh push 00404000 và ret. Như vậy đó chính là địa chỉ của OEP.
Trên đây mình đã trình bày 4 cách để unpack một file .exe cơ bản. Các bạn có thể tự tìm thêm các ví dụ để thực hành thêm và tham khảo tài liệu có sẵn trên mạng.
theo SD.net

25 cách tăng cường bảo mật cho một máy chủ Linux

Hầu hết mọi người đều cho rằng hệ thống bảo mật của Linux đã được cài đặt sẵn và không cần phải thay đổi nhiều. Tuy nhiên, Linux có những mô hình bảo mật riêng cho các trường hợp khác nhau.Việc lựa chọn chế độ phù hợp có thể giúp tăng tính bảo mật cho toàn hệ thống. Linux có thể rất khó điều khiển, tuy nhiên nó lại có nhiều tùy chỉnh phù hợp và linh hoạt.
Việc bảo đảm an toàn cho một hệ thống khỏi những kẻ tấn công luôn là những nhiệm vụ đầy khó khăn đối với những quản trị viên. Trong bài viết này, chúng tôi sẽ giới thiệu 25 mẹo để có thể bảo vệ một server Linux hiệu quả hơn, hy vọng có thể giúp ích cho những người đã và đang sử dụng hệ điều hành này.
  1. Bảo vệ hệ thống vật lý
    Loại bỏ các nguy cơ bị boot hệ thống BIOS bằng CD/DVD, đĩa mềm và các thiết bị bên ngoài. Hãy đặt đặt mật khẩu cho BIOS và GRUB để ngăn chặn tất cả các kết nối giữa hệ thống với các thiết bị vật lý bên ngoài.
  2. Phân vùng ổ cứng
    Việc phân chia dữ liệu không chỉ khiến cho nó được sắp xếp hợp lý hơn, mà còn giúp các dữ liệu được bảo vệ tốt hơn trong trường hợp có sự cố không mong muốn xảy ra. Khi đó, chỉ có các dữ liệu trong những vùng xảy ra sự cố bị ảnh hưởng, không gây hại tới các gói dữ liệu khác. Một mô hình phân chia bạn có thể học theo, trong đó, các ứng dụng của bên thứ ba nên được cài vào file ‘/opt’
    /
    /boot
    /usr 
    /var 
    /home
    /tmp
    /opt
  3. Bớt đi các gói dữ liệu không cần thiết, hạn chế lỗ hổng bảo mậtBạn có bao giờ sử dụng tất cả các gói dịch vụ? Theo chúng tôi, bạn nên bỏ đi những gói tin không cần thiết để tránh việc bị tấn công thông qua những lỗ hổng của gói đó. Hãy kiểm tra lại một lượt xem có những ứng dụng nào không cần đến và gỡ chúng đi. Sử dụng lệnh ‘chkconfig’ để tìm các dịch vụ đang được chạy ở mức độ 3
    # /sbin/chkconfig --list |grep '3:on'
    Một khi đã phát hiện ra những dịch vụ không cần thiết, loại bỏ chúng bằng câu lệnh
    # chkcongfig serviceName off
    Hoặc có thể sử dụng gói quản lý RPM ví dụ như “yum” hay “apt-get” để liệt kê tất cả các gói tin đã được cài đặt và loại bảo chúng bằng các câu lệnh sau
    #yum -y remove package-name
    # sudo apt-get remove package-name
  4. Kiểm tra các cổng kết nối mạngVới sự trợ giúp của cú pháp ‘netstat’ bạn có thể kiểm tra tất cả các cổng kết nối mở và các chương trình có liên kết ra bên ngoài. Và giống như ở trên, hãy sử dụng ‘chkcongfig’ để loại bỏ chúng
    # netstat -tulpn
  5. Sử dụng Secure Shell(SSH)Các giao thức  cũ như Telnet và rlogin chỉ sử dụng những text đơn giản để truyền tin, không có cơ chế mã hóa thông tin. SSH là giao thức an toàn hơn,vì nó sử dụng sẽ mã hóa thông tin trước khi truyền đi trong suốt quá trình giao tiếp giữa người dùng với server. Hãy mở file cấu hình chính của SSH và sử dụng những cú pháp sau để giới hạn đăng nhập của người dùng
    # vi /etc/ssh/sshd_config
    Loại bỏ Root Login
    PermitRootLogin no
    Chỉ chấp nhận một vài người dùng đặc biệt
    AllowUsers username
    Sử dụng giao thức SSH version 2
    Protocol 2
  6. Thường xuyên update hệ thốngLuôn giữ hệ thống của bạn được cập nhật những bản vá,sửa lỗi và nâng cấp phần nhân hệ thống ngay khi có thể.
     # yum update
     # yum check-update
  7. Khóa CronjobsCron có những khả năng tự làm việc, tuy nhiên nó cũng cho phép người dùng tự điều khiển nếu như họ muốn. Có thể điều khiển thông qua các file có địa chỉ ‘/etc/cron.allow’ và ‘etc/cron.deny’. Thêm tên của một người sử dụng vào cron.deny nếu như không muốn họ chỉnh sửa cron, hoặc thêm vào cron.allow nếu cho phép họ sử dụng cron. Nếu như muốn tất cả những người sử dụng không thể sử  dụng cron, thêm dòng lệnh ALL vào file ‘cron.deny’
     # echo ALL >>/etc/cron.deny
  8. Tắt USB stick.Đã từng rất nhiều lần xảy ra chuyện chúng ta muốn hạn chế người sử dụng kết nối với hệ thống bằng USB để tránh tình trạng đánh cắp thông tin. Hãy tạo một file ‘/etc/modprobe.d/no-usb’ và thêm những dòng sau để hệ thống không nhận các thiết bị USB nữa
    install usb-storage /bin/true
  9. Sử dụng SELinuxHệ thống bảo mật nâng cao(SELinux) là một cơ chế bảo mật cung cấp ở vùng nhân. Tắt nó đi đồng nghĩa với việc loại bỏ cơ chế bảo vệ ra khỏi hệ thống. Hãy suy nghĩ thật kĩ mỗi khi muốn tắt nó, đặc biệt nếu hệ thống của bạn cần kết nối internet và có chế độ truy cập là công khai.
    SELinux có ba chế độ điều khiển sau:
    Enforcing: Chế độ thông thường, kích hoạt SELinux và để nó toàn quyền hoạt động tự do
    Permissive: Trong chế độ này, SELinux sẽ phải gửi những báo cáo cũng như cảnh báo cho người dùng trước mỗi hoạt động. Chế độ này vô cùng hữu ích trong trường hợp chuẩn đoán và xử lý nếu có sự cố xảy ra.
    Disable:tắt SELinux
  10. Loại bỏ các màn hình kiểu KDE và GNOMERõ ràng là không cần thiết phải sử dụng các màn hình Window như là KDE hay GNOME cho server của bạn. Bạn có thể tắt hoặc gỡ nó đi để tăng cường bảo mật cho server. Để tắt nó , hãy mở file ‘etc/initab’ và đặt  chạy ở mức độ 3. Còn nếu muốn loại bỏ hoàn toàn khỏi hệ thống, hãy sử dụng câu lệnh sau:
    # yum groupmove "X Window System"
  11. Tắt IPv6Nếu như bạn không sử dụng IPv6, hãy tắt nó đi bởi vì phần lớn các ứng dụng không đòi hỏi giao thức này và hiện tại, nó cũng không cần thiết cho server nữa. Hãy vào file cấu hình mạng, thêm dòng lệnh sau để loại bỏ IPv6# vi /etc/sysconfig/network
    NETWORKING_IPV6=no
    IPV6INIT=no
  12. Hạn chế sử dụng lại các mật khẩu cũSẽ cực kỳ hữu ích nếu như bạn ngăn chặn việc những người sử dụng đặt lại một trong những mật khẩu cũ của họ. Các mật khẩu sẽ được lưu trữ tại /etc/pam.d/system-auth, file này chỉ có thể truy cập trong chế độ PAM.
    Mở file ‘etc/pam.d/system-auth’ trong RHEL/CentOS/Fedora.
    # vi /etc/pam.d/system-auth
    Thêm dòng lệnh sau vào mục ‘auth’
    auth        sufficient      pam_unix.so likeauth nullok
    Mờ file ‘etc/pam.d/common-password’ trong Ubuntu/Debian/Linux Mint
    # vi /etc/pam.d/common-password
    Thêm dòng lệnh sau vào mục ‘password’ để ngăn người dùng sử dụng lại 1 trong 5 password gần nhất của họ
    password    sufficient      pam_unix.so nullok use_authtok md5 shadow remember=5
    Nếu như người dùng muốn sử dụng lại bất kỳ mật khẩu nào trong số 5 cái mới nhất, họ sẽ nhận được một dòng cảnh báo
    Password has been already used. Choose another.
  13. Làm thế nào để kiểm tra thời gian sử dụng một password của người sử dụngTrong Linux, mật khẩu  người dùng được lưu trữ trong file ‘/etc/shadow’ dưới dạng mã hóa. Để kiểm tra thời gian sử dụng password của người sử dụng, bạn sẽ cần sử dụng câu lệnh ‘chage’. Nó sẽ  hiển thị lên các thông tin về thời hạn của một mật khẩu theo số liệu về thời gian thay đổi gần nhất. Những thông tin này được hệ thống sử dụng để quyết định khi nào người sử dụng cần thay đổi mật khẩu của họ
    #chage -l username
    Để thay đổi giới hạn cho một password, sử dụng câu lệnh
    #chage -M 60 username
    #chage -M 60 -m 7 -W 7 username
    Với -M:Số ngày tồn tại tối đa của mật khẩu
    -m:số ngày tối thiểu
    -W:Số ngày để đưa ra cảnh báo
  14. Khóa và mở một tài khoản theo cách thủ côngViệc khóa và mở khóa rất hữu dụng, thay vì phải loại bỏ hẳn một tài khoản ra khỏi hệ thống, bạn chỉ cần khóa tài khoản đó lại trong vòng 1 tuần hoặc một tháng. Để khóa một tài khoản mà bạn muốn, sử dụng cú pháp sau
     # paswd -l accountName
    Lưu ý: Việc khóa thực chất chỉ là thay mật khẩu đã được mã hóa với một sâu kí tự khác. Nếu ai đó muốn truy cập bằng tài khoản này, nó sẽ hiện ra thông báo
     # su - accountName
     This account is currently not available.
    Để mở khóa và cho phép một mật khẩu bị khóa có thể truy cập lại, sử dụng câu lệnh dưới đây, nó sẽ lại thay thế chuỗi ký tự với mật khẩu được mã hóa
     passwd -u accountName
  15. Khuyến khích sử dụng những mật khẩu mạnh hơnMột số lượng lớn người sử dụng chỉ đặt cho mình những mật khẩu yếu và dễ bị hack. ‘pam_cracklib’ trong chế độ PAM sẽ buộc người dùng phải sử dụng cho mình những mật khẩu mạnh và an toàn hơn. Hãy thêm những dòng sau bằng một trình biên soạn
     # vi etc/pam.d/system-auth
    và thêm dòng sau(lcredit,ucredit, dcredit hay ocredit tương ứng với chữ thường, chữ hoa, chữ số và các kí tự khác)
     /lib/security/$ÍA/pam_cracklist.so retry = 3 minlen=8 lcredit =-1 ucredit=-2 dcredit=-2 ocredit=-1
  16. Sử dụng Iptable(tường lửa)Một điều được khuyến khích đó là bật chế độ tường lửa của Linux để kiểm soát những truy cập trái phép vào trong server của bạn. Hãy dùng iptable để có thể kiểm tra những gói tin đến, đi hoặc chuyển tiếp. Chúng ta hoàn toàn có thể xem xét địa chỉ nguồn và đích đến để có quyết định chấp nhận gói tin hay không
  17. Loại bỏ tổ hợp Ctrl+Alt+DeleteTrong hệ điều hành Linux, ấn tổ hợp phím ‘CTRL+ALT+DELETE’ sẽ bắt đầu quá trình reboot hệ thống. Rõ ràng đây không phải và một ý hay, giả sử nếu như có một ai đó lỡ tay ấn nhầm.
    Tổ hợp phím được định nghĩa trong file’/etc/inttab’ . Thông thường các dòng lệnh sẽ bị ẩn đi, vì thế chúng ta cần làm nó hiện ra trước.
    # Trap CTRL-ALT-DELETE
    #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
  18. Kiểm tra các tài khoản không có passwordBất kể tài khoản nào mà không có mật khẩu đồng nghĩa với việc nó đang mở ra một lối truy cập trái phép cho bất kỳ ai. Vì thế bạn nên chắc chắn rằng tất cả các tài khoản đều sử dụng một mật khẩu mạnh và không ai có thể truy cập  một cách trái phép được. Các tài khoản không có mật khẩu là một đe dọa về bảo mật. Để kiểm tra các tài khoản này sử dụng câu lệnh sau
    #cat /etc/shadow |awk -F: '($2==""){print $1}'
  19. Hiển thị những tiêu đề cảnh báo SSH trước khi đăng nhậpSẽ là rất tốt nếu như bạn luôn đưa ra những tiêu đề về cảnh báo bảo mật SSH mỗi khi có người dùng đăng nhập.
  20. Giám sát các hành vi của người dùng.Nếu có quá  nhiều người sử dụng server của bạn, việc thu thập và phân tích các thông tin về mỗi hành vi của họ là vô cùng quan trọng. Tuy nhiên, làm thế nào để có thể thực hiện được việc này?
    Có hai công cụ vô cùng hữu ích cho chúng ta đó là ‘psacct’ và ‘acct’, giúp chúng ta quản lý mọi hành vi của những người sử dụng và các tiến trình diễn ra trong hệ thống.
    Những công cụ này chạy ngầm trong hệ thống và ghi lại từng hành vi của người sử dụng, cũng như theo dõi việc sử dụng tài nguyên cho các dịch vụ, ví dụ như Apache, MySQL, SSH, FTP…
  21. Kiểm tra, đánh giá các hoạt động một cách thường xuyên.Hãy di chuyển các hoạt động vào log server, điều này tránh việc những kẻ tấn công có thể xâm nhập vào và chỉnh sửa các hoạt động hệ thống. Thông thường, các file lưu trữ các hoạt động được đặt tại địa chỉ ‘/var/log’.
  22. Xây dựng file BackupTrong mọi hệ thống, luôn cần có một tệp tin làm nhiệm vụ sao lưu và phục hồi lại mỗi khi có sự cố xảy ra.
  23. Kết nối NICCó hai loại kết nối NIC sau
    mode=0 Round Robin
    mode=1 kích hoạt và backup
    Khi xây dựng kết nối, chúng ta “kéo” hai hoặc nhiều hơn những kết nối lại với nhau và dùng một trường kết nối ảo để sử dụng IP giao tiếp với các server khác, Nếu có một thẻ NIC bị tạm ngừng hoặc không thể sử dụng được, thì các hoạt động vẫn diễn ra bình thường.
  24. Đặt địa chỉ /boot ở chế độ read-onlyLõi Linux và những phần tử có liên quan đều nằm trong địa chỉ /boot vơi chế độ mặc định read-write. Chuyển về chế đọ read-only sẽ giảm thiểu các nguy cơ bị chỉnh sửa từ bên ngoài hoặc gây ra các lỗi với file boot. Để làm điều này, mở file ‘/etc/ftad’
     # vi /etc/fstad
    Và thêm dòng lệnh sau vào cuối, lưu rồi đóng file lại
     LABEL=/boot     /boot     evt2    default
    Lưu ý rằng, nếu bạn muốn nâng cấp nhân hệ thống bạn cần phải đặt lại về chế độ read-write
  25. Bỏ qua ICMP hoặc các yêu cầu quảng cáoThêm dòng sau vào “/etc/sysctl.conf” để bỏ qua các yêu cầu ping hay quảng cáo
    net.ipv4.icmp_echo_ignore_all = 1
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    Lưu lại các thay đổi cấu hình trên bằng câu lệnh
    #sysct1 -p
Theo SD.net