【ARTS】01_01_左耳聽風-20181112~1116

每週至少作一個 leetcode 的算法題、閱讀並點評至少一篇英文技術文章、學習至少一個技術技巧、分享一篇有觀點和思考的技術文章。(也就是 Algorithm、Review、Tip、Share 簡稱ARTS)html

Algorithm

作一個 leetcode 的算法題面試

771. Jewels and Stones

1)problem

https://leetcode.com/problems/jewels-and-stones/算法

ou're given strings J representing the types of stones that are jewels, and S representing the stones you have. Each character in S is a type of stone you have. You want to know how many of the stones you have are also jewels.sql

The letters in J are guaranteed distinct, and all characters in J and S are letters. Letters are case sensitive, so "a" is considered a different type of stone from "A".windows

Example 1:api

Input: J = "aA", S = "aAAbbbb"
Output: 3

Example 2:安全

Input: J = "z", S = "ZZ"
Output: 0

Note:網絡

  • S and J will consist of letters and have length at most 50.
  • The characters in J are distinct.

2)answer

設定一個數字變量,判斷單個字符是否在一個字符串中。使用雙重for循環進行判斷,若是相同就將數字變量加1,不然就跳過。最後返回數字變量的值就是手中寶石的數量。tcp

3)solution

#include<stdio.h>
#include <string>
using std::string;

class Solution {
public:
    int numJewelsInStones(string J, string S) {
        int num = 0;
        for (auto J_value : J)
        {
            for (auto S_value : S)
            {
                if (J_value==S_value)
                {
                    num++;
                }
            }
        }

        return num;
    }
};


int main() 
{
    Solution solu;
    int ret;
    ret  = solu.numJewelsInStones("aA", "aAAbbbb");
    printf("%d \n", ret);
    ret = solu.numJewelsInStones("z", "ZZ");
    printf("%d \n", ret);
    return 0;
}

Review

本週閱讀的英文技術文章ide

利用BurpSuite到SQLMap批量測試SQL注入

https://www.exploit-db.com/docs/english/45428-bulk-sql-injection-using-burp-to-sqlmap.pdf

1)場景

測試大門戶的SQL注入漏洞

2)問題難點

SQLMap只能對URL單一測試

3)解決問題的方法

經過Python腳本把Burp的HTTP請求提取出來交給SQLMap批量測試,提高找大門戶網站SQL注入點的效率。

4)方法細節

文章裏提到的方法是提取出來Brup對HTTP的請求,但只能是手動對網站訪問後Burp的歷史紀錄。若是是GET請求倒還好,若是是POST並且是僞靜態類型,參數就檢測不出來了。在burp的target選項卡也有掃描URL的,能夠用Burp自帶的爬蟲方法爬行一遍以後再提取出URI進行測試。

5)總結

除此方法外,也可使用burp的插件實現批量測試的效果。

滲透神器合體:在BurpSuite中集成Sqlmap
https://www.freebuf.com/sectool/45239.html

Tip

安全分析-MuddyWater

  • 英文原文

MuddyWater expands operations
https://securelist.com/muddywater/88059/

  • 譯文

詳細分析MuddyWater APT組織新型攻擊技術
https://www.anquanke.com/post/id/161789

1)場景

監測到大量的魚叉式網絡釣魚郵件

2)問題難點

經過宏的方式運行VBA代碼,而後投放創建C&C通訊的PowerShell代碼,向C&C發送被感染用戶系統信息,而後接收惡意軟件支持的命令。

3)惡意代碼分析

啓用宏的Office 97-2003 Word文件,爲了防止靜態分析,該宏受密碼保護。

一、宏投放INF、SCR和文本文件
二、宏投放VBS和文本文件

4)方法細節

  • 宏Payload分析

通過Base64編碼後的宏Payload,執行如下操做:

一、將2-3個文件放入ProgramData文件夾。Payload會將文件放置到ProgramData文件夾的根目錄或子目錄中,這些文件的文件名根據惡意軟件不一樣版本而變化。

EventManager.dll
EventManager.logs
WindowsDefenderService.inil

二、在當前用戶的RUN密鑰(HKCU)中添加一個註冊表項,以便在用戶下次登陸時可以運行。在某些狀況下,宏會當即生成惡意Payload或惡意進程,而無需等待用戶的下次登陸。註冊表項中的可執行文件名稱會根據不一樣版本而變化。

名稱:WindowsDefenderUpdater
類型:REG_EXPAND_SZ
內容:c:\windows\system32\rundll32.exe advpack.dll,LaunchINFSection C:\ProgramData\EventManager.logs,Defender,1,

在用戶下次登陸時,投放的Payload將會運行。所選的可執行文件專門用於繞過白名單解決方案,由於這些文件所有來自Microsoft,極可能已經在白名單之中。這些文件的類型多是INF、SCT和文本文件(3個文件的狀況),也多是VBS和文本文件(2個文件的狀況)。

  • 宏投放INF、SCR和文本文件
一、INF經過advpack.dll的LaunchINFSection函數啓動;
二、INF經過scrobj.dll(Microsoft Scriptlet庫)註冊SCT文件;
三、藉助WMI(winmgmt),SCT文件中的JavaScript或VBScript代碼會生成只有一行的PowerShell程序,最終造成文本文件。
  • 宏投放VBS和文本文件

VBS文件首先將自身進行解碼,隨後調用mshta.exe,將只有一行的VBScript代碼傳遞給它,以後生成一個PowerShell單行程序,最終造成文本文件(一般是通過Base64編碼後的文本)。

  • 惡意PowerShell代碼分析

讀取在ProgramData中投放的(通過編碼的)文本文件,而後對其進行解碼,所生成的代碼具備多層混淆。
檢查系統正在運行的進程。若是找到,就會強制重啓計算機。列表中的進程名稱一般都與研究人員使用的各種工具相關。

「win32_remote「,」win64_remote64「,」ollydbg「,」ProcessHacker「,」tcpview「,」autoruns「,」autorunsc「,」filemon「,」procmon「,」regmon「,」procexp「,」idaq「,」idaq64「,」ImmunityDebugger「,」Wireshark「,」dumpcap「,」HookExplorer「,」ImportREC「,」PETools「,」LordPE「,」dumpcap「,」SysInspector「,」proc_analyzer「,」sysAnalyzer「,」sniff_hit「,」windbg「,」joeboxcontrol「,」joeboxserver「
  • C&C通訊

經過 https://api.ipify.org/ 網站來獲取被感染用戶的公網IP

  • 攻擊者溯源

MuddyWater使用的PowerShell代碼進行反混淆後,該代碼相似於此前發現的惡意PowerShell腳本。攻擊所使用的多個文檔中,還帶有嵌入的路徑,其中包含做者的主機用戶名稱。這些路徑在特定狀況下會由Office嵌入到文檔中,例如在將二進制對象(OLE控件,例如文本框或命令按鈕)添加到Word文檔中,就會附帶其路徑。這些路徑具體以下:

C:\Users\leo\AppData\Local\Temp\Word8.0\MSForms.exd
 C:\Users\poopak\AppData\Local\Temp\Word8.0\MSForms.exd
 C:\Users\Vendetta\AppData\Local\Temp\Word8.0\MSForms.exd
 C:\Users\Turk\AppData\Local\Temp\Word8.0\MSForms.exd

5)總結

MuddyWater樣本的來源是郵件系統,經過對office類樣本分析獲得宏代碼執行後的行爲,獲取文件生成的路徑、用戶名稱、反調試方式、代碼類似度、CC通訊指令。對攻擊者來源、行爲猜想。

Share

在乙方學會的東西是要真切落實到實際的場景中,纔算是有效的學習。工做了幾年,不少基礎知識怎麼學習,怎麼出成果,已經掌握了思路。可是僅僅是廣度達到。不少方法論適用於固定動做的安全檢查,可是落實到實際仍是有問題。

讀文《淺談大型互聯網的企業入侵檢測及防禦策略》

1)場景

忽然以爲很迷茫,不知道本身5年後該成爲哪樣的人。因爲本身以前從滲透測試換了二進制的方向,大城市的就業機會雖然多。可是面試的崗位職能都不同,

2)問題難點

次選擇工做的時候,同一個名稱的安全崗位職責和需求能力都不同。甲方公司重視開發能力、創業公司重視綜合能力、還有一些公司重視知識的廣度和深度。

本身從滲透->測評->惡意代碼分析三個階段都經歷了一遍,從技術、文檔到分析。不知道本身該選怎樣的方向進行職業規劃。

3)解決思路

找了前輩進行交流,尋求意見。其中印象比較深的兩個前輩說的。

乙方學到的東西,都須要甲方兌現,在能夠選擇的前提下,選擇最大的平臺,作點成績出來。

篩選崗位最重要的三個級別,一是熟練級別,工做能夠作。而後在某個領域進行積累,發表過具備影響力和深度的paper。最後是在某些重要的會議發表過議題演講。

4)方法細節

最近一段時間夢醒就是思考怎樣打造本身的競爭力。把經驗積累。

安全領域發展多年,不少測試方法都經過逐漸的發展變成了工具化、平臺化。

安全檢查根據網絡設備品牌型號、主機的經常使用命令。總結起來成了基線檢查工具

安全測試根據應用系統的漏洞和特徵成了漏洞掃描工具。

基於「攻防對抗」的考量,從防守方對於安全運營會有很高的要求。

經過美團技術團隊的分享文中感覺到做者這些年工做積累的經驗和成績感到本身要走的路還有很長。

《淺談大型互聯網的企業入侵檢測及防禦策略》

http://netsecurity.51cto.com/art/201811/586498.htm?mobile

針對企業的入侵檢測、常見的入侵手法應對、入侵檢測的原則、產品主流形態、效果評價指標和關鍵要素進行了梳理。其中如何發現APT的方式部分結合目前的工做形態也確實如此。

  • 針對企業的入侵檢測

入侵檢測能夠重點關注GetShell這個動做,以及GetShell成功以後的惡意行爲。

  • 常見入侵手法與應對

高危服務入侵: 針對每個高危服務作入侵檢測的成本較高,由於高危服務的具體所指很是的多,不必定存在通用的特徵。因此,經過加固方式,收斂攻擊入口性價比更高。禁止全部高危端口對互聯網開放可能,這樣可以減小90%以上的入侵機率。

WEB入侵:
針對Web服務的入侵痕跡檢測,能夠考慮採集WAF日誌、Access Log、Auditd記錄的系統調用,或者Shell指令,以及網絡層面Response相關的數據,提煉出被攻擊成功的特徵。

0day入侵:
把精力聚焦在有黑客GetShell入口和以後的行爲上,可能比關注漏洞入口更有價值。固然,具體的漏洞利用仍是要實際跟進,而後驗證其行爲是否符合預期。

辦公終端入侵:
EDR類的產品+郵件安全網關+辦公網出口的行爲審計+APT產品的沙箱等,聯合起來,能夠採集到對應的數據,並做出類似的入侵檢測感知模型。

  • 入侵檢測基本原則

某個單點的檢測能力有缺失時,若是爲了「政治正確」,在這個單點上進行無止境的投入,試圖把單點作到100%能發現的能力,不少時候可能只是在試圖製造一個「永動機」,純粹浪費人力、資源,而不產生實際的收益。將節省下來的資源,高性價比的佈置更多的縱深防護鏈條,效果顯然會更好。

  • 入侵檢測產品的主流形態

基於數據去建模,好比針對WebShell的檢測,首先要識別Web目錄,再對Web目錄下的文件進行文本分析,這須要作一個採集器。基於Shell命令的入侵檢測模型,須要獲取全部Shell命令,這可能要Hook系統調用或者劫持Shell。基於網絡IP信譽、流量payload進行檢測,或者基於郵件網關對內容的檢查,可能要植入網絡邊界中,對流量進行旁路採集。

我的理解是基於WEB日誌、系統日誌、流量日誌進行檢測。

  • 入侵檢測效果評價指標

主動發現的入侵案例/全部入侵 = 主動發現率。這個指標必定是最直觀的。

真實的入侵實際上是一個低頻行爲,大型的互聯網企業若是一年到頭成百上千的被入侵,確定也不正常。所以,若是好久沒出現真實入侵案例,這個指標長期不變化,也沒法刻畫入侵檢測能力是否在提高。

因此,咱們通常還會引入兩個指標來觀測:

- 藍軍對抗主動發現率
- 已知場景覆蓋率
  • 影響入侵檢測的關鍵要素

要讓一個入侵事件被捕獲,咱們須要入侵檢測系統長時間、高質量、高可用的運行。

- 數據採集的完整性(全鏈路的對帳)。
- 每個策略時刻工做正常(自動化撥測監控)。
- 基礎數據的準確性。
- 工單運營支撐平臺及追溯輔助工具的便捷性。
  • 如何發現APT
- 木馬免殺的,用沙箱+人工分析,哪怕效率低一些,仍是試圖作出定性,並快速的把IOC(威脅情報)同步給其它客戶,發現1例,全球客戶都具有一樣的感知能力。
- 流量加密變形對抗的,用異常檢測的模型,把一些不認識的可疑的IP關係、payload給識別出來。固然,識別出來以後,也要運營人員跟進得仔細,才能定性。
- 攻擊手法高級的,仍是會假定黑客就用魚叉、水坑之類的已知手法去執行,而後在郵箱附件、PC終端等環節採集日誌,對用戶行爲進行分析,UEBA試圖尋找出用戶異於日常的動做。
  • AI在入侵檢測領域的正確姿式

針對一個具體的攻擊場景,怎麼樣採集對應的入侵數據,思考這個入侵動做和正常行爲的區別,這個特徵的提取過程,每每決定了模型最終的效果。特徵決定了效果的上限,而算法模型只能決定了有多接近這個上限。

5)總結

進甲方想法:這幾天拜讀了職業欠錢的《淺談大型互聯網企業入侵檢測及防禦策略》。

在乙方學到的東西,在甲方兌現,在能夠選擇的前提下,選擇最大的平臺,纔有可能作出成績。

研究方向:現目前區塊鏈的研究與傳統安全仍是類似。能夠往漏洞分析方向發展,不過單純的漏洞分析和審計能給企業帶來什麼價值,還有待思考。

相關文章
相關標籤/搜索