Tự “build” Wifi Pineapple với phần cứng giá rẻ

The Real Kitty
tradahacking
Published in
7 min readJul 20, 2018

Hướng dẫn tự “build” một bản sao của Wifi Pineapple với phần cứng giá rẻ. Bài viết này yêu cầu kiến thức cơ bản về Linux và các thiết bị router.

Cập nhật 01/2021: Nano firmware version (2.7.0) và OpenWrt version (19.07.6).

Wifi Pineapple là một thiết bị định tuyến (router) được thiết kế giành riêng cho việc kiểm tra bảo mật trên các hệ thống internet không dây. Thiết bị vốn rất nổi tiếng trong giới bảo mật này được phát triển bởi hãng Hak5 và phiên bản rẻ nhất (NANO) có giá khoảng 100 đô la Mỹ. Tuy nhiên bạn vẫn có thể tự tạo một phiên bản Wifi Pineapple cho riêng mình với một giá thành rẻ hơn rất nhiều.

Wifi Pineapple MK5 (nguồn: hak5.org)
Wifi Pineapple NANO (nguồn: wifipineapple.com)

Thoại nhìn Wifi Pineapple có vẻ là một thiết bị rất phức tạp và hầm hố. Nhưng về cơ bản, đây đơn thuần là một router được cài đặt một phiên bản sửa đổi của hệ điều hành OpenWrt. Các bước chính để tạo ra một bản sao của Wifi Pineapple NANO cho riêng bạn bao gồm:

  • Mua một router giá rẻ với cấu hình tương tự.
  • Biên dịch hệ điều hành và cài đặt các tiện ích của Wifi Pineapple.
  • Tải hệ điều hành lên thiết bị.

Phần cứng

Dưới đây là thông số phần cứng của Wifi Pineapple NANO:

  • CPU: 400 MHz MIPS Atheros AR9331 SoC
  • Bộ nhớ: 64 MB DDR2 RAM
  • ROM: 16 MB
  • Hỗ trợ Micro SD
  • Wireless: Atheros AR9331 (wlan0) + Atheros AR9271 (wlan1), cả hai đều hỗ trợ chuẩn IEEE 802.11 b/g/n
  • 1 cổng USB, 2 cổng cắm ăn-ten loại RP-SMA (là loại ăn-ten được dùng phổ biến trên các router hiện nay).
  • Nguồn: USB 5V 1.5A
  • Đèn LED trạng thái và nút Reset.

Trong danh sách các router được OpenWrt giới thiệu, GL.iNET AR150 có cấu hình tương đương với NANO và có giá thành rẻ (vào khoảng 25–30 đô Mỹ nếu mua từ Amazon hoặc AliExpress). Bài viết này sử dụng GL.iNET AR150 làm ví dụ. Tuy nhiên bạn vẫn có thể áp dụng các bước trong bài hướng dẫn này nếu chọn mua một thiết bị khác.

GL-AR150

Phần mềm

Nếu bạn chưa từng nghe qua OpenWrt thì đây là một hệ điều hành nhúng dựa trên nền Linux nhưng được phát triển riêng cho router. OpenWrt cho phép người dùng tận dụng tối đa khả năng của router thay vì bị giới hạn trong những tính năng được cung cấp bởi firmware của nhà sản xuất. Để cài đặt OpenWrt lên router, bạn có thể tải bản firmware có sẵn hoặc tự biên dịch từ mã nguồn như hướng dẫn dưới đây.

Trên thực tế đã có một số bài hướng dẫn cài đặt Wifi Pineapple trên GL.iNET AR150 bằng tiếng Anh (xem thêm ở Nguồn Trích Dẫn) nhưng sử dụng một phiên bản cũ của OpenWrt (Chaos Calmer 15.05). Khi đó GL AR150 chưa được hỗ trợ chính thức và chúng ta phải sử dụng một bản vá được thực hiện bên ngoài nhóm phát triển OpenWrt. Bài viết này dùng bản cập nhật mới nhất của OpenWRT (LEDE 19.07) khi GL AR150 đã nằm trong danh sách được hỗ trợ.

Trích xuất hệ thống file của Wifi Pineapple NANO

Để có được một phiên bản của Wifi Pineapple trên router của bạn, trước hết cần phải có hệ thống file (file system) của Pineapple. Để làm được việc này, bạn có thể tải firmware của Wifi Pineapple NANO và trích xuất file system bằng công cụ binwalk:

$ cd /tmp
$ sudo apt-get wget
$ wget https://www.wifipineapple.com/downloads/nano/2.7.0 -O pineapple-nano.bin
$ binwalk -e pineapple-nano.bin

Biên dịch và đóng gói hệ điều hành

Quay trở lại với OpenWrt, lúc này có hai cách để tải hệ điều hành này và file system của Wifi Pineapple lên router:

  • Cách dễ nhất: dùng bản firmware được biên dịch sẵn của OpenWrt cho GL AR150. (đường dẫn download có thể được tìm thấy ở mục Firmware OpenWrt Upgrade URL trên trang https://openwrt.org/toh/hwdata/gl.inet/gl.inet_gl-ar150), sau đó copy đè tất cả các file được trích xuất ở bước trước vào thư mục ‘/’ của router.
  • Cách khó hơn: Biên dịch OpenWrt từ mã nguồn, đóng gói cùng với hệ thống file của Pineapple. Ưu điểm của cách này là bạn không phải lưu trữ riêng hệ thống file của Pineapple và copy nó bằng tay mỗi khi cài đặt lại hệ điều hành. Nhược điểm là thao tác sai trong quá trình biên dịch hoặc đóng gói có thể dẫn đến việc “brick” chiếc router của bạn.

Bài viết này sẽ mô tả cách thứ hai. Các câu lệnh trong ví dụ được thực hiện trên hệ điều hành Ubuntu 20.04.

Nếu muốn tìm hiểu thêm về hai cách làm trên, đặc biệt là ưu khuyết điểm của từng cách, bạn có thể đọc về các hệ thống file của OpenWrtcách phân vùng của OpenWrt.

Bước đầu tiên là cài đặt các tiện ích hỗ trợ:

$ sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic binwalk subversion build-essential git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip git

Tải mã nguồn của bản build stable gần nhất (19.07.6).

$ cd /tmp
$ git clone https://github.com/openwrt/openwrt.git
$ cd openwrt
$ git checkout tags/v19.07.6

Cập nhật modules mới nhất:

$ cd /tmp/openwrt
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

Cấu hình firmware:

$ make menuconfig

Đây là bước cấu hình cho việc biên dịch hệ điều hành, bạn có thể lựa chọn từ drivers, nền tảng để biên dịch, thêm/bớt module vào firmware cho đến các cấu hình lõi (kernel options). Nếu đã quen với việc biên dịch một hệ điều hành Linux, bạn sẽ không cảm thấy xa lạ với bước này. Tuy nhiên có một số cấu hình cần phải lưu ý:

  • Target System: chọn Atheros AR7xxx/AR9xxx
  • Target Profile: chọn GL.iNet GL-AR150
  • Nếu bạn có ý định gắn thêm wifi adapter vào cổng USB thì cần thêm driver tương ứng với loại adapter trong Kernel modules / Wireless Drivers. Ví dụ, tác giả bài viết dự định sử dụng ba adapter DWL-G122, Alfa AWSUS036NH và AWUS036ACH thì cần phải chọn ba module kmod-rt73-usb, kmod-rt2800-usbkmod-rtl8812au-ct.

Sau khi đã cấu hình xong, bước tiếp theo là sao chép file system của Wifi Pineapple:

$ mkdir /tmp/openwrt/files
$ cp -r /tmp/_pineapple-nano.bin.extracted/squashfs-root/* /tmp/openwrt/files
$ rm -rf /tmp/openwrt/files/sbin/modprobe /tmp/openwrt/files/lib/modules/4.14.171

Để hiểu vì sao có bước này, bạn có thể đọc thêm tại https://wiki.openwrt.org/doc/howto/build#custom_files

Bước tiếp theo, và cũng là bước tốn nhiều thời gian nhất (khoảng vài giờ), là biên dịch OpenWrt.

$ make

Sau khi hoàn tất quá trình biên dịch, bạn sẽ tìm thấy firmware ở thư mục bin/targets/ar71xx/generic . Ở đây chúng ta chỉ quan tâm đến file có đuôi squashfs-sysupgrade.bin

Tải firmware vào thiết bị

Có nhiều cách để tải firmware lên router, cách đơn giản nhất là tải qua trình duyệt với uboot safe mode:

  1. Tháo nguồn của GL-AR150
  2. Bấm và giữ nút reset, đồng thời cắm nguồn lại.
  3. Đợi cho đèn LED đỏ nháy đúng 6 lần và nhanh chóng bỏ tay ra khỏi nút reset.
  4. Nếu bạn thấy đèn LED đỏ nháy nhanh, sau đó chỉ còn đèn LED xanh ở phía tay trái sáng thì tức là bạn đã làm đúng. Ngược lại, bạn phải thao tác lại từ đầu.
  5. Sử dụng dây cáp mạng nối máy tính và cổng LAN của GL-AR150 với nhau.
  6. Thiết lập địa chỉ IP của máy tính là 192.168.1.69
  7. Sử dụng trình duyệt để truy cập vào thiết bị tại địa chỉ http://192.168.1.1. Bạn sẽ thấy một giao diện web như hình bên dưới.
  8. Chọn file firmware (có đuôi squashfs-sysupgrade.bin) ở bước trước rồi chọn Update Firmware.

Sau khi đợi khoảng 5–10 phút, nối máy tính của bạn với cổng WAN của router (thay vì cổng LAN), bỏ thiết lập IP tĩnh trên máy tính ở bước trước và thay bằng chế độ DHCP. Máy tính bạn sẽ nhận một địa chỉ IP dạng 172.16.42.x. Dùng trình duyệt và truy cập vào địa chỉ http://172.16.42.1:1471 để cấu hình cho router. Tham khảo hướng dẫn cài đặt của Wifi Pineapple để tiếp tục cài đặt

Nếu đi đến được bước này, bạn đã sở hữu một thiết bị Wifi Pineapple cho riêng mình. Bạn có thể trang bị thêm một chiếc wifi adapter để cắm vào cổng USB và một cục bin sạc dự phòng để có thể sử dụng chiếc router này như một thiết bị di động:

GL-AR150 + Alpha AWUS036NHA + Solar Power Bank

Tổng giá thành cho một setup như vậy vào khoảng 60–70 đô la Mỹ, vẫn rẻ hơn Wifi Pineapple NANO chính hãng và chỉ bằng một nửa giá của NANO Tactical (là một phiên bản của NANO có kèm pin di động).

Nguồn tham khảo:

--

--