Skip to main content

พูดถึง MAC ใน ASP.NET

Post นี้แนว def ครับ เป็น basic เรื่องนึง ที่น่าสนใจครับ เกี่ยวกับการ tamper ข้อมูลครับ

จากที่อ่านหนังสือ The Web Application Hacker's Handbook เกี่ยวกับเรื่อง tamper ตัวข้อมูล ใน ASP.NET (หรือตัว ViewState) ซึ่งจะเป็นค่าที่มีการ encode ด้วย base64  แต่ในกรณีที่ผู้โจมตีหรือไม่ประสงค์ดีสามารถ decode ตัว base64 ได้ ก็อาจจะสามารถรู้ข้อมูลที่ส่งผ่านระหว่าง client กับ server ได้ และก็จะสามารถแก้ไขข้อมูลของผู้ส่งได้เช่นกัน

ทีนี้  ASP.NET เลยมีกระบวนการที่เรียกว่า MAC ย่อมาจาก Message Authentication Code มาเพื่อจัดการเรื่องนี้ เพราะ MAC เป็นกระบวนการที่จะช่วยยืนยันได้ว่า message ที่ส่งระหว่าง sender กับ receiver นั้นถูกต้องไหม ?  ดูรูปด้านล่างนะครับ 


Ref : https://en.wikipedia.org/wiki/Message_authentication_code#Example


1. ดูในกรอบสีฟ้าด้านซ้ายก่อน จะเห็นว่า message ของผู้ส่ง จะถูกทำการ hash ด้วย ด้วย Key(K) ซึ่งเป็น private key ได้ออกมาเป็น MAC สีเขียว 
2. การส่งจะส่งทั้ง message เดิม รวมไปกับ MAC 
3. เมื่อมาถึงผู้รับ ในกรอบสีเหลืองด้านขวา จะเห็นว่า ผู้รับ จะนำเอา message ในทำการ hash ด้วย private key (K) เหมือนกับผู้ส่ง ได้ผลออกมาเป็น MAC สีเขียว
4. คราวนี้ ก็นำเอา MAC ของผู้ส่ง กับ MAC ของผู้รับมาเปรียบเทียบกัน ถ้าตรงกันก็จบคือ message ต้นฉบับไม่ได้ถูกแก้ไขเปลี่ยนแปลง แต่ถ้าค่า MAC ไม่ตรงกัน แสดงว่ามีอะไรผิดปกติกับต้นฉบับแล้ว

ต้องอย่าลืมว่า Key(K) ต้องมีการตกลงกันก่อนระหว่างผู้ส่งกับผู้รับนะครับ ซึ่งจะเป็น key เดียวกัน

Remark : MAC ไม่ใช่การ encrypt นะครับ เป็นการ verify ความถูกต้อง

โดย default ตัว MAC จะถูก enable อยู่แล้ว แต่ถ้าต้องการที่จะ disable มัน (ด้วยเหตุผลใดๆก็แล้วแต่ ซึ่งไม่สมควร) ก็สามารถทำได้ 2 วิธีดังนี้ 

1. disable ใน web.config

<pages enableViewStateMac="false" />

2. disable ในแต่ละ page เอง

<%@ page EnableViewStateMac="false" %>

แต่อย่างที่บอกไปนะครับ ว่าไม่สมควร disable เพราะมีความเสี่ยงที่จะถูกเปลี่ยนแปลงข้อมูลโดยผู้ไม่ประสงค์ดีได้ จากฝั่ง client ได้  


คราวนี้ถ้าเกิดอยากจะ test ว่ามีการปิดการทำ MAC อยู่ไหม ก็มี online tools อันนึงคือ AsafaWeb  https://asafaweb.com/ อันนี้นะครับ ใช้สำหรับ test ไม่เฉพาะแต่ MAC เท่านั้น สามารถ test ได้อีกหลายอย่างเลย แค่ใส่ url ลงไป



ผมลอง scan ให้ดู อันล่างนี้ จะสังเกตว่า มีการ enable view state MAC

ถ้า disable ก็จะขึ้นประมาณนี้




กรณีที่ไม่ใช่ asp.net มันไม่มี viewstate ก็จะขึ้นแบบด้านล่างครับ

Reference : https://www.troyhunt.com/understanding-and-testing-for-view/


คราวนี้เรามาลองดูในมุมของคนทำ Pentest บ้าง เวลาทำระบบที่เป็น ASP.Net ที่ใช้ viewstate เราก็มีเครื่องมือที่ใช้ในการ decode ค่า ViewState ไม่ใช่ใครที่ไหน Burp เช่นเดิม ใน Burp จะมี feature ในการ decode และ render ออกมาเป็นค่าที่เราอ่านได้ง่าย ตามภาพนะครับ 



(จากภาพด้านบนจะเห็นว่ามีการ enable MAC )



หรือถ้าใครไม่มี burp ก็ใช้ online ก็ได้ที่ http://viewstatedecoder.azurewebsites.net/ ออกมาเหมือนๆกัน




Comments

Popular posts from this blog

Patch Management และ Hardening คืออะไร/ ยังไง พร้อมวิธีการ ตอนที่ 2

ใครที่ยังไม่ได้อ่านตอนแรก สามารถอ่านได้ที่ Patch Management และ Hardening คืออะไร/ ยังไง พร้อมวิธีการ ตอนที่  1 4. การ Maintenance      หลังจากที่เราทำการ implement เสร็จแล้ว ไม่ใช่ว่าจะจบกันเท่านี้ มันแค่เริ่มต้น It's just the beginning. ก็ต้องมีขั้นตอนในการที่ดูแล และ up-to-date ให้อุปกรณ์ในระบบไม่มีช่องโหว่ต่อไป รวมถึงปรับปรุง template ในการ hardening เป็นประจำด้วย จะกล่าวถึงต่อไปนะ โดยปกติที่ผมเคยทำมา จะมีการกำหนดให้คนนึงที่อาจจะเป็น Security Consult ของแต่ละ platform แต่ละแผนก ในการทำ subscribe ไปยัง vendor ต่างๆ ตามอุปกรณ์ที่ดูแลอยู่เพื่อรับข่าวสาร และได้รับ notification เวลามี security update เพื่อจะนำมาวิเคราะห์ดูว่าระบบที่เราดูแลอยู่นั้นมีช่องโหว่ใหม่ๆ ที่เกี่ยวกับอุปกรณ์ของเราเกิดขึ้นหรือไม่ ถ้ามีก็ต้องนำมาเข้าสู่กระบวนการดังที่กล่าวไปข้างต้น มีคนแล้วก็ต้องมี policy องค์กรก็ต้องมีการกำหนด policy ขึ้นมาเพื่อใช้ควบคุมระยะเวลาที่องค์กรยอมรับความเสี่ยงต่อช่องโหว่ในระดับต่างๆได้ ยกตัวอย่างให้เห็นภาพ ที่ผู้เขียนเคยทำมา เช่น ถ้ามีช่องโหว่เกิดขึ้นใหม่...

CesarFTP BOF Review / Review การทำ Buffer Overflow CesarFTP

version ภาษาไทย ไว้มีเวลาจะมา update ภายหลังครับ Today I would like to review my old one lesson about buffer overflow before I take the OSCP exam in 2015. I wish you learn basic BOF from this post. CesarFTP is the one ftp software which is vulnerabled to BOF (buffer overflow). 1. The first step I download vulnerabled software from internet and install on WinXP (vm) and then 2. Try to search for exploit in my kali linux  (No, I don't exploit by metasploit just find the start code and try to make it overflow) This original python 1906.py code is as picture below. I have to change "host" ip before do next step. ***Let's take a look at "buffer". That is something I have to modify later.*** but right now I begin with Fuzzing to find how many characters can crash this application ? 3. Control EIP address - try to replace character after  "\n" * 671 by "A" 350 characters and found that Cesar not be crashed. - Let...

My OSCP Review <-> รีวิว ประสบการณ์การสอบ OSCP ( It is just the beginning)

เนื้อหาภาษาไทยสามารถดูได้ด้านล่างนะครับ About me I would like to tell you before that my english writing skill is not good, ^^", but I will try . I was Network Engineer and System Engineer with 10 years working experience and have CCNP, CCNP Security, CCDP, ITIL, MCP and I have experience in ISO27001 for 4 years. Right now I move to be a Penetration Tester in new company for 6 months. Inspiration Actually before getting a new job as pentester I would like to take CEH or ECSA certificate. But after do a new job, my three colleagues have OSCP and they are my model. All of them have an awesome skill. Then I try to find more information about OSCP and found that OSCP is very difficult to pass, no exam dump, no one answer you. Although I have a few experience on hacking but I think I can try and TRY HARDER. OSCP Course There are two course manual, pdf and video that are dependent. After I got them I tried to read from PDF only but not enough, many technics ar...