# NTUSTISC - AD Note - 環境建置 & Background [TOC] Lecture Video: [2022/05/04 AD 安全1](https://youtu.be/Cv2gNQkDM8Q?si=SycYwgWohlu97dc3) ## Background * What is Directory Service?[^fei-directory-service] >  > Windows Server 系統使用的目錄服務 就是 Active Directory * What is Active Directory(AD)?[^wiki-Active-Directory] > Windows的Windows Server中,負責架構中大型網路環境的集中式目錄管理服務(Directory Services),他處理在組織中的網路物件,物件可以是<font color="FF0000">使用者、群組、電腦、網域控制站、郵件、設定檔、組織單元、樹系</font>等等,只要是在AD結構定義檔(Schema)中定義的物件,就可以儲存在AD資料檔中,並利用AD Service Interface來存取 * What is Domain Service?[^fei-directory-service] >  > 執行 AD DS 的伺服器稱為 domain controllers (DCs) * What is LDAP?[^aws-what-is-ldaps] :::info > 輕量型目錄存取協定 (LDAP) 是用來從 Active Directory 讀取資料,及將資料寫入 Active Directory 的標準協定。某些應用程式使用 LDAP 新增、移除或搜尋 Active Directory 中的使用者和群組,或是傳輸登入資料來驗證 Active Directory 中的使用者。每個 LDAP 通訊都包括用戶端 (如應用程式) 和伺服器 (例如 Active Directory)。 ::: * What is Organization Units(OU)?[^fei-organization-units] > 容區(Container):屬性集合,跟物件不同是容器可以包含多個「物件」 > 組織單位(Organization Units):特殊容區,可包含其他物件、組織單位、群組原則 * What is Group Policy Object(GPO)?[^upas1030-gpo] > 群組原則是透過群組原則物件(Group Policy Object,GPO)來設定,你要只要將GPO連結到指定的網域,此GPO內的設定值就會影響到該網域內的所有使用者與電腦。 > ### 內建GPO > AD DS網域有兩個內建的GPO > 1. Default Domain Policy:此GPO預設已備連結到網域,因此其設定值會套用到整個網域內的所有使用者與電腦。 > 2. Default Domain Controller Policy:此GPO預設已被連到組織單位Domain Controllers,因此其設定值會被套用到Domain Controllers內所有的使用者與電腦 > (Domain Controllers 內預設只有網域控制站的電腦帳戶。) ## 環境建置 :::info 這一整個lab雖然是從講師的drive下載下來的(連結爛掉了,有需要可以跟我拿),但還是可以從網路中自己創一個有這麼多漏洞的lab環境。可以先安裝win2016的虛擬機,然後到[WazeHell/vulnerable-AD](https://github.com/WazeHell/vulnerable-AD)下載script,在該環境中跑起來,就可以了,不果因為跑完之後的所有帳號或密碼都是隨機的,所以如果要看別人或是後續我寫的WP會有點困難 ::: ### 實驗環境拓樸  ### 帳號密碼 * Win10(Client) 帳號:administrator 密碼:1qaz@WSX3edc * 一般的網域帳號 帳號:bear 密碼:1qaz@WSX3edc * 低權限帳號 帳號:low 密碼:<無> * Win2016(DC) 帳號:administrator 密碼:1qaz@WSX3edc * ==Note== :::info 如果要指定本機端的帳戶進行登入,可以在帳號前面加入`.\`的符號或是直接寫主機名稱,強制用本地端的帳號登入,這個帳戶就是沒有加入AD domain底下 ::: ### 詳細步驟 1. 把講師提供的兩支VM(win10/win2016)灌起來並自行下載[kali2022](https://old.kali.org/kali-images/kali-2022.4/),==建議用VMware== 2. 啟用Neo4j & BloodHound 因為環境目前預設的JDK version是1.8,所以如果啟用後續會用到的Neo4j會出問題,所以我們要先改java版本,改成JDK-11,比較詳細的流程可以參考[^neo4j-java-error] 1. Uninstall JDK-1.8 2. Download JDK-11 & Install it([Link](https://www.oracle.com/tw/java/technologies/javase/jdk11-archive-downloads.html)) * 下載之前會需要你登入Oracle帳號 * 如果想要知道哪一個版本的JAVA對應到哪一個版本的Neo4j,可以從這邊[^neo4j-java]找,照法就是在網址的地方中間有一個neo4j的版本,打上你的neo4j版本,他就會到對應的頁面告訴你JAVA的版本應該是多少,例如我的版本是4.3,就打上`https://neo4j.com/docs/operations-manual/4.3/installation/requirements/`,不過他也只有分3.x和4.x  3. Modify Environment Variable * 更改環境變數這件事情一定要在Win10加入AD之前做的原因是,只要加入AD就無法改變環境變數的系統變數(如下圖),那我有想過把Win10直接退掉AD的網域,不過過程困難重重,所以我想還是直接開一個新的Win10從頭來會比要快,而且加入AD後還不能連網,畢竟DNS都被改掉了,會很不方便  * 首先要在系統變數的地方新增JAVA_HOME然後value就是當初安裝JDK-11的位置  * 並在Path中新增`%JAVA_HOME%\bin`和`<JDK-11 path to bin>`並按下確定後到Command Prompt確認有沒有成功   4. Activate Neo4j 在neo4j的目錄中進到bin,然後打開cmd,輸入`$ neo4j.bat console`,理論上前面有做對,應該就會開啟Neo4j的服務 :::spoiler Activate Neo4j Log ```bash C:\tools\neo4j-community-4.3.4\bin>neo4j.bat console Directories in use: home: C:\tools\neo4j-community-4.3.4 config: C:\tools\neo4j-community-4.3.4\conf logs: C:\tools\neo4j-community-4.3.4\logs plugins: C:\tools\neo4j-community-4.3.4\plugins import: C:\tools\neo4j-community-4.3.4\import data: C:\tools\neo4j-community-4.3.4\data certificates: C:\tools\neo4j-community-4.3.4\certificates licenses: C:\tools\neo4j-community-4.3.4\licenses run: C:\tools\neo4j-community-4.3.4\run Starting Neo4j. 2023-08-27 03:48:08.068+0000 INFO Starting... 2023-08-27 03:48:10.649+0000 INFO ======== Neo4j 4.3.4 ======== 2023-08-27 03:48:12.832+0000 INFO Initializing system graph model for component 'security-users' with version -1 and status UNINITIALIZED 2023-08-27 03:48:12.848+0000 INFO Setting up initial user from defaults: neo4j 2023-08-27 03:48:12.848+0000 INFO Creating new user 'neo4j' (passwordChangeRequired=true, suspended=false) 2023-08-27 03:48:12.870+0000 INFO Setting version for 'security-users' to 3 2023-08-27 03:48:12.870+0000 INFO After initialization of system graph model component 'security-users' have version 3 and status CURRENT 2023-08-27 03:48:12.870+0000 INFO Performing postInitialization step for component 'security-users' with version 3 and status CURRENT 2023-08-27 03:48:13.274+0000 INFO Bolt enabled on 127.0.0.1:7687. 2023-08-27 03:48:14.472+0000 INFO Remote interface available at http://localhost:7474/ 2023-08-27 03:48:14.472+0000 INFO Started. 2023-08-27 03:51:44.289+0000 WARN The client is unauthorized due to authentication failure. ``` ::: 接著進到`http://localhost:7474/`,輸入預設帳密`neo4j/neo4j`,最後改密碼就好了  5. Activate BloodHound 進到BloodHound/bin目錄然後執行`BloodHound.exe`輸入neo4j的帳密,就可以進到一個全新的bloodhound頁面  3. 把Win10加入AD 1. Check Win2016 IP - `192.168.183.129`  2. 將Win10的DNS指向AD 主要目的就是把Win10網卡的DNS指向前面找到的Domain,在`設定/網路和網際網路/狀態/變更介面卡選項/乙太網路/內容/網際網路通訊協定第4版(TCP/IPV4)/內容`就可以找到更改的地方,然後把Win2016的IP填入  3. 更改Win10網域 從`控制台/系統及安全性/系統/變更設定/變更`中更改網域成<font color="ff0000">`kuma.org`</font>,填入帳密按確定就可以了  4. Restart Win10 5. 使用網域帳號登入 用bear這個帳號登入Win10 :::spoiler Result  可以看到系統資訊中,網域的部分已經變成kuma.org ::: ## Reference [^fei-directory-service]:[AD Security - [Day2] 一起來學 AD 安全吧!:什麼是 AD(1) ](https://ithelp.ithome.com.tw/articles/10292831) [^wiki-Active-Directory]:[Active Directory](https://zh.wikipedia.org/zh-tw/Active_Directory) [^aws-what-is-ldaps]:[啟用安全 LDAP (LDAPS)](https://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/ms_ad_ldap.html) [^fei-organization-units][AD Security - [Day5] 一起來學 AD 安全吧!:什麼是 AD(3) Container & OU & Security Group ](https://ithelp.ithome.com.tw/articles/10295116) [^upas1030-gpo]:[GPO概念](https://upas1030.pixnet.net/blog/post/116192137) [^neo4j-java]:[ System requirements ](https://neo4j.com/docs/operations-manual/4.0/installation/requirements/) [^neo4j-java-error]:[當安裝Neo4j後,在cmd中輸入neo4j遇到(ERROR!Neo4j cannot be started using java version 1.8.0_211](https://blog.csdn.net/Linsice/article/details/129748823)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.