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

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

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

post นี้ก็เช่นเกียวกับโพสต์อื่นๆที่ ผู้เขียนเขียนขึ้นจากประสบการณ์การทำงานนะครับ ส่วนในเรื่องของ ISO27001 ทางผู้เขียนยังไม่รู้ครอบคลุมขนาดนั้น ขอยังไม่กล่าวถึง คงได้เขียนหลังจากสอบ CISSP ได้แล้ว (ตอนนี้ยังอยู่ในวงการ Pentest อยู่เลยจ้า) คืออะไร ? Patch Management และ Hardening  -  เป็นส่วนนึงของ configuration management process ใน ISO27001 และมาตรฐานทางด้านความปลอดถัยอื่นๆ ด้วย  ทำไมต้องมีการทำ patch และ hardening เรื่องของ Patch management จริงๆ ก็จะเกี่ยวข้องกับการทำ Hardening นะละ นั่นคือทำเพื่อปิดช่องโหว่ให้น้อยที่สุดเพื่อลดความเสี่ยงที่จะถูกโจมตีจากผู้ไม่ประสงค์ดี มันก็ไม่ดีใช่ไหมละ ถ้าระบบของเราโดนโจมตี ซึ่งอาจจะเป็นในแง่ของการขโมยข้อมูล หรือที่องค์กรส่วนใหญ่รับไม่ค่อยได้คือการโดน dos จนทำให้อุปกรณ์ไม่สามารถให้บริการต่อได้ ก็เรื่อง Availability ไง ในบางบริษัทที่มีการทำ transaction เกี่ยวกับเงินนี่ เขาคิดค่าเสียหายเป็นนาทีเลยนะ ล่มแค่ครึ่งชั่วโมงก็เสียหายหนักแล้ว กระบวนการการทำ Patch กับ hardening ก็จะมีดังนี้ คือ เขียน flow ให้ดูกันง่ายๆ อ่านคำอธิบายต่อได้ด้า