2018年5月8日火曜日

簡単にrootが取れる!?

じっくりみると
$ ls -l /etc
lrwxrwxrwx    1 root     root            20 Jul 25  2017 TZ -> /mnt/mtd/ipc/conf/TZ
drwxrwxrwx    4 root     root             0 Sep 14  2016 Wireless
-rwxrwxrwx    1 root     root           378 Jan  1 09:12 fstab
-rwxrwxrwx    1 root     root           268 Sep 14  2016 group
-rwxrwxrwx    1 root     root             9 Sep 14  2016 hostname
-rwxrwxrwx    1 root     root            35 Sep 14  2016 hosts
drwxrwxrwx    2 root     root             0 Sep 14  2016 init.d
-rwxrwxrwx    1 root     root           975 Sep 14  2016 inittab
-rwxrwxrwx    1 root     root            19 Sep 14  2016 issue
-rwxrwxrwx    1 root     root           876 Sep 14  2016 mdev.conf
lrwxrwxrwx    1 root     root            12 Jul 25  2017 mtab -> /proc/mounts
-rwxrwxrwx    1 root     root           677 Apr 15  2018 passwd
-rwxrwxrwx    1 root     root          1874 Sep 14  2016 profile
-rwxrwxrwx    1 root     root          1191 Sep 14  2016 protocols
lrwxrwxrwx    1 root     root            29 Jul 25  2017 resolv.conf -> /mnt/mtd/ipc/conf/resolv.conf
-rwxrwxrwx    1 root     root           422 Sep 14  2016 securetty
drwxrwxrwx    2 root     root             0 Sep 13  2016 sensors
-rwxrwxrwx    1 root     root         10873 Sep 14  2016 services
-rwxrwxrwx    1 root     root           473 Jan  1 09:09 shadow

shadow が丸見えですよ!奥さん!!
しかも誰でも編集放題(笑

まあ、コンソールログインなので持ち主いじるの前提ですが、
もしこれ telnet とかで侵入されるとヤバイですね

$vi /etc/shadow
root::0:0:99999:7:::
rootのpassword削たった

Welcome to HiLinux
IPCamera login: root
Jan  1 13:41:20 login[5277]: root login on 'ttySGK0'
# 
あらやだ、root取れちゃった

paswordコマンドが無いけど、
raspberrypiで作ったハッシュをコピペすれば設定できます。
あと、chmod 600 とかにしときましょうね

FlasROMの解析

手元にあるので、物理面から攻めます。

次にやったのはFLASH_ROMのソケット化
FrashromをRasberry-piのSPIに接続してhttps://www.flashrom.org/Flashromで読みます。
flashromのエンディアン 変換オプションは2byteだったので、4byteのByteorderを入れ替える簡単なプログラムを書きました。

ROMの区画は
[    0.640000] 0x000000000000-0x000000040000 : "uboot"    256k   0x40000
[    0.640000] 0x000000040000-0x000000050000 : "ubootenv"    64k   0x10000
[    0.650000] 0x000000050000-0x000000200000 : "kernel"   1728k  0x1B0000
[    0.660000] 0x000000200000-0x000001000000 : "rootfs"  14336k  0xE00000
rootfs は jffs2マウントでした。
この辺の手順はまた詳しく書くとして、

/etc/shadowさんです。
root:F0pCSaZ.P1Rrc:0:0:99999:7:::
bin:*:10933:0:99999:7:::
daemon:*:10933:0:99999:7:::
adm:*:10933:0:99999:7:::
lp:*:10933:0:99999:7:::
sync:*:10933:0:99999:7:::
shutdown:*:10933:0:99999:7:::
halt:*:10933:0:99999:7:::
uucp:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
ftp:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
default::10933:0:99999:7:::
admin:RdQhwfYI/a1kQ:0:0:99999:7:::
そう、defaultさんは「パスワードなしでログインできる」のです。

さっそくログインしてみます!
Welcome to HiLinux
IPCamera login: default
login: can't chdir to home directory '/home/default'
$ 
やったね!

逆ハッキング開始

そして空きランドJ3にシリアルポート発見!

1-TX
2-GND
3-RX
4-Vcc(3.3V)

これを USBシリアルでPCと接続します。

IPカメラ         PC
1-TX ---------- 1kΩ------------ RX
3-RX ---------- 1kΩ------------ TX
GND ---------------------------- GND
 ※事故防止用に1kΩの抵抗を挟んでいます。

TERATERMでもいいんですが、RLoginを115200bps 8bit noneにして
電源を入れると

console init done


U-Boot 2012.10 (Apr 17 2017 - 15:53:52) for GK7102 rb sc1045 v2.00 (GOKE)

HAL:  20151223 
DRAM:  64 MiB
Flash: 16 MiB
16 MiB
NAND:  SPINAND MID = 0xff, DID = 0xffff, Data = 0x1ffffff !spinand_board_init[1581]: No support this SPI nand!
SF:    16 MiB [page:256 Bytes] [sector:64 KiB] [count:256] (MX25L12845)
In:    serial
Out:   serial
Err:   serial
Net:   arm_freq(600MHz)..............0x112032
use int MII..............
gk7101
Hit any key to stop autoboot:  2     1     0 
[PROCESS_SEPARATORS] run sfboot
[PROCESS_SEPARATORS] setenv bootargs console=${consoledev},${baudrate} noinitrd mem=${mem} rw ${rootfstype} init=linuxrc ;sf probe 0 0;sf read ${loadaddr} ${sfkernel} ${filesize}; bootm
SF:    16 MiB [page:256 Bytes] [sector:64 KiB] [count:256] (MX25L12845)
put param to memory
mem size (41)
bsb size (2)

the kernel image is zImage or Image
entry = 0xc1000000 
## Transferring control to Linux (at address c1000000)...

Starting kernel ...

machid = 3988 r2 = 0xc0000100 
Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Linux version 3.4.43-gk (root@localhost.localdomain) (gcc version 4.6.1 (crosstool-NG 1.18.0) ) #16 PREEMPT Mon Apr 17 12:13:21 CST 2017
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: VIPT aliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: Goke GK7102 RB_SC1045 board V2.00
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] AHB: 0x90000000  0xf2000000  -- 0x1000000
[    0.000000] APB: 0xa0000000  0xf3000000  -- 0x1000000
[    0.000000] PPM: 0xc0000000  0xc0000000  -- 0x200000
[    0.000000] BSB: 0xc2b00000  0xf5000000  -- 0x200000
[    0.000000] DSP: 0xc2d00000  0xf6000000  -- 0x1300000
[    0.000000] hal version = 20151223 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 10414
[    0.000000] Kernel command line: console=ttySGK0,115200 noinitrd mem=41M rw rootfstype=jffs2 root=/dev/mtdblock3 init=linuxrc
[    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Memory: 41MB = 41MB total
[    0.000000] Memory: 36760k/36760k available, 5224k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     DMA     : 0xff600000 - 0xffe00000   (   8 MB)
[    0.000000]     vmalloc : 0x83000000 - 0xff000000   (1984 MB)
[    0.000000]     lowmem  : 0x80000000 - 0x82900000   (  41 MB)
[    0.000000]     modules : 0x7f000000 - 0x80000000   (  16 MB)
[    0.000000]       .text : 0x80008000 - 0x8042f000   (4252 kB)
[    0.000000]       .init : 0x8042f000 - 0x8044f000   ( 128 kB)
[    0.000000]       .data : 0x80450000 - 0x80478920   ( 163 kB)
[    0.000000]        .bss : 0x80478944 - 0x804aaa18   ( 201 kB)
[    0.000000] NR_IRQS:128
[    0.000000] >> gk7101 init irq vic1...
[    0.000000] >> gk7101 init irq vic2...
[    0.000000] gk7101 init vic...
[    0.000000] mach gk7101 init timer...

ネットワークカメラを買った。

カメラが突然動き出した!
中国語で話しかけられた!!
など物騒なニュースが飛び交っておりますが、
中華ネットワークカメラ買ってしまいました…
だって安いんだもん

LS-F2 : Loosafe LS-F2 3999円で購入
HR06 : KKMoon HR06 3199円で購入
s468 : KKMoon model810 s468-uk(平行輸入品) 2999円で購入

まずは開封の儀

KKMoon HR06

SoC : Goke GK7102(ARM 600MHz, RAM64MB)
FlashROM : MD25Q128SIG 128Mbit(16MB) 3.3V
Wifiサブ基板 :  MT7601UN 802.11b/g/n
ULN2803N モータドライバー ダーリントンTrアレイ8ch
ステッピングモータ 28BYJ-48 28BYJ48 DC 5V 4フェーズ5線式 x2 tilt+pan
カメラ : レンズ:3.6mm F1.4(水平画角50度) 1/4 CMOS SC1145 1Mpix センサ照明:0.5Lux / 0Lux(IRオン)
赤外線LED10個はメカリレー式

KKMoon HR06 には温度湿度センサーのドングルが添付していました。
この中身は
ST30-DI7CJ8 デジタル温湿度センサー I2C 2.4-5.5V 精度±0.2℃ ±2%
STC15W202S-35I-SOP8 USB-TTL? (MPU 8051Core 35MHz ROM2KB RAM256Byte EEPROM3KB) インターフェイスはUSBかI2Cなのか不明

趣味的な事を書き残していこうと思います。

NBD8008Rケース完成

コントロールパネル作成して、ダイソーのスタックボックスに収めました。 HDDは2.5インチ500GBが余ってたのでそれ使いました。静かで良いです。 カメラ3台H.246常時録画で40日くらい持ちそう。 マウス用にUSBコネクタをフロント出ししても良かったかも PP樹脂の...