淘口令效果及貼上板攻擊防護實現
淘口令效果與貼上板攻擊防護
寫在前面的話 – 關於剪下板安全性的思考不感興趣的可以跳過這段廢話
- 早在18年360網際網路中心首次監聽到一類木馬病毒,該類病毒不斷的監聽剪下板,判斷是否為比特幣等數字貨幣地址,如果是數字貨幣地址則將其替換成自己的地址從而實施盜竊,其實這種漏洞早在16年Telegram就暴露出應用將剪下板文字寫到本地的情況,而剪下板的安全一直不為大家所關注,因此應用本身如果需要較高的防護等級的話剪下板的安全就容易變成一個薄弱環節.
如何防護
筆者從兩方面考慮防護
- 如何防止寫入到剪貼簿的資料被其他應用讀取並篡改
- 如何簡單快速的進行防護而不對現有專案做過多改動
直接上程式碼
-
下面的程式碼主要是對剪貼簿的hook,在應用中如果一旦使用了剪貼簿會自動的走到我們hook的地方,在此我們可以將剪貼的資料進行加密處理,或者實現淘口令的功能.具體的各位可以根據自身的業務需求實現.完整程式碼各位可以下載github程式碼,如果有用請給個star支援一下.
package com.lhc.hook.myapplication.hook; import android.content.ClipData; import android.content.Context; import android.os.IBinder; import android.text.TextUtils; import android.util.Log; import com.lhc.hook.myapplication.hookutil.ServiceHook; import com.lhc.hook.myapplication.hookutil.ServiceManager; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class ClipboardHook { private static final String TAG = ClipboardHook.class.getSimpleName(); private static Context mContext; public static void hookService(Context context) { mContext = context; IBinder clipboardService = ServiceManager.getService(Context.CLIPBOARD_SERVICE); String IClipboard = "android.content.IClipboard"; if (clipboardService != null) { try { IBinder hookClipboardService = (IBinder) Proxy.newProxyInstance(IBinder.class.getClassLoader(), new Class[]{IBinder.class}, new ServiceHook(clipboardService, IClipboard, true, new ClipboardHookHandler())); ServiceManager.setService(Context.CLIPBOARD_SERVICE, hookClipboardService); } catch (Exception e) { e.printStackTrace(); } } else { Log.e(TAG, "ClipboardService hook failed!"); } } /** * 其實在android的貼上板中有一個ClipData.getDescription()方法, * 各位甚至可以根據自己的需要對貼上的內容進行描述,在此處就不贅述. */ public static class ClipboardHookHandler implements InvocationHandler { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String name = method.getName(); if ("setPrimaryClip".equals(name)) {//複製 hookSetPrimaryClip(args); return method.invoke(proxy, args); } else if ("getPrimaryClip".equals(name)) {//貼上 Object call = method.invoke(proxy, args); call = hookGetPrimaryClip(call); return call; } return method.invoke(proxy, args); } /** * hook貼上,可對資料加密,或實現淘口令效果 */ private void hookSetPrimaryClip(Object[] args) { for (int i = 0; i < args.length; i++) { if (args[i] instanceof ClipData) { ClipData clipData = (ClipData) args[i]; if (clipData != null && clipData.getItemAt(0) != null && !TextUtils.isEmpty(clipData.getItemAt(0).getText())) { // TODO: 2020/11/19 0019 對資料進行解密,實現淘口令功能 ClipData data = new ClipData(clipData.getDescription(), new ClipData.Item("資料已經加密")); args[i] = data; } } } } /** * hook 貼上 對資料進行解密或實淘口令解密功能 */ private Object hookGetPrimaryClip(Object call) { if (call instanceof ClipData) { ClipData encodeData = (ClipData) call; if (encodeData != null && encodeData.getItemAt(0) != null && !TextUtils.isEmpty(encodeData.getItemAt(0).getText())) { // TODO: 2020/11/19 0019 對資料進行解密對淘口令解密 ClipData decodeData = new ClipData(encodeData.getDescription(), new ClipData.Item("資料已經解密")); call = decodeData; } } return call; } } }
相關文章
- 口令攻擊
- 企業及個人如何有效防護網路攻擊?
- 淺析DDOS攻擊防護思路
- WEB三大攻擊之—SQL隱碼攻擊與防護WebSQL
- 淺談 CC 攻擊的防護方法
- 從根本上把握防護DDoS的核心要素,不怕DDoS攻擊防不住
- CSRF攻擊原理及預防手段
- 雲安全:防護“工具”還是攻擊“利器”
- 常見的攻擊方式以及防護策略
- sql注入定義、原理、攻擊和防護SQL
- 安全保護路由器防駭客攻擊路由器
- 常見web攻擊型別有哪些?如何預防及防範web攻擊?Web型別
- 20 行 JS 程式碼實現貼上板功能JS
- 被攻擊怎麼解決?DDoS高防IP防護策略
- 如何做好防護SQL隱碼攻擊漏洞SQL
- 無線網路攻擊有哪些?如何防護?
- ArborNetworks基於應用層防護DDoS攻擊
- 淺談DDOS攻擊攻擊與防禦
- 3、攻擊防範
- DDOS攻擊的具體解決辦法如何防護
- 伺服器被攻擊瞭如何做防護措施?伺服器
- 滲透測試網站sql注入攻擊與防護網站SQL
- 無線網路攻擊分為幾類?如何防護?
- 釣魚攻擊防不勝防,該如何預防網路釣魚攻擊?
- web安全之XSS攻擊原理及防範Web
- 開放API閘道器實踐(二) —— 重放攻擊及防禦API
- 攻擊面管理預防網路攻擊原理?
- 防護篇(5.4) 03. 防範 DDoS 攻擊 ❀ 飛塔 (Fortinet) 防火牆防火牆
- WEB攻擊與防禦Web
- CSRF攻擊與防禦
- 應對UDP反射放大攻擊的五種常用防護思路UDP反射
- 網站被黑客攻擊後的防護恢復辦法網站黑客
- 網站漏洞修復SQL隱碼攻擊防護辦法網站SQL
- 網路釣魚攻擊常用方法是什麼?如何防護?
- app怎麼防止被攻擊被打有多少種防護方式?APP
- XXE攻擊攻擊原理是什麼?如何防禦XXE攻擊?
- 盤點黑客攻擊途徑:最常用的7個策略及簡單的防護方法黑客
- 網路釣魚攻擊常用方法及防禦措施!