1、安全測試基本分類:
一、系統安全
系統加固
安全加固:好比linux中關閉telnet端口,修改ssh端口
檢測一些沒必要要的服務(須要卸載一個ping)--保證系統的最小集
app安全加固:加一層外殼
補丁
消息中間件:activityMQ,rabbitMQ,safMQ(關閉頁面,非業務端口,默認用戶)
防火牆規則(iptables)
防病毒
二、應用安全(安裝包,服務,業務)----用戶(人和服務)口令、敏感信息
(1)黑白名單(IP:port)----訪問控制
(2)消息層面:數據加密和簽名
(3)加密算法的安全性(對稱、非對稱)
三、管理安全
業務層面:面向普通用戶
管理層面:管理節點建立虛擬機(對資源的管理,虛擬機建立成功後進行提供業務)
運營層面:對業務的處理
運維層面:針對管理員(線上,線下)
四、網絡安全:關注數據傳輸安全(數據源頭和目的),是否加密,檢測數據的正確性和一致性(有無僞造)
(傳輸)----加密(hppts+ssl)
不是重點關注的:丟包後的處理 數據一致性(udp)
五、雲安全測試
A用戶--安全組A
B用戶--安全組B
(1)將A進入B,或者將B加入A
(2)規則:a->b(ip/udp/icmp) b->a 單通 多通
安全:
一、硬件
防火牆,交換機
二、軟件
2、app本地服務安全測試
問題1:app當前的現狀,會遇到哪些安全類的問題
一、遠程控制(木馬)
二、惡意推廣(付費)
三、外掛(程序的後門)
四、敏感、隱私信息被竊取
五、本地進程注入(四大組件沒有權限控制)
六、釣魚(盜版的應用)
帳戶安全
文件安全:文件權限的最小集,文件是否須要加密,脫敏處理(大數據的清洗)
支付安全:帳戶安全,日誌安全(用戶信息泄露),數據存儲(加密存儲),安全加密算法
進程安全:是否有狀態資源監控,進程管理,腳本是否安全
文件存儲:
app的四大組件安全(drozer工具)
activity:生命週期,服務的機制須要掌握
啓動,恢復,中止,完成等各類狀態的切換
service:
context provider:
broadcast:一對一,多對多
一、安裝包安全
1.1安裝包是否能夠反編譯
apk-->dex-->運行
反編譯:dex->java->反編譯(user/pwd/password等敏感信息)
編碼:(1)用戶敏感信息硬編碼
(2)代碼混淆
對於支持反射的語言,代碼混淆有可能與反射發生衝突。
代碼混淆並不能真正阻止反向工程,只能增大其難度
對於對安全性要求很高的場合,僅僅使用代碼混淆並不能保證源代碼的安全。
(3)代碼掃描(fortify)
Fortify SCA 是一個靜態的、白盒的軟件源代碼安全測試工具;
它經過內置的五大主要分析引擎:數據流、語義、結構、控制流、配置流等對應用軟件的源代碼進行靜態的分析,分析的過程當中與它特有的軟件安全漏洞規則集進行全面地匹配、查找,從而將源代碼中存在的安全漏洞掃描出來,並給予整理報告。
1.二、安裝包是否有簽名
(1)發佈前校驗簽名使用的key是否正確
(2)使用命令:jarsigner –verify –verbose –certs apk包路徑
驗證結果:jar已驗證
1.三、安裝包是否完整
包發佈:
(1)發佈平臺下載安裝包
(2)安裝包完整性校驗:通常採用md5校驗方式,經過md5工具和md5密鑰進行校驗
例如app下載後進行完整性校驗
1.四、安裝包中申請的權限問題
認證機制:android--manifest.xml中看各個組件的權限
對APP申請的權限進行檢查,在Android工程的AndroidManifest.xml文件中查詢申請的權限,刪除沒必要要的權限,例如用戶定位/通信錄/信息等權限,保留APP可用權限便可
二、軟盤劫持
(1)安全問題:
用戶安裝了第三方不可信的鍵盤輸入法,當涉及到隱私或者金融 類操做時須要應用進行校驗提示
(2)建議:
使用應內部提供的軟鍵盤
按期對手機進行病毒掃描
三、帳戶安全(最重要)
帳戶分類:
用戶帳戶(管理員,普通用戶),
服務帳戶(多個服務之間的交互須要使用口令)
docker(各類服務,通訊多是經過消息組建、配置文件---ip/port/user/password)
硬件帳戶(硬件動態庫)
(1)密碼是否明文存儲(數據庫/配置文件)
(2)密碼加密算法是否安全
(3)密碼是否加密傳輸
(4)是否支持帳號鎖定策略---3次,第四次鎖定
(5)是否支持多點登錄
(6)註銷後不能訪問(session、cookies是否刪除)
(7)帳戶權限控制(縱向越權和橫向越權)
縱向越權:一個低級別攻擊者嘗試訪問高級別用戶的資源
橫向越權:攻擊者嘗試訪問與他擁有相同權限的用戶的資源;(不一樣部門或者不一樣公司之間)
(8)密碼安全要求(長度、字符,數字)
四、文件安全
(1)文件權限
dwrx 0,0,0 讀,寫,執行
用戶、本組、其餘組
根據業務須要賦予文件最小權限
(2)文件內容
敏感信息(用戶名、密碼),加密的方法,加密的安全要求
包括對外提供的用戶名和密碼信息以及程序內部交互的認證信息:須要知足密碼不能是明文,而且須要安全加密算法進行加密配置,密碼長度和格式知足安全要求
文件上傳和下載:
要不要脫敏處理(醫院上傳證件照)
傳輸過程當中加密
完整性校驗(hash值校驗)
文件存儲
五、日誌安全
(1)業務日誌----交易的流水號,交易的過程
(2)系統內部交互日誌 a--->b---->c 記錄整個交互過程
debug/interface/run/security
log.debug(message.toString())----打印全部的信息
(3)統計/審計日誌---系統的入口記錄每分鐘接收的消息數
(4)重點考慮:敏感信息的存儲(密碼等)
(5)日誌管理平臺:收集各個系統中的日誌
日誌中不能打印密碼信息;
日誌中不能打印用戶隱私信息;
須要有安全日誌功能;
日誌須要有清理機制;
日誌不能隨意刪除。
日誌安全的測試手段:
本身寫腳本去掃描日誌文件(user/pwd/password/userName/userpwd)
shell/python/search工具
六、進程安全
一、啓動
(1)權限問題:win10常常遇到本身運行exe報沒有權限
通常使用普通用戶啓動服務
linux:不能使用root用戶啓動服務
在start.sh中判斷只能當前用戶啓動
(2)啓動過程當中數據問題(有時候進程啓動的時候會生成一下臨時文件,須要考慮臨時文件中是否涉及安全信息)
啓動過程當中的臨時文件須要刪除
(3)啓動完成後對外端口啓動在業務網絡上,對內端口啓動在本地網絡上
端口的啓動機制
問題:當前端口有什麼安全風險
0.0.0.0 全網監聽,內網的會被外部網絡訪問到
二、運行
(1)運行過程當中的緩存信息涉及隱私須要加密
(2)須要記錄運行日誌
(3)運行過程當中須要有監控認證
運行監控:vcs/hacs----提供守護服務
(4)多進程之間的交互須要認證
三、中止
(1)清理臨時文件
(2)安全斷開相關鏈接
七、數據存儲/文件存儲安全
功能:數據完整性;數據備份;容錯與冗餘
AI--機器學習
(1)數據的重要性---機密性,完整性,防丟失
目的:保護機密數據;防止數據丟失;確保數據完整性
python爬蟲:統計從10年到如今當前歌手的歌曲:
a:有多少唱季節,春,夏,秋,冬
b:多少唱城市的歌曲,成都,北京,上海.....
最終生成一個報表
(2).數據的介質(硬件)
介質:單個文件、數據庫、文件服務器、緩存服務
數據庫
功能:數據完整性
數據存儲:加密存儲
訪問控制
監控機制(服務監控,數據監控)
備份恢復
(3)數據庫安全
DCL DDL DML 數據庫掃描--NGSSquirrel(全球公認的數據庫掃描軟件)/DatabaseScanner
代碼安全:掃描(fortify)