常見的爬蟲逆向面試題

文章轉載于:https://mp.weixin.qq.com/s/dXRo0D_Xx7E_h85XbnwPVQ 有興趣去源站瀏覽學習

主要自己看著方便些

1.HTTS三次握手

目前使用的 HTTP/HTTPS 協議是基于 TCP 協議之上的,因此也需要三次握手。在 TCP 三次握手建立鏈接之后,才會進行 SSL 握手的過程(即身份認證和密鑰協商的過程)。

第一步:證書驗證

服務器將 crt 公鑰以證書的形式發送到客戶端,客戶端驗證證書是否合法。

第二步:獲取對稱密鑰

客戶端用隨機數和 hash 簽名生成一串對稱密鑰(即隨機鑰,客戶鑰),然后用 crt 公鑰對對稱密鑰進行加密。
客戶端將加密后的對稱密鑰發送給服務器。
服務器用 crt 私鑰解密,取出對稱密鑰。

第三步:傳輸加密數據

服務器用隨機鑰來加密數據,發送加密的網頁內容。
客戶端通過本地存儲的隨機鑰對密文進行解密并判斷是否被篡改,如果沒有篡改,
后面的數據通訊將使用對稱加密傳輸所有內容。

2.對稱和非對稱加密

對稱加密:

在編碼時使用的密鑰 e 和解碼時一樣 d(即 e = d)。(DES、3DES、AES)

非對稱加密:

加密的密鑰 e 和解密的密鑰 d 是不同的(即 e != d),并且加密的密鑰 e 是公開的,叫做公鑰,
而解密的密鑰 d 是保密的,叫私鑰。(RSA、DSA、ECC)

3.web逆向參數定位方法

1、全局搜索
2、xhr攔截
3、堆棧調試
4、Hook腳本
5、內存漫游

4.瀏覽器指紋

常用于記錄的瀏覽器指紋:
Header、Cookie,IP,DNS,
UserAgent,Font(字體列表),
Language,localStorage、
Plugin(插件),Canvas(渲染繪圖),
WebGL(3D渲染圖形),
Web Vendor(硬件廠商信息),
Timezone(時區),Platform(系統),
WebRTC(web通信API),
ScreenResolution(分辨率),
Audio(音頻設置和硬件特征指紋),
enumerateDevices(其他媒體設備),
CPU、GPU信息。

5.web逆向其他問題

1、常見檢測和繞過:反調試之類
2、如何獲取當前環境:Proxy
3、hook如何實現的
4、如何hook XHR
5、加解密和混淆處理
345可到工具站查看,地址:
cnlans.com/lx/tools/jshook

6.chromedriver檢測

常見的檢測點:webdriveruser-data-dirlanguagenavigatorpluginsDeveloper可在頁面加載之前通過Js語句覆蓋原有屬性。
Object.defineProperty(navigator, 'webdriver', { get: () => undefined }
)

7.驗證碼識別和處理

通用逆向分析流程
1.分析請求流程
2.驗證碼注冊
3.識別驗證信息
4.生成驗證參數
5.驗證識別方法
1.開源工具識別
2.第三方平臺
3.訓練識別模型,可借助云平臺或開源框架驗證碼廠家:極驗、阿里、易盾、頂象、點觸、數美。
極驗簡述
1.主要有三個以 geetest_ 開頭的加密參數,提交滑塊時的請求參數 gt、challenge、lang、w、callback。
2.分析時可對代碼進行 Unicode 解碼,解碼之后再通過AST腳本去除冗余代碼。
3.調試后抽離出請求參數的加密邏輯,構造請求體完成驗證。數美流程
1.驗證碼申請
2.提取js參數,需要提取js中的參數名。
2.驗證碼注冊,獲取滑塊圖片和驗證背景圖。
3.計算滑塊缺口位置,可使用opencv等工具計算缺口距離。
4.構造軌跡,自動生成或者copy軌跡庫。
5.逆向分析接口參數,完成提交驗證。

8.動態cookie反爬

加速樂簡述1、第一次請求返回狀態為521的響應內容,執行JS可獲得cookie值 jsl_clearance。
2、cookie帶上生成的__jsl_clearance和第一步中返回的cookie值__jsluid_h再次請求目標網址,響應內容為一段混淆JS代碼,該代碼為生成真實__jsl_clearance值的代碼。
3、主要加密邏輯就是對參數做拼接處理,然后對拼接后的字符串進行hash加密。瑞數流程
1、第一次請求后,瀏覽器加載meta,meta是包含動態content的html標簽,會在eval執行第二層JS代碼時使用到。
2、瀏覽器請求外鏈JS,一般同站外鏈JS是固定的,用于下一步的調用。
3、加載自執行函數(動態),將外鏈的JS解密為字符串,并給window.$_ts添加屬性。然后通過eval函數進入VM執行解密后的字符串,執行完畢后可生成cookie。瑞數處理1、先處理定時器和死循環debugger。
2、將HTML放到本地運行或將瀏覽器JS替換為固定內容。
3、將content和自執行方法在本地調試,根據VM執行的異常信息補環境。
4、主要需要補充document、localStorage和window中的一些方法,如addEventListener、getElementsByTagName、createElement等。

9.安卓逆向分析步驟

1、抓包
2、查殼脫殼
3、反編譯
4、參數定位、靜態分析、動態調試
5、模擬調用、算法還原

10.xposed hook原理

安卓所有的APP進程是用 Zygote(孵化器)進程進行fork創建并啟動的。
Xposed替換了Zygote進程對應的可執行文件/system/bin/app_process,
每啟動一個新的進程,都會先啟動xposed替換過的文件,加載xposed相關代碼。

11.Frida hook原理

Frida的注入是基于 ptrace實現的。
frida 調用ptrace向目標進程注入了一個frida-agent-xx.so文件。
后續hook是以該so文件和frida-server通訊實現的。Frida hook java層原理Frida-java采用常見的Dalvik Hook方案,將待hook的java函數修改為native函數,當調用該函數時,會執行自定義的native函數。
但是和其他hook框架不同的是,使用frida時,我們hook的代碼是JS實現的,所以有一個基于JS代碼生成native函數過程。

12.ptrace注入流程

主要是通過系統ptrace函數進行實現。
1.attach到遠程進程;
2.保存寄存器環境
3.遠程調用mmap函數分配內存空間
4.想遠程進程寫入加載模塊名稱和調用函數
5.通過dlopne打開注入模塊
6.dlsym獲取調用函數地址
7.遠程調用注入模塊的函數
8.恢復寄存器
9.剝離遠程進程

13.Frida常見反調試

1. 檢測 frida-server 文件名  
2. 檢測 27042 默認端口  
3. 檢測 D-Bus 
4. 檢測 /proc/pid/maps 映射文件  
5. 檢測 /proc/pid/tast/tid/stat
6. 雙進程保護  前兩種可以通過修改 frida-server 文件名,改默認端口繞過。雙進程可以通過 - f spawn 模式啟動繞過。其他的需要 hook 修改。 

14.Inlinehook

inlinehook是hook的一種實現方式。通過修改原函數開頭的匯編指令,直接跳轉到指定函數,執行完自己的邏輯再跳轉回來。
開源的inlinehook庫有很多,例如subhook和微軟的Detours。如何去檢測inlinehook
inlinehook只修改了內存中的機器碼,而內存中的機器碼是從文件加載而來的,所以我們可以將函數在內存中字節和本地對應的字節進行比較,
如果不一致,那么可以認為內存中的字節被修改了,即被inlinehook了。

15.加固與脫殼

現在安卓平臺上幾種加固方式(動態加載,類抽取,混淆,vmp)1、Dex整體加固也被稱為第一代加固,把DEX整體加密然后動態加載。脫殼思路是app運行后,在app內存中搜索 dex\n035,
然后進行dump數據。
2、不落地加載是第二代加固,通過內存動態加載Dex,可以將Dex加密放在Apk中,
在內存中實現解密。脫殼思路是通過hook關鍵函數,直接在內存中把Dex遍歷出來就可以。
3、指令抽取和轉換。脫殼思路是對自定義的JNI接口對象進行內部調試分析,得到完整的原始dex文件。
4、虛擬機源碼保護。根據VMProtect殼的特征和加殼方式,編寫脫殼程序還原原始的程序代碼,
將還原后的程序代碼重新編譯,生成程序可執行文件。

16.設備指紋

常見:品牌型號、IMEI、MAC地址、IMSI、運營商、系統信息、硬件信息、藍牙信息、路由信息等。

17.其他安卓問題

1、系統服務
2、系統權限
3、安卓反調試
4、重打包檢測
5、ollvm
6、不同協議的抓包問題
7、群控開發、改機
8、IDA使用問題
9、ARM跳轉指令

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717885.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

故障診斷 | 一文解決,XGBoost極限梯度提升樹的故障診斷(Matlab)

效果一覽 文章概述 故障診斷 | 一文解決,XGBoost極限梯度提升樹的故障診斷(Matlab) 模型描述 XGBoost通過集成多個決策樹來建立一個強大的預測模型。它采用了一種特殊的梯度提升技術,稱為極限梯度提升(Extreme Gradient Boosting),以提高模型的性能和魯棒性。 極限梯度…

【大數據Hive】hive 多字段分隔符使用詳解

目錄 一、前言 二、hive默認分隔符規則以及限制 2.1 正常示例:單字節分隔符數據加載示例 2.2 特殊格式的文本數據,分隔符為特殊字符 2.2.1 文本數據的字段中包含了分隔符 三、突破默認限制規則約束 3.1 數據加載不匹配情況 1 3.2 數據加載不匹配…

python paramiko 網絡系統運維

概述 背景:網絡系統運維與建設:工作中發現客戶使用python腳本批量操作網絡設備導出多臺網絡設備的配置定期執行相關的巡檢工作 修改配置 # -*- coding:utf8 -*- """ # editor: hjjdreamer # create-time: 2024/3/3-23:31 # Python-Scri…

Java項目推薦|幾個B站上的從零搭建項目

分享幾個B站上搜集到的技術比較全,講解也詳細的Java后端開發項目 目錄 谷粒商城 2020-03-31 iHRM 人力資源管理系統 2021-04-16 瑞吉外賣 2022-04-12 學成在線 2023-01-13 尚上優選 2023-06-06 黑馬頭條 2023-06-13 蒼穹外賣 2023-07-05 谷粒商城 2020-03-3…

命名實體識別NER

一、什么是命名實體識別: 命名實體:通常我們將人名、地名、機構名等專有名詞統稱命名實體,如:周杰倫,黑山縣,孔子學院,24方鋼直機 顧名思議,命名實體識別(簡稱NER&#x…

【常用的 Git 命令及簡要示例說明】

常用的 Git 命令及簡要示例說明,以供參考: 初始化一個新的代碼倉庫: git init克隆一個遠程倉庫到本地: git clone https://github.com/user/repo.git添加當前所有變更到暫存區: git add .提交暫存區的變更到本地倉庫&a…

STM32FreeRTOS任務通知(STM32cube高效開發)

文章目錄 一、任務通知(一)任務通知概述1、任務通知可模擬隊列和信號量2、任務通知優勢和局限性 (二) 任務通知函數1、xTaskNotify()發送通知值不返回先前通知值的函數2、xTaskNotifyFromISR()發送通知函數ISR版本3、x…

Java面試題總結200道(二)

26、簡述Spring中Bean的生命周期? 在原生的java環境中,一個新的對象的產生是我們用new()的方式產生出來的。在Spring的IOC容器中,將這一部分的工作幫我們完成了(Bean對象的管理)。既然是對象,就存在生命周期,也就是作用…

LeetCode 刷題 [C++] 第73題.矩陣置零

題目描述 給定一個 m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 題目分析 題目中要求使用原地算法:即直接在輸入矩陣上進行修改。因此如果在輸入矩陣上把行/列的值修改成0后,在…

【Linux】基本指令(下)

🦄個人主頁:修修修也 🎏所屬專欄:Linux ??操作環境:Xshell (操作系統:CentOS 7.9 64位) 日志 日志的概念: 網絡設備、系統及服務程序等,在運作時都會產生一個叫log的事件記錄;每一行日志都記載著日期、時間、使用者及動作等相關…

計算機視覺(Computer Vision)和機器視覺(Machine Vision)

舉例說明計算機視覺(CV)技術的優勢和挑戰 計算機視覺(CV)技術是一種使用計算機科學和機器學習方法來解釋、分析和理解圖像和視頻的技術。它的優勢和挑戰如下: 優勢: 高效性:CV技術可以快速處…

課時53:數組實踐_基礎操作_數組基礎

1.1.2 數組定義 學習目標 這一節,我們從 基礎知識、簡單實踐、小結 三個方面來學習。 基礎知識 數組創建 在Shell中,用括號來表示數組,數組元素用“空格”符號分割開。定義數組的語法格式:array_name(value1 ... valuen) 注意…

MSCKF4講:后端理論推導(下)

MSCKF4講:后端理論推導(下) 文章目錄 MSCKF4講:后端理論推導(下)6 可觀測性分析與約束6.1 為什么要做能觀性分析6.2 關于零空間解釋6.3 可觀測性分析6.4 可觀測性約束① 狀態轉移矩陣Φ② 對觀測矩陣H--觀測…

【洛谷 P8682】[藍橋杯 2019 省 B] 等差數列 題解(數學+排序+輾轉相除法)

[藍橋杯 2019 省 B] 等差數列 題目描述 數學老師給小明出了一道等差數列求和的題目。但是粗心的小明忘記了一部分的數列,只記得其中 N N N 個整數。 現在給出這 N N N 個整數,小明想知道包含這 N N N 個整數的最短的等差數列有幾項? 輸…

deep learning with pytorch(一)

1.create a basic nerual network model with pytorch 數據集 Iris UCI Machine Learning Repository fully connected 目標:創建從輸入層的代碼開始,向前移動到隱藏層,最后到輸出層 # %% import torch import torch.nn as nn import torch.nn.funct…

【大數據】詳細講解

大數據 0. 前言1. 大數據的5V特征2. 大數據技術3. 大數據分析4. 大數據應用5. 失效風險與挑戰 0. 前言 大數據是一個涉及非常龐大和復雜數據集的領域,這些數據集因其規模和復雜性而難以使用傳統數據處理軟件進行有效處理。在講解大數據之前,我們首先需要…

LeetCode26 刪除有序數組中的重復項

題目 給你一個 非嚴格遞增排列 的數組 nums ,請你原地刪除重復出現的元素, 使每個元素 只出現一次 ,返回刪除后數組的新長度。 元素的 相對順序 應該保持 一致 然后返回 nums 中唯一元素的個數。 示例 示例 1:輸入:num…

30天JS挑戰(第十四天)------數據的復制

第十四天挑戰(數據的復制) 地址:https://javascript30.com/ 所有內容均上傳至gitee,答案不唯一,僅代表本人思路 中文詳解:https://github.com/soyaine/JavaScript30 該詳解是Soyaine及其團隊整理編撰的,是對源代碼…

后端開發技術面試指南

工作10多年,每年都會幫組里面試一些新同學校招社招的都有,下面我就從一個面試官的視角來給大家拆解一下如何淡然應對后端開發技術面試。 1.一面多為電話面試 (1)問七問八 ①簡歷要注重內容,形式上不丑沒有錯別字即可。之前收到過一個工作5…

經典語義分割(一)利用pytorch復現全卷積神經網絡FCN

經典語義分割(一)利用pytorch復現全卷積神經網絡FCN 這里選擇B站up主[霹靂吧啦Wz]根據pytorch官方torchvision模塊中實現的FCN源碼。 Github連接:FCN源碼 1 FCN模型搭建 1.1 FCN網絡圖 pytorch官方實現的FCN網絡圖,如下所示。 1.2 backbone FCN原…