<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>linux Arsip - Bhineka blog</title>
	<atom:link href="https://blog.bhineka-tech.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.bhineka-tech.org/category/linux/</link>
	<description></description>
	<lastBuildDate>Wed, 08 Jan 2025 03:18:40 +0000</lastBuildDate>
	<language>id</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://blog.bhineka-tech.org/wp-content/uploads/2024/10/logo-bintek-min.jpg</url>
	<title>linux Arsip - Bhineka blog</title>
	<link>https://blog.bhineka-tech.org/category/linux/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Bhitech Pentesting + Container Escape</title>
		<link>https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/</link>
					<comments>https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 14:07:23 +0000</pubDate>
				<category><![CDATA[Capture The Flag]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[web exploitation]]></category>
		<category><![CDATA[web pentesting]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=463</guid>

					<description><![CDATA[<p>Halo semuanyaa jumpa lagi denganku, jadi pada kesempatan kali ini aku akan membahas WriteUp dari challenge Bhineka Tech mengenai pentesting dan kebetulan tulisan ini dibuat di akhir tahun jadi sekalian sebagai penutup dan juga selamat nataru bagi yang merayakan semoga di tahun 2025 nanti kita menjadi pribadi yang lebih baik lagi dari sebelumnya. Jadi tanpa [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/">Bhitech Pentesting + Container Escape</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Halo semuanyaa jumpa lagi denganku, jadi pada kesempatan kali ini aku akan membahas WriteUp dari challenge Bhineka Tech mengenai pentesting dan kebetulan tulisan ini dibuat di akhir tahun jadi sekalian sebagai penutup dan juga selamat nataru bagi yang merayakan semoga di tahun 2025 nanti kita menjadi pribadi yang lebih baik lagi dari sebelumnya.</p>



<p>Jadi tanpa berlama lama langsung saja kita baca deskripsi dari challenge </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-e375aeea2e5053ee436f601353fccc0c"><code>Pentesting Challenge

host: &#91;redacted]
level: bisa dibilang easy
format flag: bhitech{}

Description:
Kamu diberikan suatu alamat IP address dan kamu ditugaskan untuk melakukan penetration testing dan hacking pada server, yang dimana hasil akhirnya mendapatkan suatu flag yang disimpan pada directory /root.
jadi pada challenge ini kita dipaksa untuk memahami hacking anatomy atau phase dari hacking mulai dari recon(mengumpulkan informasi), privilege escalation untuk mendapatkan root akses hingga covering track yang tentunya kamu bakal banyak belajar dari challenge ini

note:
untuk teman teman yang mengerjakan challenge ini dimohon tidak merusak apapun pada server karena memang sengaja dibuat vulnerable, meskipun berjalan pada safe environtment tetap saja merusak server yang dibuat challenge tidak ada bedanya kalian dengan para script kiddies diluar sana</code></pre>



<p>Dari deskripsi yang kita baca, diberikan suatu IP address dan format flag yang dimana kita diharuskan untuk melakukan penetration testing pada server hingga mendapatkan akses root atau melakukan privilege escalation karena flag disimpan pada directory /root</p>



<p>Mulai dengan reconnaissance yakni teknik yang digunakan attacker untuk mengumpulkan informasi tentang target yang akan di serang. Langsung saja menggunakan nmap untuk port discovery</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="489" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-1024x489.png" alt="" class="wp-image-465" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-1024x489.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-300x143.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-768x367.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601.png 1345w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini menarik karena ada beberapa port yang terbuka atau service yang running diantaranya ada <strong>HTTP</strong>, <strong>SSH </strong>dan <strong>DBMS</strong> yang menggunakan <strong>postgresql </strong>dan untuk identifikasi awal kita akan melakukan scanning pada service <strong>HTTP</strong> </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="472" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-1024x472.png" alt="" class="wp-image-466" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-1024x472.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-300x138.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-768x354.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-1536x708.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832.png 1905w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jika kita buka pada browser, tampilan awal pada website tidak asing yang merupakan default page dari framework codeigniter 4 yang dimodifikasi sedikit dan disini kita akan melakukan directory enumeration yang bertujuan untuk menemukan hidden directory ataupun file yang ada pada server</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="661" height="581" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173230.png" alt="" class="wp-image-467" style="width:836px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173230.png 661w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173230-300x264.png 300w" sizes="(max-width: 661px) 100vw, 661px" /></figure>



<p>Menggunakan dirsearch dan menemukan file yang menarik yaitu .env, .env sendiri merupakan file yang berisi konfigurasi utama dan sensitive information pada framework codeigniter 4 yang seharusnya tidak boleh diakses tetapi jika developer melakukan misconfiguration hal ini mengakibatkan file .env dapat diakses yang dimana kerentan ini dikenal dengan <em><strong>Information Disclosure</strong></em></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="645" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-1024x645.png" alt="" class="wp-image-468" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-1024x645.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-300x189.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-768x484.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847.png 1026w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Kita mendapatkan credential database server dari .env file dan seperti yang kita tahu sebelumnya dari nmap scanning jika port 5432 terbuka atau di expose ke public. karena dbms pada server memakai <strong><em>postgresql</em></strong> jadi disini kita akan memakai psql client untuk connect dan melakukan remote database via CLI(command line interface)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="549" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-1024x549.png" alt="" class="wp-image-471" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-1024x549.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-300x161.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-768x412.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql.png 1128w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terlihat kita berhasil login dan masuk pada database <em><strong>db_project</strong></em> dimana terdapat table secret yang menarik perhatian  </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="69" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-1024x69.png" alt="" class="wp-image-472" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-1024x69.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-300x20.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-768x52.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745.png 1209w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>kemudian menggunakan SQL query yaitu <em><strong>SELECT * FROM secret</strong></em> untuk menampilkan semua data pada table secret, yang sepertinya berisi suatu encrypted text dan terdapat keterangan pada field type_enc dan description yang intinya untuk mendapatkan plaintext kita harus melakukan decrypting dengan type cipher rc4. </p>



<p>langsung saja buat script python sederhana menggunakan module <em><strong>PyCryptodome </strong></em>yang merupakan package pada python yang menangani operasi cryptography atau bisa juga kita memakai openssl sebagai alternatif </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-d871588a075d003b32b22ef760a132d2"><code>from Crypto.Cipher import ARC4
import base64

username_enc = base64.b64decode(b"iayFvJMqnA==")
password_enc = base64.b64decode(b"iraP/Kkgh69PNS33dCW/LsrchsUZ8w==")
path_enc = base64.b64decode(b"xLaJpZMklpVbbzDNcjm5KOzNlsEf8w0=")

key = bytes.fromhex("737db1fbe47e92be8897a0bc4a1afa39")
cipher = ARC4.new(key)
username_dec = cipher.decrypt(username_enc)
cipher = ARC4.new(key)
password_dec = cipher.decrypt(password_enc)
cipher = ARC4.new(key)
path_dec = cipher.decrypt(path_enc)

# Hasil decrypting
print("username : " + username_dec.decode('utf-8'))
print("password : " + password_dec.decode('utf-8'))
print("path_dec : " + path_dec.decode('utf-8'))</code></pre>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="437" height="122" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181650.png" alt="" class="wp-image-473" style="width:837px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181650.png 437w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181650-300x84.png 300w" sizes="auto, (max-width: 437px) 100vw, 437px" /></figure>



<p>Disini kita berhasil melakukan decrypt dari ciphertext yang kita dapatkan dan jika kita lihat terdapat field table dengan nama <em><strong>path_dec</strong></em> yang bisa kita asumsikan merupakan suatu hidden directory pada web application</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="362" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-1024x362.png" alt="" class="wp-image-474" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-1024x362.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-300x106.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-768x272.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-1536x543.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910.png 1725w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>benar saja jika kita buka dengan menyertakan path <strong>/remember/secret_admin/</strong> maka akan muncul HTTP auth, disini kita bisa masukan username dan password hasil dari decrypt rc4</p>



<p>user: <strong>bhitech </strong>dan pass: <strong>arc4_is_fun_encryption</strong></p>



<p>dan jika berhasil terdapat suatu file dengan nama note.txt </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="674" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-1024x674.png" alt="" class="wp-image-475" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-1024x674.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-300x197.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-768x506.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412.png 1434w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sepertinya merupakan file sensitive / confidential karena terdapat deskripsi singkat tentang SSH dengan username <strong>dono </strong>pada port <strong>2222</strong>, yang dibawahnya string acak dan jika kita lihat lebih detail merupakan suatu private key SSH karena diawali dengan string <em><strong>&#8212;&#8211;BEGIN OPENSSH PRIVATE KEY&#8212;&#8211;</strong></em></p>



<p>jadi disini langsung saja simpan file pada local machine dan kita akan mencoba untuk login SSH pada server dengan methode keypair</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="837" height="380" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907.png" alt="" class="wp-image-476" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907.png 837w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907-300x136.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907-768x349.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></figure>



<p>Berhasil login dan mendapatkan user dono dan kemudian disini kita akan mencoba melakukan privilege escalation atau meningkatkan hak akses, dan banyak yang stuck di tahap ini karena beberapa orang fokus ke kernel exploitation dimana langsung melakukan exploit pada kernel dan gagal. padahal sebenarnya kernel exploitation itu sangat tidak disarankan karena dapat membuat machine mengalami kernel panic jika exploit tidak tepat dan alangkah baiknya digunakan untuk opsi terakhir jika tidak ada misconfig atau vulnerable lain pada OS.</p>



<p>Disini untuk automation enumeration bisa make linepeas dan ditemukan beberapa hal yang menarik yang bisa kita manfaatkan untuk privilege escalation yaitu terdapat 2 misconfiguration pada SUID binary dan capabilities</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="207" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-1024x207.png" alt="" class="wp-image-479" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-1024x207.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-300x61.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-768x155.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738.png 1219w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="828" height="370" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl.png" alt="" class="wp-image-481" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl.png 828w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl-300x134.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl-768x343.png 768w" sizes="auto, (max-width: 828px) 100vw, 828px" /></figure>



<p>Disini linepeas melakukan highlight pada binary yang mempunyai kesalahan konfigurasi yaitu pertama <em><strong>SUID </strong></em>binary yang terdapat pada binary <em><strong>find</strong></em> dan kedua binary yang mempunyai capabilities <strong><em>cap_setuid</em></strong></p>



<p>Secara sederhana SUID atau set user id merupakan permission yang memungkinkan user lain melakukan eksekusi dengan privilege owner yang memiliki binary tersebut, dalam kasus ini find dimiliki oleh root jadi kita bisa melakukan eksekusi find menggunakan hak akses root lalu kedua capabilities itu merupakan kemampuan yang dimiliki oleh suatu binary dalam kasus kita perl memiliki capabilities <em><strong>cap_setuid=ep</strong></em> artinya binary <em><strong>perl </strong></em>atau process yang menajalankan <em><strong>perl</strong></em> dapat melakukan penggantian uid ke user lain dan dalam linux uid root mempunyai nomor 0 jadi dengan mudah kita bisa melakukan manipulasi UID ke root</p>



<p>jadi disini aku akan mencontohkan bagaimana melakukan privilege escalation dari keduanya</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1017" height="344" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846.png" alt="" class="wp-image-482" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846.png 1017w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846-300x101.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846-768x260.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Yaps sangat mudah sekali untuk melakukan privilege escalation dimana disini memanfaatkan misconfig dari kedua binary jadi langsung saja kita baca flag pada directory /root</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="737" height="333" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203229.png" alt="" class="wp-image-483" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203229.png 737w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203229-300x136.png 300w" sizes="auto, (max-width: 737px) 100vw, 737px" /></figure>



<p>flag: bhitech{p3ntest1ng_itu_s3ru!}</p>



<p class="has-large-font-size"><strong>Container Escape</strong></p>



<p>Sebenarnya disini kita sudah mendapatkan flag dan challenge berakhir tapi ada tambahan sedikit yaitu kemaren salah satu member Bhineka Tech berhasil melakukan <em><strong>Container Escaping</strong></em> dimana attacker bisa keluar dari container dan mendapatkan akses pada main host hal ini sangat berbahaya karena tujuan dibuatkan suatu container untuk melakukan isolated agar host utama tidak terkena compromised </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="587" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-1024x587.png" alt="" class="wp-image-485" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-1024x587.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-300x172.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-768x440.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852.png 1133w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Singkatnya seperti itu, yang pada dasarnya ini sudah diluar dari scope challenge tapi sangat menarik jika kita bahas. jadi pada challenge ini aku sendiri yang melakukan build dan konfigurasi dimana pada saat running container dari docker aku menambahkan flag &#8211;privileged untuk keperluan hak akses yang sebenarnya hal ini sangat berbahaya karena kita memberi akses penuh ke container dan menghapus semua batasan security default.</p>



<p>Tekniknya sendiri dengan melakukan mounting filesystem pada host utama ke directory /mnt pada container, karena container dijalankan dengan misconfig &#8211;privileged artinya attacker mendapatkan privilege untuk melihat host drive</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="560" height="209" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-204841.png" alt="" class="wp-image-486" style="width:831px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-204841.png 560w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-204841-300x112.png 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p>lsblk untuk melihat block device dan partisi pertama ada di vda1 dengan command <strong><em>mount /dev/vda1 /mnt/filesystem</em></strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="568" height="404" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205124.png" alt="" class="wp-image-487" style="width:839px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205124.png 568w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205124-300x213.png 300w" sizes="auto, (max-width: 568px) 100vw, 568px" /></figure>



<p>Terlihat mount berhasil dilakukan dan kita dapat melihat dan modifikasi filesystem pada main host dimana jika kita ingin melakukan escape dan takeover pada main host tinggal kita tambahkan user baru pada file /mnt/filesystem/etc/passwd, karena ini mount point maka akan berpengaruh pada filesystem di main host</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="552" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-1024x552.png" alt="" class="wp-image-488" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-1024x552.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-300x162.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-768x414.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow.png 1091w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini kita langsung menambahkan user baru pada passwd file dengan username heker dengan UID 0 atau root beserta password yang digenerate menggunakan openssl dengan string <em><strong>heker123</strong></em>, untuk login ke host utama kita perlu tau port ssh yang digunakan dimana pada hasil nmap scan tadi terdapat 2 SSH port yaitu 22 dan 2222 yang bisa kita asumsikan main host menggunakan port 22 untuk SSH login</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="825" height="522" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932.png" alt="" class="wp-image-489" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932.png 825w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932-300x190.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932-768x486.png 768w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>



<p>Viola, kita berhasil melakukan container escape dan mendapatkan akses ke host utama.</p>



<p class="has-large-font-size"><strong>Penutup</strong></p>



<p>challenge ini dibuat dengan tidak memanfaatkan exploit dari CVE/public dimana fokus untuk mendapatkan initial access fokusnya dari misconfiguration jadi untuk yang mengerjakan challenge ini diharapkan untuk lebih memahami attack vector pada saat melakukan pentesting yang dimana misconfiguration itu sangat berbahaya jika dapat dimanfaatkan lebih jauh, dan mungkin itu saja sekian dan selamat tahunn baru semoga bermanfaat <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p><em>&#8220;Jika itu penting bagi Anda, Anda akan menemukan jalan. Jika tidak, Anda akan menemukan alasan.&#8221;</em> &#8211; <strong>Ryan Blair</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/">Bhitech Pentesting + Container Escape</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Implementasi Snort Pada Real Publik Server</title>
		<link>https://blog.bhineka-tech.org/2024/12/26/implementasi-snort-pada-real-publik-server/</link>
					<comments>https://blog.bhineka-tech.org/2024/12/26/implementasi-snort-pada-real-publik-server/#respond</comments>
		
		<dc:creator><![CDATA[cicak]]></dc:creator>
		<pubDate>Thu, 26 Dec 2024 23:45:14 +0000</pubDate>
				<category><![CDATA[blue team]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[intrusion detection system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=447</guid>

					<description><![CDATA[<p>hai semua apa kabarnya 😀 selamat natal dan tahun baru ya bagi yang merayakan :3 pada blog kali ini aku akan membahas snort. Snort adalah sistem deteksi intrusi jaringan Open Source yang diciptakan oleh pendiri Sourcefire dan mantan CTO Martin Roesch. Cisco kini mengembangkan dan mengelola Snort. Sumber: https://en.wikipedia.org/wiki/Snort_(software) Apa itu Snort? Snort disebut sebagai packet [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/26/implementasi-snort-pada-real-publik-server/">Implementasi Snort Pada Real Publik Server</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>hai semua apa kabarnya <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> selamat natal dan tahun baru ya bagi yang merayakan :3</p>



<p>pada blog kali ini aku akan membahas snort. Snort adalah sistem deteksi intrusi jaringan Open Source yang diciptakan oleh pendiri Sourcefire dan mantan CTO Martin Roesch. Cisco kini mengembangkan dan mengelola Snort. Sumber: <em><a href="https://en.wikipedia.org/wiki/Snort_(software)">https://en.wikipedia.org/wiki/Snort_(software)</a></em></p>



<p class="has-large-font-size"><strong>Apa itu Snort?</strong></p>



<p>Snort disebut sebagai packet sniffer yang memantau lalu lintas jaringan, memeriksa setiap paket secara saksama untuk mendeteksi muatan berbahaya atau anomali yang mencurigakan. Sudah lama menjadi yang terdepan di antara alat pencegah dan deteksi intrusi perusahaan, pengguna dapat mengompilasi Snort di sebagian besar sistem operasi (OS) Linux atau Unix. Versi Snort juga tersedia untuk Windows. tapi pada blog ini aku akan membahas snort pada linux saja. </p>



<p class="has-large-font-size"><strong>Bagaiamana cara kerja snort?</strong> </p>



<p>Snort didasarkan pada library packet capture (libpcap). Libpcap adalah alat yang banyak digunakan dalam tcp/IP address traffic sniffer, content search and analyzer untuk pencatatan paket, analisis lalu lintas waktu nyata, analisis protokol, dan pencocokan konten.</p>



<p>Pengguna dapat mengonfigurasi Snort sebagai sniffer, pencatat paket &#8212; seperti TCPdump atau Wireshark&#8211; atau metode pencegahan intrusi jaringan.</p>



<p>ok baik itu saja teori nya, langsung saja praktek. silahkan sediakan komputer, server virtual (bisa public atau lokal) dan internet yang cepat.</p>



<p class="has-large-font-size"><strong>Install SNORT dan konfigurasi</strong></p>



<p>pertama-tama install snort.</p>



<p class="has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background"><strong><code>apt install snort</code> -y</strong></p>



<p>maka akan terinstall snort versi 2.9.x.x. kemudian setelah itu buka file bernama <strong>/etc/snort/snort.debian.conf</strong> kemudian isi variabel DEBIAN_SNORT_OPTIONS dengan value -A full. Maka jadinya seperti ini:</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-1 wp-block-group-is-layout-flex">
<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_STARTUP=&#8221;boot&#8221;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_HOME_NET=&#8221;eth0&#8243;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">#DEBIAN_SNORT_OPTIONS=&#8221;&#8221;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_OPTIONS=&#8221;-A full&#8221;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_INTERFACE=&#8221;eth0 eth1 docker0&#8243;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_SEND_STATS=&#8221;true&#8221;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_STATS_RCPT=&#8221;root&#8221;</p>



<p style="font-style:normal;font-weight:700;text-transform:none">DEBIAN_SNORT_STATS_THRESHOLD=&#8221;1&#8243;</p>
</div>



<p>untuk menjalankan snort bisa dua mode, yaitu mode console dan mode background running.</p>



<p>untuk background running bisa menggunakan perintah berikut:</p>



<p class="has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background"><strong><code>snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D</code></strong></p>



<p>untuk running sebagai console</p>



<p class="has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background"><strong><code>snort -A console -c /etc/snort/snort.conf -i eth0 -v</code></strong></p>



<p>Keterangan perintah</p>



<figure class="wp-block-table is-style-stripes"><table class="has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background has-fixed-layout"><thead><tr><th>Flag</th><th>Keterangan</th></tr></thead><tbody><tr><td></td><td></td></tr><tr><td><strong>Snort</strong></td><td>Perintah untuk menjalankan service snort</td></tr><tr><td><strong>-c /etc/snort/snort.conf</strong></td><td>Gunakan rules pada file konfigurasi /etc/snort/snort.conf</td></tr><tr><td><strong>-l /var/log/snort</strong></td><td>Simpan log pada /var/log/snort</td></tr><tr><td><strong>-K ascii</strong></td><td>Simpan log dalam bentuk ascii</td></tr><tr><td><strong>-D</strong></td><td>Jalan snort di latar belakang</td></tr><tr><td><strong>-A console</strong></td><td>Menentukan mode output alert Snort, dengan <strong>console</strong> sebagai pilihan untuk menampilkan alert langsung di layar terminal.</td></tr><tr><td><strong>-i eth0</strong></td><td>Memilih antarmuka jaringan (<strong>eth0</strong>) untuk dipantau oleh Snort. Pastikan antarmuka ini aktif dan memiliki lalu lintas yang relevan.</td></tr><tr><td><strong>-v</strong></td><td>Menampilkan paket-paket yang diterima secara langsung di terminal. Informasi yang ditampilkan meliputi header paket, alamat IP sumber dan tujuan, serta protokol.</td></tr></tbody></table></figure>



<p>pada blog ini aku jalan snort mode background.</p>



<p class="has-large-font-size"><strong>Dasar Menulis Rules</strong></p>



<p>Snort mendeteksi berdasarkan rule atau aturan yang di buat. Didalam snort sudah banyak rule yang bisa digunakan (file rule ada pada /etc/snort/rule) tetapi kali ini aku membuat rule atau aturan sendiri. Pertama-tama format rule, format rul seperti ini:</p>



<pre class="wp-block-preformatted has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background"><strong><code>action protocol address port direction address port (rule option)</code></strong></pre>



<p>Format <strong>rule Snort</strong> terdiri dari beberapa bagian, yaitu <strong>action</strong>, <strong>protocol</strong>, <strong>address</strong>, <strong>port</strong>, <strong>direction</strong>, <strong>address</strong>, <strong>port</strong>, dan <strong>rule options</strong>. Berikut penjelasan rinci untuk masing-masing bagian:</p>



<h3 class="wp-block-heading">1. <strong>Action</strong></h3>



<p>Menentukan tindakan yang dilakukan Snort ketika mendeteksi kecocokan dengan aturan. Contoh tindakan:</p>



<ul class="wp-block-list">
<li><code>alert</code>: Menghasilkan alert atau notifikasi.</li>



<li><code>log</code>: Merekam paket ke dalam file log.</li>



<li><code>pass</code>: Mengabaikan paket.</li>



<li><code>drop</code>: Menjatuhkan paket (hanya pada mode inline).</li>



<li><code>reject</code>: Menolak koneksi dan memberi tahu pengirim.</li>



<li><code>sdrop</code>: Menjatuhkan paket tanpa mencatatnya</li>
</ul>



<h3 class="wp-block-heading">2. <strong>Protocol</strong></h3>



<p>Menentukan protokol jaringan yang diperiksa. Contoh protokol:</p>



<ul class="wp-block-list">
<li><code>tcp</code>: Untuk lalu lintas TCP.</li>



<li><code>udp</code>: Untuk lalu lintas UDP.</li>



<li><code>icmp</code>: Untuk pesan ICMP.</li>



<li><code>ip</code>: Untuk semua lalu lintas IP.</li>
</ul>



<h3 class="wp-block-heading">3. <strong>Address (Sumber dan Tujuan)</strong></h3>



<p>Menentukan alamat sumber dan tujuan paket. Format:</p>



<ul class="wp-block-list">
<li>Alamat IP spesifik: <code>192.168.1.1</code></li>



<li>Subnet: <code>192.168.1.0/24</code></li>



<li>Semua alamat: <code>any</code></li>



<li>Negasi: <code>!192.168.1.0/24</code> (alamat yang tidak termasuk subnet ini).</li>
</ul>



<h3 class="wp-block-heading">4. <strong>Port (Sumber dan Tujuan)</strong></h3>



<p>Menentukan port sumber atau tujuan. Format:</p>



<ul class="wp-block-list">
<li>Port spesifik: <code>80</code></li>



<li>Rentang port: <code>8000:9000</code></li>



<li>Semua port: <code>any</code></li>



<li>Negasi: <code>!80</code></li>
</ul>



<h3 class="wp-block-heading">5. <strong>Direction</strong></h3>



<p>Menentukan arah lalu lintas yang diperiksa:</p>



<ul class="wp-block-list">
<li><code>-></code>: Dari alamat sumber ke tujuan.</li>



<li><code>&lt;-</code>: Dari alamat tujuan ke sumber.</li>



<li><code>&lt;></code>: Dua arah (bidirectional).</li>
</ul>



<h3 class="wp-block-heading">6. <strong>Rule Options</strong></h3>



<p>Dibungkus dalam tanda kurung <code>()</code> dan berisi kriteria tambahan serta tindakan saat aturan cocok. Beberapa elemen dalam rule options:</p>



<ul class="wp-block-list">
<li><strong>msg</strong>: Pesan yang ditampilkan saat aturan cocok.<br>Contoh: <code>msg:"Possible SQL Injection";</code></li>



<li><strong>sid</strong>: ID unik aturan.<br>Contoh: <code>sid:1000001;</code></li>



<li><strong>rev</strong>: Revisi aturan.<br>Contoh: <code>rev:1;</code></li>



<li><strong>content</strong>: String konten yang dicari dalam paket.<br>Contoh: <code>content:"SELECT";</code></li>



<li><strong>threshold</strong>: Mengontrol frekuensi notifikasi.<br>Contoh: <code>threshold:type limit, track by_dst, count 1, seconds 60;</code></li>
</ul>



<p>Contoh aturan snort untuk mendeteksi permintaan GET dan POST:</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><thead><tr><th>REQ</th><th>Rule</th></tr></thead><tbody><tr><td>GET</td><td>alert tcp any any -&gt; any 80 (msg:&#8221;GET Request Detected&#8221;; content:&#8221;GET&#8221;; http_method; sid:1000012;)</td></tr><tr><td>POST</td><td>alert tcp any any -&gt; any 80 (msg:&#8221;POST Requet Detected&#8221;; content:&#8221;POST&#8221;; http_method; sid:1000013;)</td></tr></tbody></table></figure>



<p>Penjelasan aturan GET</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-2 wp-block-group-is-layout-flex">
<p><strong>Action</strong>:<br><code>alert</code> → Menghasilkan notifikasi saat aturan cocok.</p>



<p><strong>Protocol</strong>:<br><code>tcp</code> → Aturan ini berlaku untuk lalu lintas protokol TCP.</p>



<p><strong>Address (Sumber dan Tujuan)</strong>:<br><code>any any</code> → Aturan berlaku untuk semua alamat IP dan port sebagai sumber.<br><code>-&gt;</code> → Lalu lintas diarahkan ke alamat tujuan.</p>



<p><strong>Address Tujuan</strong>:<br><code>any 80</code> → Aturan berlaku untuk semua alamat tujuan pada port 80 (umumnya digunakan untuk HTTP).</p>



<p><strong>Rule Options</strong>:</p>



<ul class="wp-block-list">
<li><code>msg:"GET Request Detected";</code><br>Menampilkan pesan <strong>&#8220;GET Request Detected&#8221;</strong> saat aturan cocok.</li>



<li><code>content:"GET";</code><br>Mendeteksi string <strong>&#8220;GET&#8221;</strong> dalam payload.</li>



<li><code>http_method;</code><br>Memastikan string <strong>&#8220;GET&#8221;</strong> adalah metode HTTP (bukan string sembarangan dalam data).</li>



<li><code>sid:1000012;</code><br>Memberikan <strong>Snort ID (sid)</strong> unik untuk aturan ini.</li>
</ul>
</div>



<p>Penjelasan aturan POST</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-3 wp-block-group-is-layout-flex">
<p><strong>Action</strong>:<br><code>alert</code> → Menghasilkan notifikasi saat aturan cocok.</p>



<p><strong>Protocol</strong>:<br><code>tcp</code> → Aturan ini berlaku untuk lalu lintas protokol TCP.</p>



<p><strong>Address (Sumber dan Tujuan)</strong>:<br><code>any any</code> → Aturan berlaku untuk semua alamat IP dan port sebagai sumber.<br><code>-&gt;</code> → Lalu lintas diarahkan ke alamat tujuan.</p>



<p><strong>Address Tujuan</strong>:<br><code>any 80</code> → Aturan berlaku untuk semua alamat tujuan pada port 80 (umumnya digunakan untuk HTTP).</p>



<p><strong>Rule Options</strong>:</p>



<ul class="wp-block-list">
<li><code>msg:"POST Request Detected";</code><br>Menampilkan pesan <strong>&#8220;POST Request Detected&#8221;</strong> saat aturan cocok.</li>



<li><code>content:"POST";</code><br>Mendeteksi string <strong>&#8220;POST&#8221;</strong> dalam payload.</li>



<li><code>http_method;</code><br>Memastikan string <strong>&#8220;POST&#8221;</strong> adalah metode HTTP.</li>



<li><code>sid:1000013;</code><br>Memberikan <strong>Snort ID (sid)</strong> unik untuk aturan ini.</li>
</ul>
</div>



<p class="has-large-font-size"><strong>Deteksi Serangan DDOS</strong></p>



<p>buka file /etc/snort/rules/local.rules untuk membuat rule sendiri atau kustom:</p>



<p class="has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background"><code>alert tcp any any -> $HOME_NET 80 (flags: S; msg:"Serangan DDOS"; detection_filter: track by_dst, count 10000, seconds 60; sid:1000002;)</code></p>



<p>Penjelasan rule:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="724" height="580" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image.png" alt="" class="wp-image-450" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image.png 724w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-300x240.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>



<p>setelah rule di tulis, jalan service snort dengan perintah <code><strong>systemctl start snort</strong></code> kemudian jalankan snort di latar belakang <code><strong>snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D</strong></code>. Setelah itu log kita bisa watch file alert nya di <strong>/var/log/snort/alert</strong>. Jika ingin melihat secara real-time gunakan perintah beritkut <code><strong>watch -n 1 tail /var/log/snort/alert</strong></code>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="579" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-1-1024x579.png" alt="" class="wp-image-451" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-1-1024x579.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-1-300x170.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-1-768x434.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-1.png 1107w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="has-large-font-size"><strong>Uji Coba Serangan Deteksi DDOS</strong></p>



<p>gunakan hping:</p>



<p class="has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background"><code><strong>hping3 -S -p 80 -d 120 --flood &lt;IP target></strong></code></p>



<p>Penjelasan perintah:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="724" height="241" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-2.png" alt="" class="wp-image-452" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-2.png 724w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-2-300x100.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-2-720x241.png 720w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>



<p>setelah perintah hping di jalankan, maka pada monitor file alert, akan seperti ini:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="256" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-3-1024x256.png" alt="" class="wp-image-453" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-3-1024x256.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-3-300x75.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-3-768x192.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-3.png 1102w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>dari file alert ini, bisa di integrasikan dengan bot telegram untuk notifikasi serangan ke admin. seperti ini contohnya:<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="777" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-4-1024x777.png" alt="" class="wp-image-454" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-4-1024x777.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-4-300x228.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-4-768x583.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/image-4.png 1244w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sekian terima kasih sudah membaca sampai akhir, semoga ilmu nya bermanfaat untuk keperluan mu <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/26/implementasi-snort-pada-real-publik-server/">Implementasi Snort Pada Real Publik Server</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/12/26/implementasi-snort-pada-real-publik-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Implementasi VPC Peering Pada Koneksi Antar Private Instance: Panduan Lengkap untuk Pemula</title>
		<link>https://blog.bhineka-tech.org/2024/10/16/implementasi-vpc-peering-pada-koneksi-antar-private-instance/</link>
					<comments>https://blog.bhineka-tech.org/2024/10/16/implementasi-vpc-peering-pada-koneksi-antar-private-instance/#respond</comments>
		
		<dc:creator><![CDATA[cicak]]></dc:creator>
		<pubDate>Wed, 16 Oct 2024 08:25:54 +0000</pubDate>
				<category><![CDATA[cloud]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=197</guid>

					<description><![CDATA[<p>Halo semuanya, pada artikel kali ini aku membahas tentang VPC Peering dan cara membuatnya. Sebelum masuk ke praktek kalian harus tau dahulu apa itu VPC Peering. VPC Peering merupakan fitur AWS yang memungkinkan dua Virtual Private Cloud (VPC) untuk saling terhubung dan berkomunikasi secara privat. Koneksi ini dilakukan melalui jaringan internal AWS, tanpa melewati internet [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/10/16/implementasi-vpc-peering-pada-koneksi-antar-private-instance/">Implementasi VPC Peering Pada Koneksi Antar Private Instance: Panduan Lengkap untuk Pemula</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-text-align-left">Halo semuanya, pada artikel kali ini aku membahas tentang VPC Peering dan cara membuatnya. Sebelum masuk ke praktek kalian harus tau dahulu apa itu VPC Peering. VPC Peering merupakan fitur AWS yang memungkinkan dua Virtual Private Cloud (VPC) untuk saling terhubung dan berkomunikasi secara privat. Koneksi ini dilakukan melalui jaringan internal AWS, tanpa melewati internet publik. Dengan VPC peering, instance di satu VPC dapat berkomunikasi dengan instance di VPC lain menggunakan <strong>private IP addresses</strong>, seolah-olah mereka berada dalam satu jaringan.</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4 wp-block-group-is-layout-flex">
<p>VPC Peering memiliki beberapa kegunaan yakni:</p>



<ol class="wp-block-list">
<li>Keamanan Lebih Baik:
<ul class="wp-block-list">
<li>VPC peering memungkinkan komunikasi antar-VPC <strong>tanpa melalui internet</strong>, sehingga lebih aman karena tidak terekspos ke jaringan publik. Data tetap berada di jaringan internal AWS.</li>
</ul>
</li>



<li>Menghubungkan Aplikasi yang Terdistribusi:
<ul class="wp-block-list">
<li>Jika kamu memiliki arsitektur aplikasi yang terdistribusi di beberapa VPC (misalnya, aplikasi dan database berada di VPC yang berbeda), VPC peering memungkinkan aplikasi-aplikasi tersebut berkomunikasi secara langsung.</li>
</ul>
</li>



<li>Cross-Account Peering:
<ul class="wp-block-list">
<li>Kamu dapat membuat peering antara VPC di akun AWS yang berbeda, memungkinkan kolaborasi antar-tim atau proyek, tanpa harus menggunakan internet publik atau VPN.</li>
</ul>
</li>



<li>Inter-region Peering:
<ul class="wp-block-list">
<li>VPC peering dapat digunakan antar-region (disebut <strong>inter-region VPC peering</strong>), memungkinkan komunikasi privat antar-VPC di region yang berbeda, berguna untuk aplikasi yang beroperasi di beberapa wilayah geografis.</li>
</ul>
</li>



<li>Kontrol Lalu Lintas Jaringan:
<ul class="wp-block-list">
<li>Dengan peering, kamu dapat mengatur route table di setiap VPC untuk memastikan hanya lalu lintas yang diizinkan bisa mengalir melalui peering connection. Ini memberikan kontrol lebih dalam mengelola komunikasi antar-VPC.</li>
</ul>
</li>



<li>Biaya Transfer Data Lebih Rendah:
<ul class="wp-block-list">
<li>Komunikasi antar-VPC dengan VPC peering biasanya lebih hemat biaya dibandingkan menggunakan internet atau VPN, terutama dalam komunikasi antar-region, karena menggunakan jaringan internal AWS.</li>
</ul>
</li>
</ol>
</div>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-5 wp-block-group-is-layout-flex">
<p>Catatan penting</p>



<ul class="wp-block-list">
<li>VPC peering bersifat <strong>point-to-point</strong>, artinya VPC A bisa berkomunikasi dengan VPC B, tapi tidak bisa meneruskan komunikasi ke VPC C melalui B (no transitive peering).</li>



<li>Kamu perlu mengonfigurasi <strong>route table</strong> dan <strong>security group</strong> di kedua VPC agar komunikasi melalui peering connection diizinkan.</li>
</ul>
</div>



<p>Ok! menurut mu bagaimana? apakah sudah lengkap teori yang aku sampaikan? jika sudah mari lanjut ke praktek. Pastikan kamu sudah memiliki akun AWS. Di artikel ini kita akan membuat dua region yaitu Virginia dan Region Singapore yang memiliki masing-masing satu instance private saling terhubung</p>



<p></p>



<h2 class="wp-block-heading">Membuat Kustom VPC Baru</h2>



<p>Hal pertama yang harus kita lakukan adalah membuat VPC di kedua region. kita akan membuat di region virginia terlebih dahulu!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="992" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-2.png" alt="" class="wp-image-203"/></figure>



<p>Cari dahulu service VPC pada kolom pencarian (kotak kuning) setelah itu pilih menu VPCs (kotak orange). Setelah klik menu VPCs maka akan di arahkan ke halaman daftar VPC yang ada, karena kita akan membuat VPC baru, pada bagian kanan atas klik tombol &#8220;Create VPC&#8221; (kotak orange) untuk ke halaman membuat VPC nya.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="986" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-4.png" alt="" class="wp-image-205"/></figure>



<p>Setalah itu, klik &#8220;VPC and more&#8221; untuk mengatur VPC dengan cara yang lebih mudah, seperti gambar dibawah ini.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="988" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-6.png" alt="" class="wp-image-207"/></figure>



<p>Untuk pengaturan nya, pertama tentukan nama VPC, pada artikel ini aku menggunakan nama &#8220;new-vpc&#8221;, kemudian tentukan IPv4 CIDR Block, disini aku menggunakan bawaan saja, kemudian Number of Availability Zones (AZs) pilih 1, kemudian Number of public subnets pilih 1, kemudian Number of private subnets pilih 1, NAT Gateway pilih None (karna NAT Gateway itu berbayar), kemudian VPC Endpoint pilih None. lengkap nya seperti gambar dibawah ini.</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-7 wp-block-group-is-layout-flex">
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-6 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="516" height="775" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-8.png" alt="" class="wp-image-209"/></figure>
</div>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="542" height="522" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-37.png" alt="Gambar ini memiliki atribut alt yang kosong; nama berkasnya adalah image-36.png" class="wp-image-246" style="width:509px;height:auto"/></figure>
</div>



<p>Klik &#8220;Create VPC&#8221; untuk membuat VPC! setelah itu tunggu saja. Klik &#8220;View VPC&#8221; untuk melihat hasil dari VPC yang telah dibuat</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="571" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-10.png" alt="" class="wp-image-211"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="991" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-11.png" alt="" class="wp-image-212"/></figure>



<p></p>



<h2 class="wp-block-heading">Membuat EC2 Instance Private Dan Public</h2>



<p>Setelah VPC baru dibuat, maka selanjutnya membuat instance pada new-vpc yang baru dibuat. cara nya, cari &#8220;EC2&#8221; pada kolom pencarian lalu klik, maka AWS akan membawa kamu ke halaman EC2.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1204" height="992" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-12.png" alt="" class="wp-image-214"/></figure>



<p>Setelah di arahkan ke halaman instance, klik tombol &#8220;Launch Instance&#8221; pada pojok kanan atas, untuk membuat instance baru. Step selanjutnya aku membuat sebuah instance private.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="987" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-13.png" alt="" class="wp-image-215"/></figure>



<p>Setelah diklik tentukan nama instance, OS instance (pilih ubuntu dan pastikan free tier), instance type (pastikan free tier), key pair (ssh), network setting. Contoh nya seperti gambar dibawah ini.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="793" height="274" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-15.png" alt="" class="wp-image-217"/></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="787" height="789" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-16.png" alt="" class="wp-image-218" style="width:794px;height:auto"/></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="785" height="516" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-19.png" alt="" class="wp-image-221" style="width:806px;height:auto"/></figure>



<p>Untuk key pair, kamu bisa &#8220;Create new key pair&#8221;, berikan nama lalu klik &#8220;Create key pair&#8221;.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="599" height="642" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-20.png" alt="" class="wp-image-222"/></figure>



<p>Kemudian pada bagian Network Setting pada kolom VPC, pilih ke VPC yang baru kita buat sebelumnya, kemudian subnet pilih yang ada kata private, kemudian Auto-assign public IP pilih disable (agar tidak diberikan IP publik), kemudian secury group secara default akan menambahkan rules mengizinkan koneksi ssh, tetapi disini aku menambahkan rules mengizinkan ALL ICMP-IPv4 dengan source type Anyware. Lengkap nya tersaji pada gambar dibawah ini.</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="780" height="448" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-21.png" alt="" class="wp-image-223"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="781" height="841" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-22.png" alt="" class="wp-image-224"/></figure>
</div>



<p>Setelah konfigurasi instance selesai, klik &#8220;Launch instance&#8221; pada kanan pojok bawah.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="940" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-24.png" alt="" class="wp-image-227"/></figure>



<p>setalah di klik, makan AWS akan membuat instance yang sesuai dengan konfigurasi kita sebelumnya.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="984" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-25.png" alt="" class="wp-image-229"/></figure>



<p>Selanjutnya membuat instance publik sebagai bastion host (ini nanti digunakan untuk mengakses instance private), cara nya sama saja beda nya pada saat konfigurasi Network Setting. Di sini aku membuat instance publik dengan nama virginia-instance-2.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="783" height="684" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-26.png" alt="" class="wp-image-230"/></figure>



<p>Uji coba instance, pada instance virginia-instance-2, klik &#8220;Connect&#8221; pada halaman instance.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="985" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-29.png" alt="" class="wp-image-234"/></figure>



<p>Setelah itu klik &#8220;Connect&#8221; seperti gambar dibawah.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="848" height="988" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-30.png" alt="" class="wp-image-235"/></figure>



<p>Uji coba pertama adalah dengan melakukan ping ke google.com, lalu kedua ping ke instance private</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="995" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-31.png" alt="" class="wp-image-236"/></figure>



<p>IP instance private adalah 10.0.135.68.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="856" height="659" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-32.png" alt="" class="wp-image-237"/></figure>



<p>Dua uji coba diatas menunjukan bahwa instance publik berhasil terhubung ke internet dan berhasil terhubung ke instance private, untuk instance private tidak bisa dilakukan uji coba seperti instance publik, karena instance private tidak memiliki IP publik. Untuk terhubung ke instance private, cara nya adalah dengan ssh, gunakan ssh pari key yang telah di download secara otomatis sebelumnya. Copy konten keynya lalu salin ke instance publik, berikan izin 400. Cara menggunakannya seperti ini:</p>



<p class="has-text-align-center has-medium-font-size"><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color"><em>ssh -i key.pem ubuntu@10.0.135.68</em></mark></p>



<p>contoh nya seperti ini.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="695" height="824" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-33.png" alt="" class="wp-image-240"/></figure>



<p>testing ping google.com dan IP private dari instance publik</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="661" height="457" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-34.png" alt="" class="wp-image-241" style="width:706px;height:auto"/></figure>



<p>Pada gambar di atas tersaji informasi bahwa instance private tidak dapat ping google.com dikarenakan tidak memiliki akses internet, tetapi instance private bisa ping ke IP private dari instance publik.</p>



<p>OK sudah selesai sampai disini, untuk tugas kalian, buatkan seperti diatas untuk region kedua! karna aku tidak akan membahas nya untuk kedepan nya. selanjutnya konfigurasi VPS Peering, jadi aku akan menghubungkan instance private yang berbeda region ini dengan VPC Peering.</p>



<p></p>



<h2 class="wp-block-heading">Konfigurasi VPC Peering Antar Region</h2>



<p>Klik tombol &#8220;Search&#8221; pada bagian kanan atas, cari VPC, kemudian pada sidebar pilih menu &#8220;Peering Connections&#8221;. Perlu di artikel ini peering akan dilakukan pada region virginia. Setelah masuk ke menu Peering Connnections, klik tombol &#8220;Create peering connections&#8221; pada pojok kanan atas.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="993" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-38.png" alt="" class="wp-image-252"/></figure>



<p>Setelah di arahkan ke halaman untuk membuat Peering, isi kolom nama, Select a local VPC, Select another VPC seperti gambar dibawah ini:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="646" height="676" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-39.png" alt="" class="wp-image-253"/></figure>



<p>Penjelesan</p>



<p>Pada bagian &#8220;Name&#8221; digunakan untuk memberi nama koneksi peering. bagian &#8220;Select a local VPC&#8221; digunakan untuk memilih VPC yang ingin di hubungkan. &#8220;Select a local VPC to peer with&#8221; terdapat VPC ID yaitu ID VPC di region virginia yang sebelum nya kita buat, kemudian bagian &#8220;Select another VPC to peer with&#8221; terdapat Account, pilih saja My Account karna koneksi dari akun yang sedang digunakan, pada bagian region pilih Another Region dikarenakan peering akan dilakukan antar region, kemudian pilih region yang ingin di hubungkan lalu masukan VPC ID region yang ingin dihubungkan. Setelah semua sudah benar, klik tombol &#8220;Create Peering Connection&#8221; pada bagian bawah. Maka hasilnya akan seperti gambar dibawah.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="679" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-40.png" alt="" class="wp-image-254"/></figure>



<p>Setelah berhasil di buat, silahkan pindah ke region singapore, ke menu Peering Connection, pilih peering connection, klik &#8220;Action&#8221; lalu pilih Accept Request&#8221;. Setalah itu tunggu hingga Provisioning selesai.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="990" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-41.png" alt="" class="wp-image-256"/></figure>



<p>Jika sudah active, pilih menu Route Tables (region virginia), pilih subnet private, lalu edit routes.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1918" height="993" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-42.png" alt="" class="wp-image-258"/></figure>



<p>Setelah itu add route, masuk kan Destination yaitu CIDR dari VPC region Singapore, lalu target pilih Peering Connection kemudian pilih peering yang telah berhasil di hubungkan sebelumnya, Setelah itu &#8220;Save Changes&#8221;.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1919" height="996" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-43.png" alt="" class="wp-image-259"/></figure>



<p>Lakukan hal yang sama pada region Singapore, pastikan Destination CIRD dari VPC region virginia. </p>



<p></p>



<h2 class="wp-block-heading">Uji Coba Koneksi Peering Antara Instance Private Pada Kedua Region</h2>



<p>Uji coba dilakukan dengan menggunakan bastion host lalu gunakan pair key untuk terhubung ke instance private. Uji coba pertama yaitu instance private dari region singpore ke instance private region virginia.</p>



<p>IP instance private singapore: 192.168.1.74<br>IP instance private virginia: 10.0.135.68</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="719" height="722" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-44.png" alt="" class="wp-image-260"/></figure>



<p>Uji coba kedua yaitu instance private dari region virginia ke instance private region singapore.</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-9 wp-block-group-is-layout-flex">
<p>IP instance private singapore: 192.168.1.74<br>IP instance private virginia: 10.0.135.68</p>
</div>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="660" height="686" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/image-45.png" alt="" class="wp-image-263" style="width:732px;height:auto"/></figure>



<p>Sekian terima kasih, jika ada pertanyaan, silahkan isi kolom komentar di bawah <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/10/16/implementasi-vpc-peering-pada-koneksi-antar-private-instance/">Implementasi VPC Peering Pada Koneksi Antar Private Instance: Panduan Lengkap untuk Pemula</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/10/16/implementasi-vpc-peering-pada-koneksi-antar-private-instance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Reverse Engineering pada executable file</title>
		<link>https://blog.bhineka-tech.org/2024/10/02/reverse-engineering-pada-executable-file/</link>
					<comments>https://blog.bhineka-tech.org/2024/10/02/reverse-engineering-pada-executable-file/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Wed, 02 Oct 2024 23:23:59 +0000</pubDate>
				<category><![CDATA[cloud]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=99</guid>

					<description><![CDATA[<p>Halo temen temen cyber sec, karena berhubung kemaren lalu aku share suatu challenge dengan kategori Reverse Engineering di group Bhineka Tech jadi disini aku akan ngebahas gimana sih cara solve challenge tersebut. Bisa dibaca pada hint dan deskripsi dari challenge disana tertulis jika kita diharuskan untuk membongkar suatu executable file yang diberikan untuk mendapatkan suatu [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/10/02/reverse-engineering-pada-executable-file/">Reverse Engineering pada executable file</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Halo temen temen cyber sec, karena berhubung kemaren lalu aku share suatu challenge dengan kategori Reverse Engineering di group Bhineka Tech jadi disini aku akan ngebahas gimana sih cara solve challenge tersebut.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-100 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-080105.png" alt="" width="705" height="570" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-080105.png 705w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-080105-300x243.png 300w" sizes="auto, (max-width: 705px) 100vw, 705px" /></p>
<p>Bisa dibaca pada hint dan deskripsi dari challenge disana tertulis jika kita diharuskan untuk membongkar suatu executable file yang diberikan untuk mendapatkan suatu flag dan disitu aku juga menuliskan hint <em>REST API </em>yang nantinya ini bakal berguna saat kita memulai untuk melakukan analysis.</p>
<p>Karena banyak sekali yang mengeluh RE itu suatu topik yang sulit dan memang benar kalo misalkan kita tidak punya pengetahuan dasar jadi disarankan sebelum temen temen belajar Reverse Engineering ada baiknya temen temen mempelajari dulu beberapa konsep dasar dan fundamental tentang programming, memory layouting, cara kerja compiler/linker dan yang lebih penting bagaimana suatu program itu dibuat agar lebih memahami flownya.</p>
<p>Oke kembali ke topik utama, pertama kita lakukan download dulu file .exe pada URL yang diberikan dan langkah awal kita langsung jalankan programnya untuk melihat fungsi dari programnya</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-103 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-081745.png" alt="" width="1072" height="677" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-081745.png 1072w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-081745-300x189.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-081745-1024x647.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-081745-768x485.png 768w" sizes="auto, (max-width: 1072px) 100vw, 1072px" /></p>
<p>Programnya sangat sederhana yaitu dalam UI-nya ada textbox dan suatu button dimana jika dilihat pada labelnya kita diharuskan untuk meng-inputkan suatu License Key.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-104 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-082227.png" alt="" width="1013" height="260" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-082227.png 1013w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-082227-300x77.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-02-082227-768x197.png 768w" sizes="auto, (max-width: 1013px) 100vw, 1013px" /></p>
<p>Jika dilihat pada archive zipnya didalam folder re_chall terdapat 2 libray atau DLL(dynamic library link) yaitu libcurl.dll dan zlib1.dll dimana DLL file ini digunakan untuk external library yang mana function-function dari .dll file ini digunakan didalam source code pada program yang mana jika kita menghapus .dll file ini program akan error, jelas saja karena memang ini file krusial yang di include oleh program.</p>
<p>Disini untuk identifikas awal kita bisa menggunakan command file untuk mengetahui deskripsi dari executable</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-115 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-035552.png" alt="" width="892" height="160" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-035552.png 892w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-035552-300x54.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-035552-768x138.png 768w" sizes="auto, (max-width: 892px) 100vw, 892px" /></p>
<p>Jika dilihat dari output command file menunujukkan <em>x86-64 Mono/.Net assembly </em>yang arinya merupakan binary yang di build diattas plaform .NET dimana .NET merupakan suatu  plaform open source yang menyediakan fungsionalitas seperti libray, dependency, module dsb unttuk membuat suatu aplikasi dan bahkan .NET bisa berajalan pada cross platform.</p>
<p>Disini kitta mengetahui jika executable ini di compile menggunakan .NET SDK jadi untuk memulai RE kita bisa menggunakan tools .NET decompiler dan disini kita akan menggunakan salah satu tools yang powerfull yaitu dnSpy yang berfungsi untuk debugger dan assembly editor pada aplikasi yang di build menggunakan .NET</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-117 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-040917.png" alt="" width="578" height="409" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-040917.png 578w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-040917-300x212.png 300w" sizes="auto, (max-width: 578px) 100vw, 578px" /></p>
<p>Setelah dibuka pada dnSpy kita bisa melihat dan explore component yang digunakan pada program disitu ada berbagai macam, untuk text program menggunakan label, untuk input menggunakan textbox dan disitu juga disertakan name pada masing masing component. Disini kita akan fokus pada submit_click yaitu component button karena kita tau dalam program setelah dilakukan submit button program akan melakukan action untuk validasi license key.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-118 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-041515.png" alt="" width="1290" height="600" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-041515.png 1290w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-041515-300x140.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-041515-1024x476.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-041515-768x357.png 768w" sizes="auto, (max-width: 1290px) 100vw, 1290px" /></p>
<p>Hasil decompile dari code yang terdapat pada form submit_click yang pastinya sangat tidak readable ya disini karena hasil decompiling ini merupakan suatu pseudo code bukan code aslinya jadi kita akan melakukan static analysis manual dengan mencoba membaca result codenya</p>
<p>Disini sangat jelas jika program menggunakan bahasa c++ karena ada beberapa namespace c++ yang dipanggil seperti std::char dan std::string.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-119 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042102.png" alt="" width="1009" height="394" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042102.png 1009w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042102-300x117.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042102-768x300.png 768w" sizes="auto, (max-width: 1009px) 100vw, 1009px" /></p>
<p>Saat melakukan source code review disini ditemukan suatu instansiasi libcurl bisa terlihat pada function curl_easy_init() dan curl_easy_setopt, seperti yang tertulis pada hint yaitu REST API yang mungkin program melakukan suatu request HTTP jadi mari coba kita lakukan capture pada wireshark</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-122 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042745.png" alt="" width="1165" height="388" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042745.png 1165w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042745-300x100.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042745-1024x341.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-042745-768x256.png 768w" sizes="auto, (max-width: 1165px) 100vw, 1165px" /></p>
<p>&nbsp;</p>
<p>Dan tidak ada result pada saat di filter di protocol HTTPhmm jadi mungkin saja memang host sudah memakai SSL jadi kita coba saja filter menggunakan protocol SSL/TLS</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-123 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043053.png" alt="" width="1268" height="425" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043053.png 1268w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043053-300x101.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043053-1024x343.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043053-768x257.png 768w" sizes="auto, (max-width: 1268px) 100vw, 1268px" /></p>
<p>dan ya banyak sekali outputnya jadi kita perlu melakuan filter manual untuk menemukan suatu endpoint REST API dan karena memakai SSL semua request di enkripsi jadi disini kita tidak bisa melihat raw plain-text dari http request tapi dari sini kita bisa menemukan IP address beserta alamat port yang digunakan pada program</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-124 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043438.png" alt="" width="945" height="431" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043438.png 945w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043438-300x137.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043438-768x350.png 768w" sizes="auto, (max-width: 945px) 100vw, 945px" /></p>
<p>Jika kita melihat lagi lebih jauh disini ditemukan ada suatu SSL handshaking pada IP address 103.84.207.73 di pot 3000 dan jika kita melihat SNI(server name indication) yang merupakan extension dari protokol TLS yang menunjukkan cyber-uph.lol jadi kita akan coba akses melaui browser pada https://cyber-uph.lol:3000</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-125 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043833.png" alt="" width="1882" height="915" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043833.png 1882w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043833-300x146.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043833-1024x498.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043833-768x373.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-043833-1536x747.png 1536w" sizes="auto, (max-width: 1882px) 100vw, 1882px" /></p>
<p>Tetapi pada saat diakses dari browser di homepage-nya terdapat response 404 dan juga pada header http disana ter-include <em>X-Powered-By: Express </em>yang bisa disimpulkan jika backend dibuat menggunakan node.js framework yaitu express.</p>
<p>Disini kita perlu mengetahui path endpoint yang digunakan untuk melakukan validasi license key jadi kita akan melakukan analysis lebih lanjut lagi pada program dan jika kita mencoba membaca pada instance curl kita menemukan deklarasi URL di function curl_easy_setopt</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-127 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045618.png" alt="" width="956" height="146" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045618.png 956w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045618-300x46.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045618-768x117.png 768w" sizes="auto, (max-width: 956px) 100vw, 956px" /></p>
<p>yang mana stiring <strong>??_C@_0CH@MEIFFGMC@https?3?1?1cyber?9uph?4lol?33000?1priv@</strong> jika kita bersihkan menjadi https://cyber-uph.lol:3000/priv dan pada saat diakses tetap saja response masih menunjukkan 404 jadi cara cepatnya kita bisa menggunakan utility string dan grep pada string cyber-uph.lol</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-128 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045957.png" alt="" width="733" height="224" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045957.png 733w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-045957-300x92.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<p>Dan sekarang ditemukan endpoint yang benar dan langsung coba kita akses pada browser</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-129 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050050.png" alt="" width="1878" height="646" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050050.png 1878w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050050-300x103.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050050-1024x352.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050050-768x264.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050050-1536x528.png 1536w" sizes="auto, (max-width: 1878px) 100vw, 1878px" /></p>
<p>Sepertinya memerlukan semacam authorization untuk mengakses endpoint /privateData dimana hal ini disebut basic http authentication jadi kita memerlukan suatu credential agar bisa mengakses endpoint tersebut jadi kita perlu analisys lagi</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-131 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050632.png" alt="" width="935" height="95" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050632.png 935w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050632-300x30.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-050632-768x78.png 768w" sizes="auto, (max-width: 935px) 100vw, 935px" /></p>
<p>Jika kita explore lagi pada pseudo code kita bisa melihat disana ada suatu user defined function yaitu base64coyy yang kemungkinan besar program melakukan encode dan decode memakai base64</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-132 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051317.png" alt="" width="943" height="496" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051317.png 943w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051317-300x158.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051317-768x404.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051317-720x380.png 720w" sizes="auto, (max-width: 943px) 100vw, 943px" /></p>
<p>Nah disini ada suatu deklarasi array dan juga while loop untuk operasi string dimana kita bisa melihat dari string yang di assign pada variable untuk membaca string kita perlu mengikuti pola decompiler</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-133 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051559.png" alt="" width="773" height="421" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051559.png 773w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051559-300x163.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-051559-768x418.png 768w" sizes="auto, (max-width: 773px) 100vw, 773px" /></p>
<p>Kita bisa melihat pola string seperti <strong>??_C@_0L@KGCJHHFD@keyLicense@; </strong>yang sebenarnya string asli merupakan KeyLicense jadi patternya ??_@string_sampah@string_aslinya@ jadi kita bisa langsung mengambil string aslinya</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-134 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-052437.png" alt="" width="673" height="489" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-052437.png 673w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-052437-300x218.png 300w" sizes="auto, (max-width: 673px) 100vw, 673px" /></p>
<p>Jika kita melihat pada operasi berikut sederhananya operasi tersebut melakukan append string karena memang hasil dari decompile terlihat sangat rumit jadi kita sekarang mencoba membuka pada hex editor dari string tersebut</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-135 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053008.png" alt="" width="486" height="151" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053008.png 486w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053008-300x93.png 300w" sizes="auto, (max-width: 486px) 100vw, 486px" /></p>
<p>Karena tadi kita mendapatkan petujuk yaitu function base64coyy sekarang kita perlu identifikasi string dengan encoding base64 dan kita menemukan 3 string yaitu:</p>
<p>y92cwwGZ</p>
<p>uxWYrFmYhJl</p>
<p>cwMXYn5GM3pDajVGdphmY</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-136 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053503.png" alt="" width="653" height="182" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053503.png 653w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053503-300x84.png 300w" sizes="auto, (max-width: 653px) 100vw, 653px" /></p>
<p>Tetapi pada saat dilakukan decode encoding bukan base64 dan menampilkan invalid input</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-138 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053728.png" alt="" width="908" height="376" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053728.png 908w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053728-300x124.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-053728-768x318.png 768w" sizes="auto, (max-width: 908px) 100vw, 908px" /></p>
<p>Dan jika kita melihat lagi pada source code terdapat function strrev yang mengambil argument dari string base64 yang di append jadi kita bisa coba melakukan reverse/membalikkan string agar dapat kita lakukan decoding</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-139 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-054940.png" alt="" width="636" height="345" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-054940.png 636w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-054940-300x163.png 300w" sizes="auto, (max-width: 636px) 100vw, 636px" /></p>
<p>Saat dilakukan pembalikkan string, kita berhasil melakukan decode dengan plaint-text bhitech:w0ngas0rRabakalndl0sor jadi memang pada http auth username dan password dilakukan pemisahan pada character : artinya berarti bhitech merupakan username dan w0ngas0rRabakalndl0sor adalah passwordnya jadi langsung kita coba pada http auth</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-140 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055219.png" alt="" width="1723" height="467" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055219.png 1723w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055219-300x81.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055219-1024x278.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055219-768x208.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055219-1536x416.png 1536w" sizes="auto, (max-width: 1723px) 100vw, 1723px" /></p>
<p>hmm ternyata masih gagal atau username/password salah yang berarti analysis static saja belum cukup jadi kita langsung mulai menggunakan x64dbg untuk analysis dynamic yaitu analysis program pada saat runtime/berjalan</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-141 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055710.png" alt="" width="1123" height="579" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055710.png 1123w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055710-300x155.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055710-1024x528.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-055710-768x396.png 768w" sizes="auto, (max-width: 1123px) 100vw, 1123px" /></p>
<p>Kita buka dan running pada x64dbg dan melihat behaviour pada program saat berjalan, lalu kita trace dan melihat informasi data di stack dan memory</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-142 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060101.png" alt="" width="886" height="221" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060101.png 886w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060101-300x75.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060101-768x192.png 768w" sizes="auto, (max-width: 886px) 100vw, 886px" /></p>
<p>Disini kita menemukan string base64 encode beserta plaintext-nya yaitu YmhpdGVjaDp3MG5nYXMwclJhYmFrYWxuZGwwc29y dan bhitech:w0ngas0rRabakaln artinya sebenarnya flow kita memang sudah benar tetapi compiler dan linker memotong string password yang sebenernya w0ngas0rRabakalndl0sor menjadi w0ngas0rRabakaln</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-143 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060641.png" alt="" width="1894" height="693" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060641.png 1894w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060641-300x110.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060641-1024x375.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060641-768x281.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060641-1536x562.png 1536w" sizes="auto, (max-width: 1894px) 100vw, 1894px" /></p>
<p>Pada saat login menggunakan credential yang kita dapatkan hasilnya valid dan bisa dilihat REST API tersebut menyimpan kumpulan license key dan sekarang kita coba ambil 1 untuk diinputkan pada program</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-145 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060835.png" alt="" width="982" height="491" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060835.png 982w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060835-300x150.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060835-768x384.png 768w" sizes="auto, (max-width: 982px) 100vw, 982px" /></p>
<p>Dan kita coba cek dari footer response API untuk mendapatkan flagnya</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-146 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060926.png" alt="" width="1031" height="167" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060926.png 1031w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060926-300x49.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060926-1024x166.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/10/Screenshot-2024-10-03-060926-768x124.png 768w" sizes="auto, (max-width: 1031px) 100vw, 1031px" /></p>
<p><strong>bhitech{Al0n-al0n-pok0k-k3l4k0n}</strong></p>
<h2>Penutup</h2>
<p>Oke jadi itu saja mungkin WriteUP pada challenge RE kali ini semoga teman teman banyak belajar juga dan lebih memahami konsep Reverse Engineering. ya sebenarnya ada reward 70K untuk yang pertama kali solve tapi berhubung tidak ada yang solve jadi uangnya mungkin nanti ku pake beli kopi golda sama rokok dan bengong mikirin dunia didepan indomaret aja hehe<strong><br />
</strong></p>
<p>&nbsp;</p>
<p><em>&#8220;Kamu tidak perlu menjadi luar biasa untuk memulai, tapi kamu harus memulai untuk menjadi luar biasa.&#8221;</em> <strong>&#8211; Zig Ziglar</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/10/02/reverse-engineering-pada-executable-file/">Reverse Engineering pada executable file</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/10/02/reverse-engineering-pada-executable-file/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Incident Response Pada Suatu Server Yang Compromised</title>
		<link>https://blog.bhineka-tech.org/2024/09/26/incident-response-pada-suatu-server-yang-compromised/</link>
					<comments>https://blog.bhineka-tech.org/2024/09/26/incident-response-pada-suatu-server-yang-compromised/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Thu, 26 Sep 2024 23:08:57 +0000</pubDate>
				<category><![CDATA[blue team]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=81</guid>

					<description><![CDATA[<p>Pada era Digital ini, serangan terhadap server dapat terjadi kapan saja, bahkan di waktu yang tidak terduga pada dini hari sekitar jam 1 pagi ada chat masuk dari teman saya yang intinya dia meminta tolong karena servernya telah di serang atau Compromised, okelah karena pada saat itu saya sedang ngopi santai dan langsung menyalakan monitor [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/09/26/incident-response-pada-suatu-server-yang-compromised/">Incident Response Pada Suatu Server Yang Compromised</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Pada era Digital ini, serangan terhadap server dapat terjadi kapan saja, bahkan di waktu yang tidak terduga pada dini hari sekitar jam 1 pagi ada chat masuk dari teman saya yang intinya dia meminta tolong karena servernya telah di serang atau <strong>Compromised</strong>, okelah karena pada saat itu saya sedang ngopi santai dan langsung menyalakan monitor untuk melakukan checking dan analisys.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-83 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-032023.png" alt="chatting whatsapp " width="1138" height="428" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-032023.png 1138w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-032023-300x113.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-032023-1024x385.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-032023-768x289.png 768w" sizes="auto, (max-width: 1138px) 100vw, 1138px" /></p>
<p>jadi langsung saja saya login ke VPS-nya dengan  menggunakan user root karena memang beberapa kali server dia ini jebol karena memang didalamnya terdapat banyak sekali domain dan sempat dulu juga saya juga ikut membantu handle dan melakukan restorasi.</p>
<p>Hal pertama pada saat melakukan Incident Response kita fokus pada LOG, karena ini adalah operating sistem linux dan kebetulan yang sudah integrasi dengan cpanel jupiter jadi semua access log webserver itu disimpan pada directory <strong>/etc/apache2/logs/domlogs/</strong> dan karena kata teman saya ini curiga mereka pegang akses root jadi untuk mem-validasi kita bisa menggunakan command <em>last </em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-84 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/last.png" alt="" width="805" height="359" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/last.png 805w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/last-300x134.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/last-768x342.png 768w" sizes="auto, (max-width: 805px) 100vw, 805px" /></p>
<p>Dan disini jika dilihat lastlogin pada IP address yang menggunakan user root aman atau tidak ada IP lain selain IP address yang memang wewenang pada VPS tersebut jadi bisa dipastikan attacker tidak mendapatkan akses root. untuk  selanjutnya kita akan lebih fokus pada analisys untuk mengetahui attacker masuk dari mana dan backdoor apa saja yang mereka upload di server.</p>
<p>Karena memang beberapa website di build menggunakan <a href="https://id.wikipedia.org/wiki/PHP"><strong>PHP</strong></a> dengan tech stack <a href="https://id.wikipedia.org/wiki/Laravel"><em><strong>laravel</strong></em></a> dan <a href="https://id.wikipedia.org/wiki/WordPress"><em><strong>CMS wordpress</strong></em></a>, jadi saya langsung melakukan filtering file yang mempunyai indikasi backdoor dengan menggunakan <em>find</em> command</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-85 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/find-command.png" alt="" width="1309" height="565" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/find-command.png 1309w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/find-command-300x129.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/find-command-1024x442.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/find-command-768x331.png 768w" sizes="auto, (max-width: 1309px) 100vw, 1309px" /></p>
<p>Terlihat dari outpunya banyak sekali <strong>PHP</strong> backdoor yang sudah di tebar oleh attacker dan pada saat dilakukan scanning dari <em><strong>md5 checksum</strong></em> pada salah satu backdoor hasilnya banyak sekali resultnya</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-86 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/checksum.png" alt="" width="1191" height="627" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/checksum.png 1191w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/checksum-300x158.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/checksum-1024x539.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/checksum-768x404.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/checksum-720x380.png 720w" sizes="auto, (max-width: 1191px) 100vw, 1191px" /></p>
<p>hall ini bisa kita jadikan acuan pada saat melakukan log analisys, karena attacker menebar <em><strong>PHP backdoor / webshell</strong></em> memiliki pola yang sama yaitu diletakkan pada direktori <strong>/.well-known/463asda646d/</strong> dan sepertinya <strong>attacker</strong> menggunakan <strong>auto mass generate</strong> unutk membuat folder serta file <strong>index.php</strong></p>
<p>masuk pada directory <strong>/etc/apache2/logs/domlogs/namauser</strong> untuk monitoring access log / request pada webserver karena banyaknya domain kita tidak mungkin cek satu persatu jadi kita langsung saja filter request hanya pada path &#8216;<strong>/.well-known/463asda646d/index.php</strong>&#8216; dan ditemukan salah satu domain yang pertama kali infected anggap saja domain.xyz karena jika dilihat dari timestampnya attacker pertama kali akses pada <strong>26/Sep/2024 jam 07:43:44 pagi</strong></p>
<p>kita disini akan fokus pada domain.xyz karena dari <strong>IOC(indicator of compromised)</strong> attacker masuk melalui domain tersebut, jadi kita akan cek archive lognya pada 26 september pagi yang berada pada directory <strong>/home/log/</strong> dan ada file yaitu <strong>domain.xyz.-Sep-2024.gz</strong> dan <strong>domain.xyz.-ssl_log-Sep&#8211;2024.gz</strong> dimana perbedaan dari 2 file tersebut yaitu pada file <strong>ssl_log</strong> request dari client menggunakan https atau TLS begitupun sebaliknya</p>
<p>disini setelah saya melakukan filterin dan greping menemukan IP yang mencurigakan yaitu <strong>104.28.215.133</strong> yang mengakses endpoint <strong>/wp-content/plugins/aa3d742778e9f335ec234e10ac868df1/get_index.php</strong> dengan response status <strong>200</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-88 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-052939.png" alt="" width="1226" height="40" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-052939.png 1226w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-052939-300x10.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-052939-1024x33.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-052939-768x25.png 768w" sizes="auto, (max-width: 1226px) 100vw, 1226px" /></p>
<p>nah disini kita menemukan data yang berharga atau kalo dalam digital forensic disebut sebagai artifact, nah kita sudah menemukan salah satu IP attacker disini kita bisa dengan mudah identifikasi dari IP address tersebut pada log file</p>
<p>dan pada saat melihat accessnya pada IP <strong>104.28.215.133</strong> yaitu pertama dia melakukan request ke <strong>wp-login</strong> dan kemudian melakukan redirect ke endpoint <strong>wp-admin/plugin-install.php</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-89 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/request_wp-admin.png" alt="" width="1329" height="67" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/request_wp-admin.png 1329w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/request_wp-admin-300x15.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/request_wp-admin-1024x52.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/request_wp-admin-768x39.png 768w" sizes="auto, (max-width: 1329px) 100vw, 1329px" /></p>
<p>Disini saya langsung konfirmasi pada teman saya, yaitu bagaimana dia melakukan konfigurasi pada wordpress dan apakah <strong>theme/plugin</strong> yang di install bersifat nulled serta bagaimana <strong>passhprase credentialnya</strong> apakah rumit atau tidak dan yang mengejutkan disini kata dia wordpress pada domain tersebut belum digunakan dan hanya hasil dari extract sebuah wp zip tanpa melakukan konfigurasi apapun.</p>
<p>sempet berfikir bagaimana attacker ini mendapatkan akses, setelah menghabiskan satu batang rokok akhirnya terfikir yaitu jika wordpress tanpa konfigurasi memang bisa user melakukan manual installation yaitu dengan mengakses pada endpoint <strong>wp-admin/setup-config.php</strong> jadi disini saya menggali lebih dalam pada log file yang ada</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-90 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/setup-config.png" alt="" width="1331" height="287" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/setup-config.png 1331w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/setup-config-300x65.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/setup-config-1024x221.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/setup-config-768x166.png 768w" sizes="auto, (max-width: 1331px) 100vw, 1331px" /></p>
<p>dan benar saja asumsi tadi disini attacker memperoleh initial access dengan melakukan default installation pada wordpress sekitar jam 7 pagi dan disitu juga terlihat ada request ke <strong>/index.php/2024/09/26/hello-world/</strong> dimana page <strong>hello-world</strong> merupakan default page dari wordpress saat selesai instalasi</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-91 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055147.png" alt="" width="481" height="477" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055147.png 481w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055147-300x298.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055147-150x150.png 150w" sizes="auto, (max-width: 481px) 100vw, 481px" /></p>
<p>Disini terlihat timestamp pada file wp-config.php di jam <strong>07:07</strong> pagi bisa diambil kesimpulan jika analisys pada log file tersebut valid. Disini bagaimana attacker bisa melakukan instalasi tanpa mengetahui credential database yaitu dengan membuat suatu instance remote mysql pada server <strong>C2</strong> mereka</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-92 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055521.png" alt="" width="850" height="489" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055521.png 850w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055521-300x173.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055521-768x442.png 768w" sizes="auto, (max-width: 850px) 100vw, 850px" /></p>
<p>Terlihat pada IP <strong>194.163.155.171</strong> dan port <strong>443</strong> yang merupakan remote database dari server attacker, attacker sangat cerdik dimana seharusnya request ke port selain <strong>80</strong> dan <strong>443</strong> di block oleh outbound firewall dari sini attacker melakukan setup <a href="https://id.wikipedia.org/wiki/MySQL"><strong>MySQL</strong> </a>pada port <strong>443</strong> yang digunakan untuk bypass pada firewall</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-93 size-full" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055836.png" alt="" width="860" height="210" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055836.png 860w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055836-300x73.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/09/Screenshot-2024-09-27-055836-768x188.png 768w" sizes="auto, (max-width: 860px) 100vw, 860px" /></p>
<p>pada saat dilakukan enumeration dan banner grabbing menggunakan nmap, benar saja di server attacker, port <strong>443</strong> running service <strong>MySQL</strong></p>
<p><strong>Kesimpulan</strong></p>
<p>disini kita sudah membahas bagaimana melakukan Incident Response pada suatu server yang compromised, melakukan Incident Response sendiri bisa sulit bisa juga mudah tergantung dari setup server, banyaknya database, service dan juga bagaimana konfigurasi-nya bahkan ada tim khusus untuk melakukan hal semacam ini. Tetapi hal-hal seperti ini wajib dikuasai oleh sysadmin atau devops engineer dan orang-orang yang memang bertugas untuk menghandle suatu server dan teruntuk developer pastikan untuk selalu melakukan pendekatan keamanan pada source code yaitu dengan melakukan secure coding dan menerapkan best-practice dari tech stack yang digunakan. dan jangan lupa terus belajar dan melakukan eksplorasi <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><em>&#8220;Learning is never done without errors and defeat.&#8221;</em> <strong>-Vladimir Lenin</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/09/26/incident-response-pada-suatu-server-yang-compromised/">Incident Response Pada Suatu Server Yang Compromised</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/09/26/incident-response-pada-suatu-server-yang-compromised/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mengenal heap dan stack memory</title>
		<link>https://blog.bhineka-tech.org/2024/09/11/mengenal-heap-dan-stack-memory/</link>
					<comments>https://blog.bhineka-tech.org/2024/09/11/mengenal-heap-dan-stack-memory/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Wed, 11 Sep 2024 07:56:16 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Tak Berkategori]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=53</guid>

					<description><![CDATA[<p>Haloo guyss jadi pada tulisan awal ini aku akan ngebahas suatu hal yang mungkin jarang banget dibahas yaitu heap dan stack tetapi perlu diingat lagi yang kita bahas ini bukan heap/stack pada struktur data ya. Pembahasan ini mungkin menurut sebagian orang itu ga terlalu penting, tetapi pada saat kita ingin mempelajari lebih dalam struktur dari [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/09/11/mengenal-heap-dan-stack-memory/">Mengenal heap dan stack memory</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Haloo guyss jadi pada tulisan awal ini aku akan ngebahas suatu hal yang mungkin jarang banget dibahas yaitu heap dan stack tetapi perlu diingat lagi yang kita bahas ini bukan heap/stack pada struktur data ya. Pembahasan ini mungkin menurut sebagian orang itu ga terlalu penting, tetapi pada saat kita ingin mempelajari lebih dalam struktur dari operating system dan pemrograman yang lebih low level stack dan heap ga bisa kita abaikan karena peranan dari mereka ini sangat berguna banget selain untuk memori management mempelajari stack dan heap kita bakal ngerti bagaimana suatu variable, function, string dan keseluruhan data pada program kita di tempatkan pada memory</p>
<p>Sebelum terlalu jauh kita membahas dulu mengenai konsep memory layouting atau tata letak memory. Jadi apa sih yang dimaksud dengan memory ?? secara gampangnya memory itu merupakan suatu refrensi yang menyimpan informasi data dan intruksi yang digunakan secara langsung pada komputer yang kita pake,  Pada saat kita membuat suatu program / software data dan intruksi akan di store pada memory dan memory sendiri terbagi menjadi beberapa segment dan dalam kasus sistem yang menggunakan 64 byte per alamat pada memory ber ukuran 8 byte sedangkan pada 32 byte ukuran alamatnya adalah 4 byte</p>
<p>Saat kita menjalankan suatu program ada 2 area dan processing yang dilakukan dan kita menyebutnya dengan operasi user space dan kernel space</p>
<p><strong>Kernel Space</strong></p>
<p>Operasi input output dan lokasi tempat code dan data kernel disimpan serta dieksekusi biasanya dijalankan melalui system call pada operating unix-like dimana jika ada suatu process yang melakukan system call interupsi akan dikirimkan ke kernel yang kemudian kernel akan melakukan eksekusi dari code yang diberikan, nah dalam hal ini code akan dieksekusi bawah ring 0</p>
<p><strong>User Space</strong></p>
<p>Sekumpulan lokasi dan tempat process user normal berjalan dan process yang berada pada user space ini tidak memiliki akses ke kernel space dan hanya bisa melakukan sebagian kecil operasi kernel dengan bantuan syscall(system call) seperti yang dijelaskan diatas dan umumnya sendiri kita saat memakai operating system linux semua process dan operasi yang kita lakukan ada di area ini</p>
<p>Nah baru disini kita akan ngebahas mengenai memori layouting</p>
<p><img loading="lazy" decoding="async" class="" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/09/memory-layout.png" width="680" height="463" /></p>
<p>Gambar diatas ini merupakan ilustrasi dari tata letak suatu memory yang digunakan pada software/program, jadi gaperlu bingung dulu karena bagian stack, heap, bss, data ,text itu semua ada penjelasannya dan area pada memory itu disebut sebagai virtual space. Kebetulan ruang pertama ada stack dimana stack sendiri itu merupakan area untuk menyimpan semua data seperti variable, argument, parameter maupun return address pada program yang nantinya akan digunakan untuk function call, dan 2 operasi utama pada stack itu dikenal dengan PUSH dan POP dimana PUSH itu dipake untuk memasukkan nilai ke dalam stack sementara POP digunakan untuk mengambil nilai pada stack yang tentunya dengan menggunakan methode LIFO(Last in first out) artinya data yang dimasukkan terakhir akan diambil/dihapus lebih dulu ya secara gampangnya seperti tumpukan piring.</p>
<p>Kedua ada heap nah heap sendiri itu sebenernya sama aja untuk menyimpan suatu data seperti stack tetapi heap ini saat melakukan alokasi pada memory itu bersifat dinamis yang berarti programmer bisa melakukan management memory seperti menentukan kapan memory digunakan dan dibebaskan, dan kalo dalam bahasa C heap ini dikelola oleh fungsi malloc(), realloc() dan free(), dan di area heap ini dimulai di akhir segment bss hingga menuju ke area alamat memory yang lebih tinggi</p>
<p>Lalu ada BSS(block started with symbol) nah bss ini merupakan suatu segment/area pada memory yang menyimpan data yang unitialized/data yang tidak di inisialisasi seperti saat kita mendeklarasikan suatu variable <em>static int heker; atau char namasaya[]; </em>akan dialokasikan pada bss ini</p>
<p>berikutnya ada DATA dan segment ini digunakan untuk menyimpan semua data yang di inisialisasi seperti variable yang sudah kita assign atau berikan suatu nilai contoh: int a = 12; atau char nama[] = &#8220;hengker pro&#8221;; nah jadi variable atau data yang initialized akan disimpan pada segment DATA ini</p>
<p>Terakhir ada TEXT dimana segment ini digunakan untuk menyimpan data yang bersifat read-only seperti intruksi machine code, binary code yang udah di compile maupun informasi debug biasanya ada di segment TEXT karena read-only jadi user tidak bisa melakukan modifikasi pada segment ini</p>
<p>Oke jadi mungkin itu saja penjelasan dasar dari struktur pada memory serta menambah pemahaman kita mengenai stack dan heap serta fungsinya dan mungkin next artikel nanti aku akan membahas secara practical-nya dan kita melihat secara langsung implementasi stack dan heap pada memory pada program yang kita buat, see you semoga bermanfaat <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&nbsp;</p>
<p>Reference:</p>
<p><a href="https://web.stanford.edu/class/archive/cs/cs107/cs107.1222/lectures/07/Lecture07.pdf">https://web.stanford.edu/class/archive/cs/cs107/cs107.1222/lectures/07/Lecture07.pdf</a></p>
<p><a href="https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap">https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap</a></p>
<p><a href="https://unix.stackexchange.com/questions/87625/what-is-difference-between-user-space-and-kernel-space">https://unix.stackexchange.com/questions/87625/what-is-difference-between-user-space-and-kernel-space</a></p>
<p><a href="https://www.w3schools.com/c/c_strings.php">https://www.w3schools.com/c/c_strings.php</a></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/09/11/mengenal-heap-dan-stack-memory/">Mengenal heap dan stack memory</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/09/11/mengenal-heap-dan-stack-memory/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
