-+-+-+-| Pendahuluan
WiFi Pineaple NANO adalah produk buatan HAK5 generasi ke-6. Alat ini berbeda dari versi sebelumnya seperti WiFi Pineaple TETRA karena ukurannya yg small dan plug n play. WiFi Pineaple dari dulu sudah digunakan untuk berbagai keperluan seperti penetration testing, wifi audit dan network administrator. Karena memiliki fungsi yg langka maka harganya pun luar biasa yaitu sekitar 1.5 jutaan kalau di tokopedia. Berikut toko yg menjual alat ini di Indonesia karena saya pernah membeli BashBunny juga dari toko ini. -- https://www.tokopedia.com/beruqq/wifi-pineapple-nano --
-+-+-+-| Hardware Yang Cocok
Susah sekali mencari hardware yg benar-benar cocok dengan WiFi Pineaple NANO tetapi yg memiliki harga lebih murah. Ada sebuah router yg memiliki CPU yg sama dengan WiFi Pineaple NANO yaitu GL-AR150 dengan harga kisaran 300 ribuan. Dan sebaiknya ditambah dengan TL-WN722N untuk memperluas cakupan wifi nya.
-+-+-+-| Firmware hacking versi 1
Untuk versi ini saya dapat referensi dari https://www.slideshare.net/idsecconf/firmware-hacking-slash-the-pineapple-for-fun-52566956 dan ezine.echo.com
- Yg pertama kita akan modifikasi firmware asli milik WiFi Pineaple NANO. download saja di https://downloads.lanturtle.com/turtle-2.bin
- kamu dapat decompile firmware ini menggunakan apa saja, kita akan memeriksa file "_upgrade.bin-1.0. dan .extracted/squashfs-root/pineapple/api/Setup.php" dan melakukan beberapa perubahan seperti ini:
smrx86@smrx86:~/pineapplenano$ cat ./_upgrade-1.0.3.bin.extracted/squashfs-root/pineapple/api/Setup.php
<?php namespace pineapple;
class Setup extends APIModule
{
private function changePassword()
{
if ($this->request->rootPassword !== $this->request->confirmRootPassword) {
$this->response = array('error' => 'The root passwords do not match.');
return false;
}
$new = $this->request->rootPassword;
$shadow_file = file_get_contents('/etc/shadow');
$root_array = explode(":", explode("\n", $shadow_file)[0]);
$salt = '$1$'.explode('$', $root_array[1])[2].'$';
$new = crypt($new, $salt);
$find = implode(":", $root_array);
$root_array[1] = $new;
$replace = implode(":", $root_array);
$shadow_file = str_replace($find, $replace, $shadow_file);
file_put_contents("/etc/shadow", $shadow_file);
return true;
}
private function checkButtonStatus()
{
$buttonPressed = true;
$bootStatus = true;
if (file_exists('/tmp/button_setup')) {
$buttonPressed = true;
}
if (!file_exists('/etc/pineapple/init')) {
$bootStatus = true;
}
$this->response = array('buttonPressed' => $buttonPressed, 'booted' => $bootStatus);
return $buttonPressed;
}
private function setupWifi()
{
$ssid = $this->request->ssid;
if (strlen($ssid) < 1) {
$this->error = 'The Management SSID cannot be empty.';
return false;
}
if ($this->request->wpaPassword !== $this->request->confirmWpaPassword) {
$this->error = 'The WPA2 Passwords do not match.';
return false;
}
$wpaPassword = $this->request->wpaPassword;
if (strlen($wpaPassword) < 8) {
$this->response = array('error' => 'The WPA2 passwords must be at least 8 characters.');
return false;
}
$ssid = escapeshellarg($ssid);
$wpaPassword = escapeshellarg($wpaPassword);
exec('/sbin/wifi detect > /etc/config/wireless');
exec("uci set wireless.@wifi-iface[1].ssid={$ssid}");
exec("uci set wireless.@wifi-iface[1].key={$wpaPassword}");
exec('uci set wireless.@wifi-iface[1].disabled=\'0\'');
exec('uci set wireless.@wifi-iface[0].hidden=\'1\'');
exec('uci commit wireless');
return true;
}
private function enableSSH()
{
exec('echo "/etc/init.d/sshd enable" | at now');
exec('echo "/etc/init.d/sshd start" | at now');
$pid = explode('\n', exec('pgrep /usr/sbin/sshd'))[0];
if (is_numeric($pid) && intval($pid) > 0) {
return true;
}
return false;
}
private function restartWifi()
{
exec('echo "/sbin/wifi" | at now');
}
private function finalizeSetup()
{
$this->enableSSH();
$this->restartWifi();
@unlink('/etc/pineapple/setupRequired');
@unlink('/pineapple/api/Setup.php');
exec('killall blink');
exec('pineapple led reset');
exec('/bin/rm -rf /pineapple/modules/Setup');
}
public function performSetup()
{
if (!$this->checkButtonStatus()) {
return false;
}
if ($this->request->eula !== true || $this->request->license !== true) {
$this->error = "Please accept the EULA and Software License.";
return false;
}
if ($this->changePassword() && $this->setupWifi()) {
$this->finalizeSetup();
}
}
public function route()
{
@session_write_close();
if (file_exists('/etc/pineapple/setupRequired')) {
switch ($this->request->action) {
case 'checkButtonStatus':
$this->checkButtonStatus();
break;
case 'performSetup':
$this->performSetup();
break;
}
}
}
}
kalau mau yg instan ini tersedia bin yg sudah di modifikasi https://github.com/smrx86/STPF2/raw/master/firmware/openwrt2pineapplenano.bin
-+-+-+-| Firmware hacking versi 2
Untuk versi 2 ini sangat mudah karena tinggal upload file bin-nya dan akan saya jelaskan secara detail.
Ketika anda sudah membeli AR150, yg pertama kali dilakukan adalah menyalakannya dan menghubungkannya ke komputer Anda melalui LAN, bisa juga melalui WiFi tetapi lebih cepat prosesnya melalui LAN.
Ikuti petunjuk awal konfigurasi AR150 untuk terhubung ke interface-nya. Ketika Anda berada di halaman interface/admin tersedia fitur upload new firmware.
Silahkan download firmware yg sudah ter-modifikasi.
Version 1.1.3: https://github.com/SecurityAddicted/pineapple-ar150
Version 1.0.6: https://github.com/kow/glinetpineapple/commit/15953e10d184e55ac1eae23b7594cdb17f228625
- Ketika firmware WiFi Pineaple sudah terinstall, mesinnya akan otomatis reboot agak lama. Ketika selesai alat ini akan memberikan IP ke komputer Anda melalui automatic DHCP. Jika kamu tidak memiliki kabel LAN kamu bisa melalui wifi-nya.
Sekarang connect ke 172.16.42.1:1471 melalui browser apa aja bisa kok
Kemudian ikuti step-step nya (klik tombol reset untuk memulai configurasi dari awal).
- Sekarang kamu memiliki alat yg bernama Wi-Fi GOD :-)