網絡安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。
目錄
?快手[實習]安全工程師
一面問題分析與詳細回答
1. 自我介紹
4. 項目問題與解決
7. 防止SQL注入(Web API場景)
8. Linux查看進程PID
10. 為什么用MongoDB
12. HTTPS建立過程
13. Python內存管理
16. Python多線程與GIL
17. IP排序代碼題
二面問題擴展解析
3. 攻擊溯源(方法論與案例)
5. Webshell檢測(靜態+動態)
8. 九宮格字母組合(回溯算法)
10. DNS安全威脅與防護
?快手[實習]安全工程師
### 一面 1. 自我介紹2. 問項目3. 針對項目問了很多詳細的問題,不便透露,通用問題如下:4. 做項目的時候有沒有遇到什么問題,怎么解決5. 做項目學到了什么東西6. 項目中有沒有什么地方自己做過優化7. 有沒有對網站做過滲透測試8. Linux操作熟悉嗎,怎么看進程PID9. 用過什么數據庫,答:sqlite,mongodb,面試官好像不太了解沒咋問10. 為什么用mongodb11. 了解ES嗎(Elasticsearch)12. HTTPS建立過程13. python怎么管理內存14. 深拷貝和淺拷貝區別15. python多進程、多線程、協程有用到嗎,都在什么地方用到16. python可以實現真正的多線程嗎17. 代碼題:ip排序1. 寫Web API的時候怎么防止SQL注入2. 怎么防XSS3. 了解越權漏洞么,有沒有挖過越權漏洞4. 有沒有什么比較擅長的我還沒問到的### 二面 1. 問項目2. 項目哪一塊時間花的比較多3. 怎么溯源攻擊4. 舉一個溯源攻擊的例子5. 怎么檢測webshell6. sql注入在mysql和sqlserver中有什么區別7. 想找安全開發的崗位還是安全研究的崗位8. 代碼題:手機九宮格鍵盤,輸入數字,輸出所有的字母組合 如輸入23,輸出[‘ad’,’ae’,’af’,’bd’,’be’,’bf’,’cd’,’ce’,’cf’]9. 講一下DNS協議的作用、解析過程10. DNS協議的安全問題11. 實習時間
一面問題分析與詳細回答
1. 自我介紹
結構化回答(3點核心要素):
- 技術背景:
- 主語言:Python(5年+),熟悉安全開發框架(如Django、Flask)。
- 安全技能:滲透測試(OWASP TOP 10實戰)、漏洞分析(CVE復現經驗)、日志溯源。
- 工具鏈:Burp Suite、Nmap、Wireshark、Metasploit。
- 項目亮點:
- 開發安全監測平臺:集成實時日志分析,識別SQL注入/XSS攻擊,誤報率<5%。
- 自動化滲透工具:支持多線程爬蟲+漏洞POC驗證,效率提升40%。
- 崗位適配性:
- 目標:安全開發崗,結合代碼能力與攻防思維,構建高魯棒性系統。
- 優勢:熟悉DevSecOps流程,具備SDL(安全開發生命周期)實踐經驗。
4. 項目問題與解決
通用回答框架(問題-方案-結果):
- 問題:高并發場景下日志丟失(日均丟失量達20%)。
- 方案:
- 引入Kafka消息隊列,異步處理日志寫入。
- 增加本地緩存層(Redis),網絡異常時暫存日志。
- 結果:丟失率降至0.5%,系統吞吐量提升3倍。
7. 防止SQL注入(Web API場景)
防御措施(4層防護):
- 參數化查詢:
python
# Django ORM示例 User.objects.raw('SELECT * FROM users WHERE name =%s', [request.name])
- 輸入驗證:正則匹配白名單(如郵箱格式
^[a-z0-9]+@[a-z]+\.[a-z]{2,3}$
)。- 權限控制:數據庫賬戶僅授予SELECT/INSERT權限,禁用DROP/ALTER。
- WAF集成:部署ModSecurity,攔截
UNION SELECT
等攻擊模式。
8. Linux查看進程PID
常用命令(3種方式):
ps
命令:bash
ps -ef | grep nginx # 顯示nginx進程的PID、PPID
pgrep
直接定位:bash
pgrep -f "python app.py" # 返回運行app.py 的PID
top
交互界面:按Shift+P
按CPU排序,實時查看PID及資源占用。
10. 為什么用MongoDB
核心優勢(3點):
- 靈活模式:JSON文檔結構適配動態日志格式(如不同攻擊類型的字段差異)。
- 橫向擴展:分片集群支持PB級數據存儲,輕松應對安全日志海量增長。
- 聚合分析:內置
$group
、$bucket
等操作,實現攻擊IP頻次統計等場景。
12. HTTPS建立過程
詳細步驟(6步握手):
- Client Hello:客戶端發送TLS版本、加密套件列表、隨機數A。
- Server Hello:服務端選擇加密套件(如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256),返回隨機數B和證書鏈。
- 證書驗證:客戶端驗證證書有效性(CA簽名、有效期、域名匹配)。
- 密鑰交換:
- 客戶端生成隨機數C,用服務端公鑰加密發送。
- 雙方通過ECDHE算法生成會話密鑰。
- Finished報文:雙方用密鑰加密驗證消息完整性。
- 加密通信:后續數據通過AES-GCM對稱加密傳輸。
補充協議:HSTS頭(Strict-Transport-Security
)強制HTTPS,防止降級攻擊。
13. Python內存管理
機制與優化(3層設計):
- 引用計數:
- 對象被引用時計數+1,歸零時立即回收(如
del obj
)。- 循環引用問題:通過
gc.collect()
觸發分代回收。- 分代垃圾回收:
- 分代策略:新生成對象在0代,存活時間越久代越高。
- 回收頻率:0代>1代>2代,平衡性能與內存釋放。
- 內存池優化:
- 小整數(-5~256)、短字符串(無特殊字符)預分配復用。
- 使用
__slots__
減少類實例內存占用(替換動態__dict__
)。
16. Python多線程與GIL
真相與應對(3點結論):
- GIL限制:CPython解釋器中,線程執行需獲取全局鎖,導致多線程無法并行執行CPU密集型任務。
- 適用場景:
- I/O密集型:如網絡請求、文件讀寫,線程阻塞時自動釋放GIL。
- 協程優化:
asyncio
+async/await
實現高并發(單線程萬級連接)。- 繞過方案:
- 多進程:
multiprocessing
模塊利用多核CPU。- C擴展:將計算密集型邏輯用C/C++編寫(如NumPy)。
17. IP排序代碼題
Python實現與測試:
python
def ip_sort(ip_list): # 將IP按四段數字升序排列 return sorted(ip_list, key=lambda x: tuple(map(int, x.split('.')))) # 測試用例 ips = ["192.168.1.10", "10.0.24.255", "172.16.0.1"] print(ip_sort(ips)) # 輸出:['10.0.24.255', '172.16.0.1', '192.168.1.10']
關鍵點:字符串直接排序會導致
"192.168.1.2"
排在"192.168.1.10"
之后,轉換為整數元組可避免此問題。
二面問題擴展解析
3. 攻擊溯源(方法論與案例)
技術鏈路(4步流程):
- 日志采集:
- Web日志:Nginx/Apache訪問日志提取攻擊IP、User-Agent、Payload(如
/admin.php?id=1' AND 1=1
)。- 系統日志:Linux的
/var/log/auth.log
記錄SSH爆破嘗試。- 關聯分析:
- 時間窗口:定位攻擊時間段內的所有關聯事件。
- 威脅情報:VirusTotal查詢IP歷史行為(如是否代理服務器)。
- 流量取證:
- Wireshark過濾:
tcp.port == 80 && http.request.method == "POST"
捕獲攻擊請求。- Payload解碼:Base64或URL解碼隱藏指令(如
cmd=whoami
)。- 響應處置:
- 短期:防火墻封鎖IP(
iptables -A INPUT -s 1.2.3.4 -j DROP
)。- 長期:修復漏洞(如補丁更新)、增強監控規則。
溯源案例:
在一次Webshell上傳事件中,通過以下步驟追蹤:
- 分析Web日志發現異常文件
upload.php
在非工作時間被訪問。- 關聯系統日志,發現同一時間點新增可疑用戶
backdoor
。- 提取文件哈希(MD5)在VirusTotal匹配到已知Webshell家族(如China Chopper)。
- 反向查詢關聯IP,發現其屬于某VPS提供商,上報威脅情報平臺。
5. Webshell檢測(靜態+動態)
檢測技術(5種手段):
類型 方法 工具示例 靜態檢測 特征碼匹配 YARA規則(匹配 eval($_POST['cmd'])
)熵值分析 檢測文件熵值異常(高混淆代碼) 動態檢測 行為監控 OSSEC監控文件創建/刪除行為 流量分析 Suricata檢測異常HTTP請求(長連接、加密載荷) 沙箱檢測 動態執行 Cuckoo Sandbox分析文件行為(進程樹、網絡連接) 防御建議:
- 文件上傳限制:僅允許特定后綴(如
.jpg
)、校驗MIME類型。- 定期掃描:ClamAV定時全盤掃描,配合人工復核。
8. 九宮格字母組合(回溯算法)
代碼與優化:
python
def letter_combinations(digits): if not digits: return [] mapping = { '2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz' } res = [] def backtrack(index, path): if index == len(digits): res.append(''.join(path)) return for char in mapping[digits[index]]: path.append(char) backtrack(index + 1, path) path.pop() backtrack(0, []) return res
復雜度分析:
- 時間:O(3^N *4^M),N為輸入中對應3字母的數字數(如2、3),M為對應4字母的數字數(如7、9)。
- 空間:O(N+M)遞歸棧深度,結果列表空間O(3^N *4^M)。
10. DNS安全威脅與防護
攻擊類型與防御(3類重點):
- DNS劫持:
- 手法:篡改路由器或ISP的DNS響應。
- 防護:啟用DNSSEC(通過RRSIG記錄驗證數據完整性)。
- 緩存投毒:
- 手法:偽造DNS響應污染遞歸服務器緩存。
- 防護:隨機化查詢ID和源端口(增加攻擊難度)。
- DDoS攻擊:
- 手法:洪水攻擊DNS服務器(如UDP反射放大攻擊)。
- 防護:部署Anycast網絡分散流量,啟用速率限制。
協議演進:
- DoH(DNS over HTTPS):加密DNS查詢,防止運營商監聽。
- DoT(DNS over TLS):使用TLS層加密,端口853。