Thursday, August 24, 2017

[EVE-NG] Cài đặt EVE-NG trên VMware Workstation

1.    Yêu cầu hệ thống


EVE-NG hiện đang được phát hành dưới dạng tệp OVA và ISO. OVA là một định dạng Công cụ Mở Ảo. Đó là một kho lưu trữ (TAR) chứa các đĩa và tập tin cấu hình (OVF hoặc Open Virtualization File) cho máy ảo. EVE-NG có thể được cài đặt trực tiếp trên phần cứng vật lý, mà không cần ảo hóa bằng cách sử dụng hình ảnh ISO. Vì EVE-NG chạy nhiều hypervisor nên chúng tôi khuyên bạn nên sử dụng một máy chủ vật lý dành riêng cho nó, mà không cần bất kỳ phần mềm ảo hóa nào. Lưu ý rằng ảo hóa lồng nhau không phải là một điều tốt và có thể dẫn đến hiệu suất kém.
EVE-NG yêu cầu:
·       Bộ vi xử lý Intel VT-x / EPT hoặc AMD-V / RVI.
·       Một trong những điều sau đây:
o   Ubuntu 16.04 64bit (đề xuất với bất kỳ bộ xử lý nào).
o   VMware ESXi 5.1 trở lên
o   VMware Workstation 11 hoặc phiên bản mới hơn
o   VMware Fusion 5 hoặc mới hơn
o   VMware Player 5 hoặc mới hơn
Yêu cầu CPU và RAM phụ thuộc vào số nút cần thiết để chạy. 1 CPU và 2GB RAM có thể đủ cho IOU / IOL và Dynamips, nhưng sẽ không đủ cho topo với các bộ định tuyến CSR1000V.
Nói cách khác các yêu cầu EVE-NG giống nhau đối với ảo hóa lồng nhau ESXi hoặc Cisco VIRL / CML. EVE-NG vẫn có thể hoạt động mà không có bộ xử lý Intel VT và có thể chạy cài đặt bên trong hypervisors khác nữa Nhưng:
·       Các thiết bị 64 bit (x86_64) sẽ không hoạt động.
·       Hiệu suất kém nên được mong đợi với 32 bit (i386) thiết bị


2.    Cài đặt trên VM ware


Tải tập tin EVE Community Edition.ova vào máy tính của bạn . http://www.eve-ng.com/index.php/downloads/eve-ng



Bắt đầu VMware Workstation, sau đó chọn File> Open.

Chọn tập tin EVE Community Edition.ova được lưu trữ trong máy > Open.


Chọn > Import

Quá trình Import  bắt đầu :

Khi Import hoàn tất, chọn  > Edit virtual machine setting 

Trong Tab Hardware  cài đặt dung lượng RAM và CPU cần thiết cho LAB



Ps: Nên chọn một nữa cấu hình mà máy bạn có .
Chú ý Processors, chọn Visualize Intel VT-x/EPT or  AMD-V/RVI và Visualizer CPU performance counters để EVE-NG có thể sửa dụng Qmenu

Network Adaptor Đầu tiên, chọn NAT cho EVE-NG với Internet và các giao diện Web được sử dụng để mở nó. 


Trước bắt đầu với EVE-NG chọn Upgrade this virtual machine để upgrade máy ảo EVE-NG cho phù hợp với phiên bản VM-ware của bạn .

Sau đó, thực hiện Power On  EVE-NG VM và bắt đầu vào những bước cài đặt đầu tiên trước khi sửa dụng :


 








Sau khi mở EVE-NG VM xong Login với User là : root và mật khẩu là : eve (theo mặc định) và Cấu hình ban đầu của EVE-NG như sau.



Cài mật khẩu cho EVE-NG (nên để mặc định : eve) và nhấn OK

Nhập mã một lần nữa và chọn OK.

Cài Hostname cho EVE-NG và nhấn OK

Cài DNS Name , sau đó chọn OK.

Thiết lập địa chỉ IP cho EVE-NG
          +Chọn DHCP nếu muốn nó nhận IP tự động của NAT
          +Chọn Static nếu muốn đặt IP tĩnh cho EVE-NG


Đặt NTP Server trong Sync Time, sau đó chọn OK.

Chọn Proxy Configuration Nếu VM với Internet thông qua một Proxy Server , Chọn direct connection (khuyên dùng) nếu muốn kết nối trực tiếp , chọn OK.


EVE-NG VM sẽ Khởi động lại một lần nữa.


Khi hoàn tất, và đăng nhập trở lại


Initial Configuration EVE-NG, sau đó thử mở Trình duyệt đi đến http: // IP-EVE-NG -VM (đây là địa chỉ ip của EVE-NG , bạn có thể dùng lệnh ifconfig để kiểm tra ip của nó vd :192.168.220.128 )   và Đăng nhập với  admin  và mật khẩu là eve (theo mặc định) và nhấn Sign In  và bắt đầu sửa dụng EVE-NG

Tiếp tục cài các trình hổ trợ cho EVE-NG  : http://tacchienmang.blogspot.com/2017/08/eve-ng-windows-side-client-cho-eve-ng.html






































Wednesday, August 2, 2017

[EVE-NG] UNetLabv2

TÓM TẮT

Tôi phát triển chương trình giả lập mạng kể từ năm 2011, và thậm chí nếu tôi không phải là lập trình viên, tôi có thể nói tôi đã làm một công việc tốt, đặt iou-web (lúc đầu) và UNetLab (cuối cùng) là một đối thủ cạnh tranh tốt của GNS3 và VIRL mà không Bất kỳ ngân sách nào.
Nếu bạn đang tìm kiếm EVE-NG hãy làm theo liên kết .
Dưới đây bạn có thể đọc một bản tóm tắt ngắn gọn về phần mềm của tôi và kiến ​​trúc của UNetLabv2.

Về cơ bản UNetLabv2 có các tính năng giống UNetLab và cải tiến:
  • Hàng ngàn nodes cho mỗi phòng thí nghiệm;
  • Phòng thí nghiệm phân bố giữa hàng chục nodes vật lý hoặc ảo;
  • Phòng thí nghiệm chạy không giới hạn cho mỗi người dùng;
  • Hỗ trợ cho Ansible / NAPALM / ... các công cụ tự động hóa

CÁC WEBIOL / IOU-WEB / UNL / UNETLAB / EVE-NG TRƯỚC ĐÂY

Vào cuối năm 2011, tôi cần một công cụ để mô phỏng mạng. Điều kiện tiên quyết là:
  • Tính di động: phòng thí nghiệm phải được exportable và importable;
  • Sự ổn định: chạy lab phải ổn định, tránh va chạm;
  • Hiệu suất: các phòng thí nghiệm phải có khả năng chạy vào một máy tính xách tay giá rẻ hoặc vào máy ảo.
GNS3 là lựa chọn duy nhất có sẵn, và nó không thể đáp ứng tất cả các điều kiện tiên quyết. Tôi quyết định phát triển một phần mềm mô phỏng mạng mới dựa trên IOL (IOS trên Linux, bởi Cisco). Tôi biết nhiều người của Cisco, và tôi muôn trở thành thành viên của gia đình Cisco, sớm hay muộn. Trong thời gian chờ đợi tôi nhận ra Cisco phát triển nội bộ một phần mềm tương tự, được gọi là WebIOL.
WebIOL được phát triển trong Perl và chỉ dành cho các nhà tuyển dụng của Cisco. Nó chứa một số phòng thí nghiệm cơ bản từ chương trình Cisco 360.
Sau một vài phiên bản alpha, vào ngày 23 tháng 1 năm 2012 iou-web đã được phát hành ra công chúng. Iou-web (không phải webiou hoặc web-iou) được phát triển bằng PHP và chỉ trong vài tháng đã đếm được hàng trăm người dùng trên toàn thế giới. Nếu GNS3 hỗ trợ thực IOSes chỉ (thông qua Dynamips), iou-web được hỗ trợ IOL chỉ. Nhưng vì IOL nhanh hơn Dynamips nên nhiều người sử dụng đã thích iou-web.
Trong năm 2013 tôi nhận ra iou-web quá hạn chế, tôi cần một cách "thống nhất" để mô phỏng mạng, bao gồm tường lửa, cân bằng tải và vân vân. Hơn nữa multicasting sử dụng IOL đã được nghe trộm. Tôi đã có nhiều điều kiện tiên quyết hơn:
  • Bao gồm các thiết bị ảo của nhà cung cấp trong phòng thí nghiệm;
  • Bao gồm IOS thực trong phòng thí nghiệm;
  • Bao gồm (có thể) giả lập từ các nhà cung cấp khác nhau;
  • Đa người dùng.
Tôi đã viết lại iou-web để tạo một hệ thống mô phỏng mạng mở rộng. Ý tưởng là:
  • Mỗi nút (thiết bị mô phỏng) phải được gắn vào một lớp chung;
  • Một lớp phổ biến tốt đẹp có thể là một cầu Ethernet Ethernet (OVS cũng được hỗ trợ). Vào ngày 06 tháng 10 (2014) UNetLab đã được phát hành ra công chúng. Được phát triển trong PHP bằng cách sử dụng khuôn khổ API REST và ứng dụng một trang (jQuery). Trong vài tháng tôi đã có thể tính từ 5-6 trăm người dùng hàng ngày. Tôi sẽ đặt tên nó là UNL, nhưng trang web không phải là miễn phí.
Ban đầu tôi đã có ý tưởng bao gồm Huawei eNSP, nhưng vì các nút eNSP mong đợi một chuỗi cụ thể, không ai có thể chạy các nút eNSP bên ngoài eNSP.
Từ năm 2015, tôi đã không có thời gian rảnh rỗi cho UNetLab, vì vậy một nhóm những người đã chia UNetLab và EVE-NG vào ngày 5 tháng 1 năm 2017 đã được công bố rộng rãi nhưng đó là một câu chuyện khác vì tôi không thuộc EVE- Đội NG.

TẠI SAO CẦN CÓ UNETLABV2


Trong hai năm qua, trọng tâm của tôi chuyển sang tự động hóa mạng, và bây giờ tôi vẫn cần một nền tảng mô phỏng mạng thống nhất nhưng các điều kiện tiên quyết đã thay đổi. Nhưng trước đó, hãy để tôi chỉ ra giới hạn UNetLab:
  • Mỗi giới hạn máy chủ lưu trữ: hiện tại mỗi máy chủ có thể chạy đến 256 phụ độc lập, vì giới hạn cổng điều khiển;
  • Mỗi nút thí nghiệm giới hạn: hiện tại mỗi pod / lab có thể chạy đến 128-1 nút, bởi vì giới hạn cổng console;
  • Mỗi giới hạn của người dùng: hiện tại mỗi người dùng có thể chạy lên đến một pod / lab một thời gian, bởi vì giới hạn cổng console;
  • Chỉ một máy chủ: hiện tại không có cách nào để thực hiện cài đặt phân phối UNetLab (OVS có thể được sử dụng nhưng nhiều loại khung được lọc theo mặc định);
  • Config quản lý: nhận và đặt cấu hình khởi động được thực hiện thông qua các kịch bản mong đợi, chúng chậm, không tiên đoán, và không thể bao gồm tất cả các loại nút;
  • Các giao diện nối tiếp Dynamips không được hỗ trợ;
  • Không được phép thay đổi tô pô được phép trong khi phòng thí nghiệm đang chạy, theo thiết kế.
Giới hạn cổng điều khiển xảy ra bởi vì mỗi nút điều khiển đều có cổng cố định, được tính như sau: ts_port = 32768 + 128 * tenant_id + device_id. Hơn nữa, không có hơn 512 nút IOL có thể chạy bên trong cùng phòng thí nghiệm vì device_id phải là duy nhất cho mỗi người thuê.
Vì vậy, UNetLab v2 phải có khả năng:
  • Chạy một phòng thí nghiệm phân tán (giữa các nút cục bộ hoặc vùng địa lý);
  • Chạy thử nghiệm với một số không giới hạn các nút;
  • Cho phép mỗi người dùng tuỳ chỉnh một phòng thí nghiệm mà không ảnh hưởng đến bản gốc;
  • Liên kết giao diện nối tiếp giữa IOL và Dynamips;
  • Cấu hình các nút thông qua Ansible / NAPALM / bất cứ điều gì.
Tôi biết làm thế nào để thực hiện một mô phỏng mạng phân phối, nhưng tôi nhớ một chút: làm thế nào để dễ dàng chạy các nút trong một không gian tên chuyên dụng? Tôi nhận câu trả lời từ vrnetlab: sử dụng Docker.
Do các giới hạn của UNetLab, tôi lại muốn viết lại UNetLab từ đầu. Ngay cả khi EVE-NG là một nĩa UNetLab, đội EVE-NG đang nỗ lực để khắc phục những giới hạn được mô tả trước đây.

KIẾN TRÚC UNETLABV2


Kiến trúc có thể có vẻ phức tạp một chút, nhưng điều đó không đúng, tôi đã có thể thực hiện nó một mình và trong một khoảng thời gian tương đối ngắn.

UNetLabv2 dựa trên:
  • Docker: bộ điều khiển, bộ định tuyến và các nút thí nghiệm chạy bên trong một container Docker;
  • Python: không còn C, PHP hay Bash, chỉ Python 3;
  • Python-Flask + NGINX triển khai và trình bày các API;
  • Kiểm chứng lưu trữ đã lưu trong Memcached cho trải nghiệm người dùng tốt hơn;
  • Celery + Redis quản lý các tác vụ dài không đồng bộ trong nền;
  • MariaDB lưu trữ tất cả các dữ liệu / người sử dụng và chạy các phòng thí nghiệm;
  • Git lưu trữ các phòng thí nghiệm ban đầu với một điều khiển phiên bản;
  • JQuery + Bootstrap sẽ triển khai UI như một ứng dụng trang đơn;
  • Iptables + Linux bridge cho phép kết nối với các nút lab chỉ bắt đầu bằng SSH;
  • IOL, QEMU và Dynamips chạy các nút trong phòng thí nghiệm.
Một cụm UNetLabv2 phải có ít nhất một nút: nó có thể là một hệ thống vật lý hoặc một ảo. Mỗi nút UNetLabv2 chạy Docker: nút UNetLabv2 đầu tiên là master và chứa một bộ điều khiển và một router, mỗi nút UNetLabv2 bổ sung chỉ có một router. Mỗi nút UNetLabv2 chạy nhiều nút trong phòng thí nghiệm. Bộ điều khiển, bộ định tuyến và các nút trong phòng thí nghiệm là các trường hợp Docker.
Bộ điều khiển container:
  • Trình bày giao diện người dùng và API cho khách hàng, bộ định tuyến và các nút trong phòng thí nghiệm;
  • Nhận yêu cầu đăng ký từ các bộ định tuyến và các nút trong phòng thí nghiệm;
  • Cung cấp và quản lý các nút thí nghiệm thông qua các bộ định tuyến;
  • Liên lạc các nút thí nghiệm thông qua Ansible / NAPALM / ... qua các bộ định tuyến;
  • Cung cấp bảng định tuyến cho các bộ định tuyến;
  • Có thể đạt được thông qua SSH sử dụng cổng 2222.
Các bộ định tuyến router:
  • Đăng ký chống lại bộ điều khiển;
  • Phơi bày Docker Remote API;
  • Phơi bày API phòng thí nghiệm;
  • Lấy router và bảng định tuyến từ bộ điều khiển;
  • Định tuyến các gói tin phòng thí nghiệm giữa các nút và bộ định tuyến;
  • Cho phép truy cập giữa bộ điều khiển và các nút thí nghiệm từ xa thông qua OpenVPN.
Các nút chứa:
  • Đăng ký chống lại bộ điều khiển;
  • Chạy nút giả lập (IOL, Dynamips hoặc QEMU);
  • Gắn một giao diện quản lý của lưu ý mô phỏng với một cây cầu địa phương;
  • Tuyến đường và các gói tin sNAT / dNAT đến giao diện quản lý của nút giả lập;
  • Các gói tin tuyến đường giữa router cục bộ và nút mô phỏng cho các giao diện không quản lý;
  • Quản lý liên kết mô phỏng (lên / xuống).
Bởi vì bộ điều khiển và bộ định tuyến biết địa chỉ IP bên trong và bên ngoài; Người dùng có thể triển khai các nút UNetLabv2 bất cứ nơi nào họ muốn (trong cùng một mạng LAN, trong AWS, Google Compute Engine, Azure, sau tường lửa ...). Như sơ đồ trên giải thích, mỗi cụm UNetLabv2 cần các cổng sau:
  • TCP: 2222 để kết nối với bộ điều khiển thông qua SSH;
  • TCP: 80/443 cho yêu cầu HTTP / HTTPS đến bộ điều khiển;
  • TCP: 5443 cho yêu cầu HTTPS đến router;
  • UDP: 5005 cho các gói tin định tuyến giữa các nút UNetLabv2 khác nhau;
  • UDP: 1194 cho khả năng truy cập mạng giữa bộ điều khiển và các nút phòng thí nghiệm từ xa.
UNetLabv2 hiện đã gần như đã sẵn sàng, ngoại trừ giao diện web và OpenVPN. Nó không có sẵn cho công chúng, nó không dùng cho mục đích thương mại và nó không phải là đối thủ của GNS3, VIRL hay EVE-NG. Nó chỉ là một công cụ tôi phát triển cho bản thân mình, cũng có sẵn cho những người dùng được bầu và bạn bè.




Nguồn : http://www.routereflector.com/unetlab/

Friday, June 16, 2017

Một số bài hay về Unetlab

Một buổi gặp mặt thú vị, toàn người quen trong giới, tôi nhận thêm nhiều kiến thức công nghệ mới sát với nhu cầu của mình cần giải quyết, một trong đó là Unetlab, đọc qua ghi lại 1 vài link sau tham khảo
So sánh Unetlab và GNS3
https://cuongquach.com/so-sanh-giua-unetlab-va-gns3-gia-lap.html
Hướng dẫn về sử dụng NetLab 
http://www.vnpro.vn/huong-dan-truy-cap-lab-online/

Tuesday, December 13, 2016

Lệnh cơ bản trong MetaSploit

Metasploit framework 

Mình đã xem trên mạng.Tài liệu về Metasploit Framework tiếng việt khá ít.Và không đầy đủ.Nên mình viết lại những gì mình biết ,tham khảo thêm một số nguồn tiếng anh [ Mục đích là để giúp newbie biết rõ hơn ,và để làm tài liệu chính thức từ vhb,Không phải lấy từ nguồn khác.Có một bài kakavn_85 leech về vhb rồi.

Nhưng bài đó khá sơ sài ,nên mình viết lại bài này].Hiện tại còn một số phần chưa hoàn thành.Anh em nào am hiểu về các module encoders module và Nops module trong metasploit framework thì pm yahoo mình icarus_ken.Để cùng mình biên soạn kĩ hơn về 2 phần này.

-Metasploit framework là một framework mã nguồn mở phát triển nhằm sử dụng các shellcode (payload) để tấn công máy có lỗ hổng.Cùng với một số bộ công cụ bảo mật khác,Metasploit có cơ sở dữ liệu chứa hàng ngàn shellcode ,hàng ngàn exploit của các hệ điều hành,các chương trình hay dịch vụ.Trong quá trình phát triển metasploit liên tục cập nhật các Exploit...Nên càng ngày nó càng trở thành một bộ công cụ mạnh mẽ.

-Metasploit framework là một bộ dự án sinh ra để kiểm tra độ an toàn (pentesting ) nhưng đối với những attacker như chúng ta,thì nó thực sự là một công cụ vô cùng hữu ích ( dùng để kiểm tra ,khai thác lỗi ,exploit ).Thực sự theo mình nghĩ thì ai muốn làm hacker (hay script kidie đi chăng nữa ) thì cũng nên bỏ thời gian ra nghiên cứu kĩ về nó.

-Nói sơ qua Metasploit framework là một phần nhỏ của dự án Metaspoit ( đc xây dựng từ ngôn ngữ perl sau đó đc viết lại bằng ruby.Đúng ra là chủ yếu bằng ruby).
Bộ metasploit framwork hỗ trợ giao diện cho nguời dùng dưới nhiều dạng


  • -Console interface : Dùng lệnh msfconsole .Đa số thao tác bằng dòng lệnh.
  • -GUI -armitage : Dùng Armitage để vào.Đây là giao diện đồ họa.
  • -Command line interface : dùng lệnh msfcli để vào


Ta chủ yếu thực thi trên msfconsole ,nhìn cho nó chuyên nghiệp )
Msfconsole có nhiều câu lệnh,option khác nhau.Dứoi đây là nội dung các lệnh đối với msfconsole .

==========================
1 back
2 check
3 connect
4 info
5 irb
6 jobs
7 load
7.1 loadpath
7.2 unload
8 resource
9 route
10 search
10.1 help
10.2 name
10.3 path
10.4 platform
10.5 type
10.6 author
10.7 multiple
11 sessions
12 set

12.1 unset

13 setg
14 show
14.1 auxiliary
14.2 exploits
14.3 payloads
14.3.1 payloads
14.3.2 options
14.3.3 targets
14.3.4 advanced
14.4 encoders
14.5 nops
15 use
=======================
Mình sẽ trình bày sơ nội dung của những lệnh này.

+back : lệnh này dùng khi bạn muốn thoát ra khỏi module bạn đã chọn trước đó sau khi hoàn thành công việc,hoặc muốn chuyển sang module khác.Tất nhiên là có thể chọn ngay module khác luôn mà không cần thoát ra.
ví dụ

msf payload(reverse_http) > back
msf>

+check : Lệnh naỳ giúp ta kiểm tra đã cấu hình đúng cho exploit chưa,mọi việc đã hoàn thành chưa.Cho ta biết kết quả mà không cần phải thực thi exploit đó.Nhưng không phải tất cả mọi exploit đều hỗ trợ lệnh này.

+connect : Lệnh này giống như một bản netcat thu nhỏ đc cho vào metasploit đc hỗ trợ với ssl,proxy,povoting...Với việc dùng câu lệnh connect với địa chỉ ip và port tương ứng,chúng ta có thể connect tới một host từ metasploit giống như khi dùng với netcat hoặc telnet vậy.
ví dụ như
msf > connect 118.69.228.254 22[*] Connected to 118.69.228.254:22
SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1

+info : lệnh này cho biết những thông tin chi tiết của một module (hay một exploit nào đó ) .hiện thị cho ta thông tin cơ bản nhất,bao gồm cả các option cần thiết....




+irb : lệnh này cho ta thao tác trên môi trường của ruby

ví dụ
msf > irb -h[*] Starting IRB shell...
>> puts "welcom to vhbfamily"
welcom to vhbfamily
=> nil


+jobs: lệnh này cho ta biết các module đang chạy.
ví dụ

msf > jobs
Jobs
====
No active jobs.
msf > jobs -h
Usage: jobs [options]
Active job manipulation and interaction.
OPTIONS:
-K Terminate all running jobs.
-h Help banner.
-i <opt> Lists detailed information about a running job.
-k <opt> Terminate the specified job name.
-l List all running jobs.
-v Print more detailed info. Use with -i and -l


+load: lệnh này để load một plugin từ metasploit plugins.
ví dụ:ta liệt kê ra danh sách các plugin có và load thử một cái.Sau đó unload luôn plugin mà chúng ta vừa load.

msf > cd /opt/metasploit/msf3/plugins/
msf > ls[*] exec: ls
alias.rb
auto_add_route.rb
db_credcollect.rb
db_tracker.rb
editor.rb
event_tester.rb
ffautoregen.rb
ips_filter.rb
lab.rb
msfd.rb
msgrpc.rb
nessus.rb
nexpose.rb
openvas.rb
pcap_log.rb
sample.rb
session_tagger.rb
socket_logger.rb
sounds.rb
thread.rb
token_adduser.rb
token_hunter.rb
wmap.rb
msf > load alias.rb[*] Successfully loaded plugin: alias
msf > unload alias.rb

+search :command giúp ta tìm kiếm exploit,auxiliary,encoder.... (trong đó nó còn hỗ trợ một số keywork giúp cải tiến khả năng tìm kiếm như


Keywords:
name : Modules with a matching descriptive name
path : Modules with a matching path or reference name
platform : Modules affecting this platform
port : Modules with a matching remote port
type : Modules of a specific type (exploit, auxiliary, or post)
app : Modules that are client or server attacks
author : Modules written by this author
cve : Modules with a matching CVE ID
bid : Modules with a matching Bugtraq ID
osvdb : Modules with a matching OSVDB ID
edb : Modules with a matching Exploit-DB ID
Ví dụ như :
search cve:2009 type:exploit app:client

+sessions: lệnh này liệt kê các session đang tồn tại ,session ở đây có thể là session của shell,của meterpreter ....

+set : lệnh cho phép ta cấu hình cho các exploit...lệnh này gặp thường xuyên .(unset là lệnh có ý nghĩa nguợc lại ).

+setg: trong quá trình thực hiện tấn công một mục tiêu,hoặc nhiều mục tiêu.Ta có thể dùng một exploit hoặc đôi khi là nhiều exploit.Có một vào option nếu set bình thường thì ta phải set nhiều lần.Nhưng nếu ta để cho các option này có ý nghĩa toàn cục.Thì việc lặp lại là không cần.Nó có hiệu lực cho mọi exploit,auxiliary .Đó là ý nghĩa của setg (global set).Để hủy thì ta dùng unsetg .Nếu muốn lưu việc cấu hình này lại dùng lệnh "save".

+show : lệnh này cho phép hiện thị tùy theo tham số đi sau nó .Nếu là "show all" thì nó hiện thị tất cả các module có trong metasploit framework,còn nếu "show exploits" thì nó chỉ hiện thị các exploit có trong module exploits mà thôi.Tương tự cho các module khác.Lệnh show còn dùng để cho ta thấy các tham số thuộc tính (show options).

+use : lệnh này dùng để chọn và dùng một exploit,auxiliary...nào đó.


Cách dùng metasploit đc làm theo qui định chung sau

Chọn một module để attack (Thường ta dùng module Exploies và Auxiliary để attack,các module khác hỗ trợ cho 2 module này).
Có thể dùng lệnh "show all" .Nó sẽ liệt kê tất cả các modules ra cho ta.
Để hiện thị các exploit,auxiliary,payload... của một Module cụ thể hơn ta dùng lệnh "show type_module" mình ví dụ như :show exploits , show encoders,show payload,show nops....

Xem biểu đồ sau để hình dung kĩ hơn về cấu trúc của metasploit framework





  • REX : Thư viện ruby cho các công việc bảo mật
  • Framework Core :Cung cấp giao diện cho việc chạy các module và plugins.
  • MSF Base : để dễ giao tiếp hơn với các module trong framework.



Exploit Modules.
Đầu tiên chọn exploit,muốn chọn ta có thể dùng lệnh "show exploits" để hiện ra tất cả các exploit mà metasploit framework có hỗ trợ.

Để dùng exploit nào đó ta dùng câu lệnh "use name_exploit" .Trong đó tham số name_exploit là tên của exploit đc metasploit hỗ trợ,để biết thêm các thông tin về exploit mà ta đã chọn có thể dùng lệnh "info name_exploit".
ví dụ mình sử dụng một exploit sau khi đã liệt kê ra sẽ là:
use windows/manage/add_user_domain

Sau khi đã chọn một exploit với command use,việc tiếp theo là cấu hình các options mà exploit này yêu cầu.(Để rõ hơn exploit này nó yêu cầu cấu hình như thế nào,phải cấu hình những gì,ta sử dụng lệnh "show options".
Khi sử dụng lệnh show option ta thường nhận đc một bảng gồm các cột như sau:

Name-----Current Setting-------Required---------Description

Trong đó,ở cột required nếu giá trị là "yes" thì bạn phải set giá trị cho tham số này,còn nếu là "no" thì nếu thích thì bạn set cho nó,nếu ko thích thì cũng chẳng sao.Quan trọng phải xem một số nó đã cấu hình mặc định cho rồi có thích hợp với chúng ta hay ko. (Ngoài ra nó còn có thêm một số options khác,dùng "show advanced" , "show evasion" để xem nhé.

Sau khi cấu hình xong ta cần kiểm tra xem việc cấu hình đã đúng chưa.
Để kiểm tra việc cấu hình ta dùng lệnh "check " để xem mục tiêu có bị tấn công đc hay không.Đây là một cách nhanh để ta kiểm tra xem việt cấu hình các options bằng lệnh set có đúng hay không và mục tiêu thực sự có lỗ hổng để khai thác được hay không.Nhưng không phải tất cả các exploit đều thực sự có thể kiểm tra được bằng việc sự dụng lệnh check.Đôi khi ta phải thực sự exploit nó mới biết đc )

* Chọn môi trường họat động.
Nhiều exploits nó còn yêu cầu môi trường có thể thực hiện chứ không phải môi trường nào nó cũng có thể làm đc.Chính vì vậy ta dùng lệnh "show targets " để xem trên môi trường nào có thể exploit.
ví dụ như:

exploit(java_signed_applet) > show targets
Exploit targets:
Id Name
-- ----
0 Generic (Java Payload)
1 Windows x86 (Native Payload)
2 Linux x86 (Native Payload)
3 Mac OS X PPC (Native Payload)
4 Mac OS X x86 (Native Payload)


Cho ta thấy danh sách các môi trường có thể họat động.
để chọn môi trường cho nó ta dùng lệnh "set number_of_target" . Trong đó đối số number_of_target là số thứ tự (số id) khi liệt kê ra.Điều gì xảy ra nếu bạn không chọn môi trường target ? .Trong quá trình exploit nó sẽ tự chọn mặc định cho ta.Và thực tế điều này không phải khi nào cũng đúng như mong đợi.Vì vậy ta chọn bằng tay là tốt nhất.(Tất nhiên phải scan OS trước).

* Chọn Payload : (Selecting the Payload).

Trước tiên Payload là gì.Bạn có thể hiểu nó đơn giản như các thuật ngữ thuờng quen với các bạn hơn như là trojan chẳng hạn.Nó là một đoạn code đc chạy (thực thi )trên máy victim,dùng để thực hiện một số họat động nào đó,hoặc dùng để kết nối về máy attacker.Vậy làm sao để có cái Payload ) này trên máy của victim ? .Có 2 phương pháp chủ yếu được dùng.Phân loại ra vậy thôi chứ khi dùng thì còn tùy trường hợp mà dùng.Đó là gửi cho victim thông qua việc phân tính một lỗi,lỗ hổng nào đó trên hệ thông victim,từ đó đột nhập và vất đoạn payload này cho victim.Để đó chơi.Kiểu thứ 2 là gửi trực tiếp cho victim,chờ đợi victim sơ ý nhận nó ( kĩ thuật social engineering đấy ).

Để hiện thị các payloads tích hợp cho exploit hiện tại chúng ta đang dùng.ta dùng lệnh "show payloads" ,ví dụ mình minh họa bằng 3 payload sau :

windows/dllinject/bind_nonx_tcp - normal Reflective DLL Injection, Bind TCP Stager (No NX or Win7)
windows/dllinject/bind_tcp - ormal Reflective DLL Injection, Bind TCP Stager
windows/meterpreter/reverse_http -normal Windows Meterpreter (Reflective Injection), Reverse HTTP Stager

Như ta thấy có nhiều payload,tương ứng với mỗi OS khác nhau ta dùng một payload khác nhau,và phương pháp cũng khác nhau. Các giao thức dùng cũng khác nhau....Nhìn chung đối với payload có thể phân ra làm 2 loại cơ bản đó là bind payload,và reverse payload .Khi nào ta dùng loại nào.Đây cũng là một vấn đề quan trọng.Nếu như máy của bạn (đóng vai trò là attacker) đứng sau một tường lửa,thì lúc này bạn nên dùng bind payload .Mở một port trên máy tính và kết nối trực tiếp từ máy attacker đến máy victim.Còn nếu như victim đứng sau một tường lửa,còn chúng ta thì không,khi đó chúng ta dùng reverse payload,để connect ngược từ máy victim về ta (attacker ).Như vậy cho thấy khi tấn công mục tiêu.Ta phải tìm hiểu rõ ràng về mục tiêu.Scan,tìm kiếm tất cả các thông tin có thể có.Dựa vào đó mà chọn cách thích hợp.

Khi bạn quyết định chọn một payload nào đó,dùng lệnh "set PAYLOAD name_payload" để chọn payload cần dùng.
giải sử muốn dùng payload windows/meterpreter/reverse_ord_tcp thì ta thao tác là :

set PAYLOAD windows/meterpreter/reverse_ord_tcp
nhận đc là :PAYLOAD => windows/meterpreter/reverse_ord_tcp

Tượng tự để xem rõ thông tin,option về payload ta có thể dùng các lệnh như "show options" ,"info name_payload" ,"show advanced" ,"show evasion"...

Nhắc thêm một lần nữa,đó là payload đc chọn phải phù hợp với môi trường thực thi đã chọn ở trên .Nếu mục tiêu là linux mà dùng payload cho window thì thua rồi.
Sau khi thực hiện tất cả các thiết lập xong thì ta dùng lệnh "exploit" để xem thành quả.



MODULE AUXILIARY:
cung cấp chức năng tăng cường cho các thử nghiệm xâm nhập và quét lỗ hổng cùng với các tác vụ tự động.
phân loại trong auxiliary module:


-module quét các giao thức ( như SMB,HTTP).
-Module quét cách cổng port
-Wireless
-IPV6
-DOS
-Server modules.
-Module khai thác truy cập quản trị

Mình ví dụ về một dịch vụ quét ssh .Nó hỗ trợ các dịch vụ khá đầy đủ .Lúc show auxiliary ra sẽ thấy,rất là nhiều.( Để tìm các exploit hay auxiliary một cách nhanh hơn,ta dùng lệnh search,chứ tất nhiên không thể nhớ hết,hoặc liệt kê ra thì tìm cũng mỏi mắt.Ví dụ mình muốn quét ssh đi,thì thực hiện "search ssh".



Chú ý trong auxiliary module việc set remote host ta dùng "set RHOSTS" chứ không phải là "set RHOST" như bên exploit module đâu đấy.

Như trong ví dụ ta scan được phiên bản ssh của server 118.69.228.254. Các tham số còn lại mình để mặc định hết.

Ví dụ về scan port: Mình sẽ scan xem site nào mở cổng 443 (https) và 80 dùng giao thức tcp đối với các site nằm trong server chứa kmasecurity.net



Việc sử dụng auxiliary nói tóm lại gồm 3 bước căn bản,đó là chọn auxiliary,sau đó set các option cần thiết cho nó.Cuối cùng là run để thực hiện thôi.Việc nắm đc tất cả các auxiliary là rất tốt.Sẽ giúp chúng ta linh động hơn trong việc tấn công một đối tượng nào đó.
Các lệnh payload thường dùng là:

  • generate :để phát sinh một payload.
  • pry:Để mở một pry( một tính năng thay thế cho tiêu chuẩn IRB shell của ruby) session trong module hiện tại.
  • reload : để chạy lại reload lại module hiện tại
Module Payloads:Như đã nói ở trên nó là một shellcode.Trong metasploit framework cung cấp sẵn khá nhiều loại payloads.
Đoạn trên mình đã nói sơ qua payload,chắc mọi người cũng đã hình dung được về payload rồi.Ở phần này mình trình bày thêm về module payload.
Dùng lệnh "show payloads" để liệt kê các payload có trong metasploit.

Để tìm hiểu kĩ hơn về các lệnh này ta dùng tham số -h (--help) ,từ đó mà set các giá trị thích hợp.Mình minh họa một ví dụ.






Như ta thấy có thể dùng option -E để encode cho payload của chúng ta,tăng khả năng vượt antivirut.
nếu không chọn gì thì có thể type lệnh đơn giản là "generate" thôi là đc rồi.
Trong quá trình encoding, payload đc encoding và đc chèn vào những kí tự đặc biệt.
Tất nhiên ta có thể tự chọn các bộ công cụ encode khác nhau trong metasploit .Ví dụ để encode một payload ,Ta muốn thử các kiểu encoding khác nhau.Có thể sử dụng lệnh "show encoders".Lúc này nó sẽ hiện ra một loạt các bộ công cụ encode.Sử dụng một bộ encoding nào đó ta type như sau : "generate -e x86/shikata_ga_nai". Trong đó "x86/shikata_ga_nai" là một bộ encoding trong encoders module.
Có rất nhiều bộ encoder đc hỗ trợ của Metasploit framework.Chính vì vậy bạn nên chọn một bộ nào đó để encode .Giúp hiệu quả hơn trong quá trình ẩn mình.

Nguồn:

http://kechocgian.blogspot.com/2013/04/metasploit-framework.html

Tổng quan về MetaSploit

PHẦN 1: GIỚI THIỆU VÀ TỔNG QUAN VỀ METASPLOIT

Xin chào. Như chúng ta đã biết Metasploit là công cụ không thể thiếu được của hacker cũng như những Penetration Tester. Metasploit không phải là một công cụ mà nó là một Framework tập hợp rất nhiều chương trình cũng như những công cụ phục vụ cho việc tấn công, kiểm tra độ an toàn và bảo mật của hệ thống. Trong các bài viết sau đây tôi sẽ chia làm 02 danh mục
  1. Master Metasploit: là những bài viết liên quan đến việc sử dụng thành thạo môi trường Metasploit Framework
  2. Pentest : là những bài viết sử dụng metasploit tấn công vào những lỗ hổng bảo mật, cũng như các phương pháp làm tổn thương hệ thống
Trước khi đi vào nội dung tôi muốn nói rằng các bài viết trên đây chỉ là những ghi chép dành cho việc nghiên cứu và mục đích học tập, không nhằm chỉ dẫn cho các bạn script kiddies tấn công vào các hệ thống không được phép. Tôi xin trích lại vài lời khuyên sau đây:
  • Don’t be malicious.
  • Don’t be stupid.
  • Don’t attack targets without written permission.
  • Consider the consequences of your actions.
  • If you do things illegally, you can be caught and put in jail
A, Yêu cầu chuẩn bị
Để thực sự hiệu quả trong quá trình nghiên cứu và làm việc trên metasploit chúng ta phải tiến hành xây dựng hệ thống lab như sau:
  • Phần cứng: ổ cứng còn trống khoảng 30GB – 40GB bao gồm cả snapshot trong quá trình thực hành hệ thống. RAM cần tối thiểu 4G Ram nhưng 8G là tốt nhất. CPU Core 2 Duo > Core i7 tất nhiên là càng nhanh thì càng tốt. Nó sẽ thuận lợi hơn trong quá trình thực hành nếu bạn không muốn phải đợi lâu.
  • Phần mềm:
        • Ảo hóa : cài đặt chương trình ảo hóa xây dựng lab ảo như : VMware Workstation, Virtualbox, VMware Player…
        • Kali linux: download vào cài đặt http://www.kali.org/ . Quá trình cài đặt kali cũng gần giống như cài đặt Ubuntu các bạn tự tìm hiểu phần này.
        • Metasploitable: máy ảo linux chứa các lỗ hổng bảo mật để trong quá trình thực hành tấn công demo. Máy ảo đã được cài đặt sẵn dưới dạng VM của VMware bạn chi việc giải nén và chạy files .vmx. Download tại đây http://sourceforge.net/projects/metasploitable/files/Metasploitable2/ . Mật khẩu mặc định msfadmin:msfadmin
        • Windows XP (SP0, SP2): ngoài ra các bạn cũng cần cài thêm 02 phiên bản XP SP0 và SP2 chú ý là không update. Các bạn có thể tìm thấy các đĩa ISO cài đặt qua các kênh torrent thông dụng.
  • Internet Access: nên cấu hình mạng các máy ảo ở host-only hoặc NAT. Vì các máy ảo chứa các lỗ hổng bảo mật nguy hiểm có thể gây nguy hại cho hệ thống của bạn.
B, Cấu trúc Metasploit Framework:
Metasploit framework được lập trình bằng ngôn ngữ Ruby. Mô hình cấu trúc metasploit framework:


 Như chúng ta thấy trên mô hình cấu trúc tôi có thể chia ra làm 3 phần cơ bản như sau:
  1. Libraries : phần thư viện bao gồm REX , MSF CORE, MSF BASE trong đó
    • REX:
      • Chứa những thư viện cơ bản nhất trong hầu hết các tác vụ.
      • Quản lý : giao thức, cổng kết nối, truyền thông tin và các thành phần khác
      • SSL, SMB, HTTP, XOR, Base64, Unicode
    • MSF CORE:
      • Cung cấp các API cơ bản
      • Định nghĩa ra Metasploit Framework
    • MSF BASE:
      • Cung cấp các API thân thiện.
      • Cung cấp các API đơn giản để kết nối và sử dụng Framework
  2. Interfaces: phần giao diện tương tác trực tiếp với MSF BASE cung cấp những giao diện quản trị thông qua : console, cli, GUI, và đặc biệt là armitage.
  3. Modules : bao gồm các thành phần như : payloads, exploits, encodes, post-mods, auxiliary
    • PAYLOADS: là chứa các đoạn mã nhỏ cho phép thực thi từ xa trong quá trình khai thác
    • EXPLOITS: là quá trình sử dụng mô đun (lỗ hổng bảo mật) bao gồm với PAYLOAD để khai thác
    • ENCODES: là quá trình mã hóa PAYLOADS để đảm bảo có thể thực thi trên máy từ xa. VD mã hóa by pass antivirus
    • POST-MODS: là quá trình sau khi đã truy cập được vào hệ thống, quá trình này có thể là nghe lén, cài backdoor, by pass UAC …
    • AUXILIARY: là hình thức khai thác không bao gồm PAYLOADS. Ví dụ quét cổng, quét lỗ hổng bảo mật …