① 如何繞過Android網路安全配置
Android Nougat(Android 7)引入了一種名叫網路安全配置(Network Security Configuration)的新型安全功能,這種新功能可以允許Android開發者們在無需修改App代碼的情況下自定義他們的網路安全設置。
但是這種功能將有可能影響Android移動端應用的安全測評。如果需要攔截HTTPS流量,那麼就必須安裝代理證書,而且還必須安裝在「用戶證書」之中,而默認情況下這類證書是不被信任的。
接下來,我們將給大家介紹這種新機制的運行模式,以及如何通過重新編譯或運行時鉤子機制來修改這種新型安全機制的默認行為。
開發者如何使用該功能
為了修改默認配置,我們需要在resources目錄中創建一個XML文件來指定自定義配置信息。下面給出的是一份配置文件樣本,代碼給應用程序的所有HTTPS鏈接配置了用戶證書:
<?xml version="1.0"encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system"/>
<certificates src="user"/>
</trust-anchors>
</base-config>
</network-security-config>
除此之外,該文件還需要在AndroidManifest文件中進行引用,即在application標簽中的android:networkSecurityConfig參數中指定:
<?xml version="1.0"encoding="utf-8"?>
<manifest ... >
<applicationandroid:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
滲透測試人員如何繞過該功能
重新編譯
如果待測試的應用程序運行在Android 7以及更高版本的Android平台中(或者targetSdkVersion鍵配置為版本24或更高),應用程序很可能使用的是默認配置。因此,用戶證書(例如代理CA證書)將不會被應用程序所信任。
一般來說,修改默認配置的方法是在插入了XML內容(激活證書容器)之後再對應用程序進行重新編譯。那麼接下來,我們就要使用apktool來對應用程序進行修改了。
首先,我們要做的就是使用apktool來對應用程序進行反編譯。完成之後,我們還需要在resources目錄中創建一個XML文件並修改AndroidManifest.xml文件中的相關參數(指向網路安全配置文件)。此時,我們就可以再次使用apktool來對應用程序進行重新編譯,然後使用jarsigner工具來對生成的APK文件簽名。
當我們使用任意證書完成對APK文件的重新簽名後,我們就可以使用adb來將其安裝到手機之中了。如果手機經過配置後可以通過中間代理(例如Burp Suite)來發送流量,那麼只要手機系統中安裝了CA證書,我們就可以攔截HTTPS流量了。
運行時鉤子
但是在某些情況下,剛才所介紹的方法也許是不可行的。比如說,如果應用程序使用了shareId來跟其他應用程序共享同一ID,而我們又需要直接訪問其數據的話,那麼這兩個應用程序必須使用同一份證書來進行簽名。如果應用程序經過了重新編譯和重新簽名之後,那這個保護功能也就多餘了,而且我們也不可能再使用開發者之前的初始證書來對修改後的APK進行簽名。
對於這種場景,我們就可以使用動態構造技術了,因為這種方法可以允許我們在運行時對程序的行為進行修改而無須修改應用程序的代碼。為了實現這種操作,我們需要創建一個Frida腳本來調整應用程序(目標SDK版本>=24)網路安全配置的默認行為。
android.security.net.config包實現了網路安全配置模塊,其主類ManifestConfigSource可以載入XML文件中自定義的配置信息,如果resources文件不存在的話,它將會載入默認配置。相關代碼如下所示:
package android.security.net.config;
public class ConfigSource {
. . .
private ConfigSource getConfigSource() { synchronized (mLock) {
. . .
if (mConfigResourceId != 0) {
. . .
source = newXmlConfigSource(mContext, mConfigResourceId, debugBuild, mTargetSdkVersion,mTargetSandboxVesrsion);
} else {
. . .
source = new DefaultConfigSource(usesCleartextTraffic,mTargetSdkVersion, mTargetSandboxVesrsion);
}
mConfigSource = source; return mConfigSource;
}
}
. . .
}
DefaultConfigSource類是ManifestConfigSource類中定義的一個私類,如果沒有使用XML文件來修改配置信息的話,系統將會默認使用這個類:
package android.security.net.config;
public class ConfigSource {
...
private static final class DefaultConfigSource implements ConfigSource { private final NetworkSecurityConfig mDefaultConfig; public DefaultConfigSource(boolean usesCleartextTraffic, inttargetSdkVersion, int targetSandboxVesrsion) {
mDefaultConfig =NetworkSecurityConfig.getDefaultBuilder(targetSdkVersion,
targetSandboxVesrsion)
.setCleartextTrafficPermitted(usesCleartextTraffic)
.build();
} @Override
public NetworkSecurityConfig getDefaultConfig() { return mDefaultConfig;
} @Override
public Set<Pair<Domain, NetworkSecurityConfig>>getPerDomainConfigs() { return null;
}
}
}
請大家看看這個類的構造器,它可以接收三個參數,其中一個就是應用程序的目標SDK版本。這個值可以使用getDefaultBuilder()方法來構造NetworkSecurityConfig類。在最後一段代碼中,如果targetSdkVersion的值小於或等於23(Android Marshmallow,即Android 6.0),代碼將會載入用戶證書。
package android.security.net.config;
public final class NetworkSecurityConfig {
...
public static final Builder getDefaultBuilder(int targetSdkVersion, inttargetSandboxVesrsion) {
Builder builder = new Builder()
.setHstsEnforced(DEFAULT_HSTS_ENFORCED) // System certificatestore, does not bypass static pins.
.addCertificatesEntryRef(
newCertificatesEntryRef(SystemCertificateSource.getInstance(), false)); final = targetSandboxVesrsion < 2;
builder.setCleartextTrafficPermitted(cleartextTrafficPermitted); // Applications targeting N andabove must opt in into trusting the user added certificate
// store.
if (targetSdkVersion <=Build.VERSION_CODES.M) { // User certificate store,does not bypass static pins.
builder.addCertificatesEntryRef(
newCertificatesEntryRef(UserCertificateSource.getInstance(), false));
} return builder;
}
...
接下來,我們需要使用一個Frida腳本來掛鉤DefaultConfigSource類的構造器,並修改其中的targetSdkVersion值。除此之外,這個腳本還需要掛鉤getDefaultBuilder()方法來確保這個值已經被成功修改了。
Java.perform(function(){
var ANDROID_VERSION_M = 23;
var DefaultConfigSource =Java.use("android.security.net.config.ManifestConfigSource$DefaultConfigSource");
var NetworkSecurityConfig = Java.use("android.security.net.config.NetworkSecurityConfig");
DefaultConfigSource.$init.overload("boolean","int").implementation = function(usesCleartextTraffic,targetSdkVersion){
console.log("[+] Modifying DefaultConfigSource constructor"); return this.$init.overload("boolean","int").call(this, usesCleartextTraffic, ANDROID_VERSION_M);
};
DefaultConfigSource.$init.overload("boolean", "int","int").implementation = function(usesCleartextTraffic,targetSdkVersion, targetSandboxVersion){
console.log("[+]Modifying DefaultConfigSource constructor"); return this.$init.overload("boolean", "int","int").call(this, usesCleartextTraffic, ANDROID_VERSION_M,targetSandboxVersion);
};
NetworkSecurityConfig.getDefaultBuilder.overload("int").implementation= function(targetSdkVersion){
console.log("[+] getDefaultBuilder original targetSdkVersion =>" + targetSdkVersion.toString()); return this.getDefaultBuilder.overload("int").call(this, ANDROID_VERSION_M);
};
NetworkSecurityConfig.getDefaultBuilder.overload("int","int").implementation = function(targetSdkVersion,targetSandboxVersion){
console.log("[+] getDefaultBuilder original targetSdkVersion =>" + targetSdkVersion.toString()); return this.getDefaultBuilder.overload("int","int").call(this, ANDROID_VERSION_M, targetSandboxVersion);
};
});
現在,在上面給出的Frida腳本的幫助下,我們可以使用類似Burp Suite之類的HTTP代理來攔截應用程序(所有目標SDK版本>=24的應用程序)的網路流量。
$ frida -U -l ntc.js -f<package_name> --no-pause
② 中國網路安全現狀
2021年7月20日,新浪科技發文稱iPhone手機存在安全隱患,Pegasus惡意軟體可能會入侵用戶的iPhone手機,竊取用戶的信息和郵件,甚至可以控制手機的麥克風和攝像頭,大數據時代用戶或無隱私可言。
實際上,我國對打擊大數據泄露安全事件有著強大的決心和執行力,在滴滴事件之後,國家網信辦依據《中華人民共和國國家安全法》《中華人民共和國網路安全法》《中華人民共和國數據安全法》等法律法規修訂了《網路安全審查好辦法》,向社會公開徵求意見,擬規定掌握超百萬用戶信息國外上市須審查。
由此可見,在我國互聯網高速發展的時代,用戶數據的監管變得越來越困難,此次網信辦修訂《網路安全審查辦法》凸顯了我國對收集隱私數據行為嚴厲打擊的決心。
網路安全行業主要企業:目前國內網路安全行業的主要企業有深信服(300454)、安恆信息(688023)、綠盟科技(300369)、啟明星辰(002439)、北信源(300352)等。
1、iPhone存在漏洞對用戶數據安全造成威脅
2021年7月20日,新浪科技發文稱iPhone存在漏洞,Pegasus惡意軟體在用戶不點擊鏈接的情況下也可以入侵用戶的手機,竊取信息和郵件,甚至可以操控用戶的攝像頭,此消息一出,網友大呼大數據時代無隱私可言,網路安全問題堪憂,實際上,在我國對網路安全問題有著強大的決心,滴滴事件之後,國家網信辦依據《中華人民共和國國家安全法》《中華人民共和國網路安全法》《中華人民共和國數據安全法》等法律法規修訂了《網路安全審查好辦法》,向社會公開徵求意見,擬規定掌握超百萬用戶信息國外上市須審查。
由此可見,在我國互聯網高速發展的時代,用戶數據的監管變得越來越困難,此次網信辦修訂《網路安全審查辦法》凸顯了我國對收集隱私數據行為嚴厲打擊的決心。
綜合來看,滴滴事件對國家數據安全層面敲起了警鍾,而iPhone此次網路安全漏洞問題針對個人數據安全問題敲響了警鈴,相信未來隨著我國網路安全相關法案的不斷完善,我國個人網路安全問題將得到有效的保護。
—— 以上數據參考前瞻產業研究院《中國網路安全行業發展前景預測與投資戰略規劃分析報告》
③ 網路安全問題和解決答案
網路空間安全專業簡稱「網路安全專業」,主要以信息構建的各種空間領域為主要研究對象,包括網路空間的組成、形態、安全、管理等。該專業致力於培養「互聯網+」時代能夠支撐和引領國家網路空間安全領域的具有較強的工程實踐能力,系統掌握網路空間安全的基本理論和關鍵技術,能夠在網路空間安全產業以及其他國民經濟部門,從事各類網路空間相關的軟硬體開發、系統設計與分析、網路空間安全規劃管理等工作,具有強烈的社會責任感和使命感、寬廣的國際視野、勇於探索的創新精神和實踐能力的拔尖創新人才和行業高級工程人才。
零基礎也可以學習的
④ 網路安全怎麼學習呢
網路安全
如何學習網路安全
m0_68489386
原創
關注
1點贊·1207人閱讀
一、網路安全學習的誤區
1.不要試圖以編程為基礎去學習網路安全
不要以編程為基礎再開始學習網路安全,一般來說,學習編程不但學習周期長,且過渡到網路安全用到編程的用到的編程的關鍵點不多。一般人如果想要把編程學好再開始學習網路安全往往需要花費很長時間,容易半途而廢。建議在學習網路安全的過程中,哪裡不會補哪裡,這樣更有目的性且耗時更少。學習編程能決定你能在網路安全這條路上到底能走多遠,所以推薦大家自學一些基礎編程的知識
2.不要剛開始就深度學習網路安全
學習講究這方法,需要一步一步的來,由淺至深,慢慢的加大難度,很多人剛開始就猛學,很容易到後面的時候乏力,越學可能就越學得枯燥,到最後就很容易放棄了。
3.收集適當的學習資料
網上有很多網路安全的學習資料。而很多朋友都有「收集癖」,一下子很多書籍,收藏幾十個視頻,覺得學習資料越多越好,然而網上的學習資料重復性極高。建議選擇大眾受用的學習資料。
4.適當的報班學習
很多人覺得報班就是浪費錢財,覺得自己自學就很好了,但其實自學也是需要一定的天賦和理解能力,且自學的周期較長,一些急躁的客戶或者急於找到工作的客戶,還是報班學的比較輕松,學習周期不長,學到的東西也不會少,建議學習者根據自己的自身條件選擇是否報班。
二、學習網路安全的些許准備
1.硬體選擇
學習網路安全不需要配置很高的電腦,黑客用的電腦,從來不是根據高配置選擇電腦,只要穩定就行。因為黑客所使用的一些程序,低端CPU也可以很好的運行,而且不佔什麼內存。黑客是在DOS命令下對進行的,電腦能使用到最佳狀態就可以了。
2.軟體選擇
很多人會糾結學習黑客到底是用L網路安全學習路線
第一階段:基礎操作入門
入門的第一步是學習一些當下主流的安全工具課程並配套基礎原理的書籍,一般來說這個過程在1個月左右比較合適。
在學習基礎入門課程的同時,同時閱讀相關的書籍補充理論知識,這里比較推薦以下幾本書:
《白帽子講Web安全》
《Web安全深度剖析》
《Web安全攻防 滲透測試實戰指南》
第二階段:學習基礎這個時候最重要的就是開始打地基!所謂的「打地基」其實就是系統化的學習計算機基礎知識
第三階段:實戰操作
1.挖SRC
挖SRC的目的主要是講技能落在實處,學習網路安全最大的幻覺就是覺得自己什麼都懂了,但是到了真的挖漏洞的時候卻一籌莫展,更多的還是要進行實操,把理論知識運用到實踐中,確保更好的掌握知識點。
2.從技術分享帖學習
觀看學習近十年所有挖掘的帖,然後搭建環境,去復現漏洞,
⑤ 網路安全技術包括什麼
計算機網路安全技術簡稱網路安全技術,指致力於解決諸如如何有效進行介入控制,以及如何保證數據傳輸的安全性的技術手段,主要包括物理安全分析技術,網路結構安全分析技術,系統安全分析技術,管理安全分析技術,及其它的安全服務和安全機制策略。
技術分類虛擬網技術
虛擬網技術主要基於近年發展的區域網交換技術(ATM和乙太網交換)。交換技術將傳統的基於廣播的區域網技術發展為面向連接的技術。因此,網管系統有能力限制區域網通訊的范圍而無需通過開銷很大的路由器。防火牆技術網路防火牆技術是一種用來加強網路之間訪問控制,防止外部網路用戶以非法手段通過外部網路進入內部網路,訪問內部網路資源,保護內部網路操作環境的特殊網路互聯設備.它對兩個或多個網路之間傳輸的數據包如鏈接方式按照一定的安全策略來實施檢查,以決定網路之間的通信是否被允許,並監視網路運行狀態.
防火牆產品主要有堡壘主機,包過濾路由器,應用層網關(代理伺服器)以及電路層網關,屏蔽主機防火牆,雙宿主機等類型.
病毒防護技術
病毒歷來是信息系統安全的主要問題之一。由於網路的廣泛互聯,病毒的傳播途徑和速度大大加快。
將病毒的途徑分為:
(1 ) 通過FTP,電子郵件傳播。
(2) 通過軟盤、光碟、磁帶傳播。
(3) 通過Web游覽傳播,主要是惡意的Java控制項網站。
(4) 通過群件系統傳播。
病毒防護的主要技術如下:
(1) 阻止病毒的傳播。
在防火牆、代理伺服器、SMTP伺服器、網路伺服器、群件伺服器上安裝病毒過濾軟體。在桌面PC安裝病毒監控軟體。
(2) 檢查和清除病毒。
使用防病毒軟體檢查和清除病毒。
(3) 病毒資料庫的升級。
病毒資料庫應不斷更新,並下發到桌面系統。
(4) 在防火牆、代理伺服器及PC上安裝Java及ActiveX控制掃描軟體,禁止未經許可的控制項下載和安裝。入侵檢測技術利用防火牆技術,經過仔細的配置,通常能夠在內外網之間提供安全的網路保護,降低了網路安全風險。但是,僅僅使用防火牆、網路安全還遠遠不夠:
(1) 入侵者可尋找防火牆背後可能敞開的後門。
(2) 入侵者可能就在防火牆內。
(3) 由於性能的限制,防火牆通常不能提供實時的入侵檢測能力。入侵檢測系統是近年出現的新型網路安全技術,目的是提供實時的入侵檢測及採取相應的防護手段,如記錄證據用於跟蹤和恢復、斷開網路連接等。
實時入侵檢測能力之所以重要首先它能夠對付來自內部網路的攻擊,其次它能夠縮短hacker入侵的時間。
入侵檢測系統可分為兩類:基於主機和基於網路的入侵檢測系統。安全掃描技術
網路安全技術中,另一類重要技術為安全掃描技術。安全掃描技術與防火牆、安全監控系統互相配合能夠提供很高安全性的網路。
安全掃描工具通常也分為基於伺服器和基於網路的掃描器。
認證和數字簽名技術
認證技術主要解決網路通訊過程中通訊雙方的身份認可,數字簽名作為身份認證技術中的一種具體技術,同時數字簽名還可用於通信過程中的不可抵賴要求的實現。VPN技術1、企業對VPN 技術的需求
企業總部和各分支機構之間採用internet網路進行連接,由於internet是公用網路,因此,必須保證其安全性。我們將利用公共網路實現的私用網路稱為虛擬私用網(VPN)。
2、數字簽名
數字簽名作為驗證發送者身份和消息完整性的根據。公共密鑰系統(如RSA)基於私有/公共密鑰對,作為驗證發送者身份和消息完整性的根據。CA使用私有密鑰計算其數字簽名,利用CA提供的公共密鑰,任何人均可驗證簽名的真實性。偽造數字簽名從計算能力上是不可行的。
3、IPSEC
IPSec作為在IP v4及IP v6上的加密通訊框架,已為大多數廠商所支持,預計在1998年將確定為IETF標准,是VPN實現的Internet標准。
IPSec主要提供IP網路層上的加密通訊能力。該標准為每個IP包增加了新的包頭格式,Authentication
Header(AH)及encapsualting security
payload(ESP)。IPsec使用ISAKMP/Oakley及SKIP進行密鑰交換、管理及加密通訊協商(Security
Association)。