점검을 하다보면, Hmac 기술이 적용된 어플리케이션을 볼 수 있다.
Hmac이란 Hash-based Message Authentication Code 의 약자인데, 사용자가 값을 변조했는지 아닌지 알아차리기 위한 기술이다.
이 기술은 서버에 요청할때의 값을 정상적일때 Hash 값과 함께 보내서 변조를 막기 위함인데,
물론 완벽하게 막지는 못하지만 최소한 공격자를 귀찮게 만들 수 있다.
사례를 들어 설명 하자면, 전에 점검 했던 Web 중에 한 사이트가 Hmac 기술을 적용하고 있었는데
사이트 URL을 공개하기는 좀 그러니까
이 사이트에서 요청하는 값이 http://www.yprefer.com 이고, post로 value=aaa 란 값을 전송하는게 정상적이라고 가정하자.
이때 이곳에서는 로그인 할때 Chip 값을 사용자에게 주고, 이 Chip 값과 url 그리고 aaa라는 Value 값을 섞어
HASH값을 만들어내어 HTTP Header로 같이 Request를 보냈었다.
그러면 공격자가 Proxy Tool을 이용해 aaa라는 값을 bbb로 변조 하였을 때,
서버에서는 동일한 HASH알고리즘을 사용해서 CHip 값, url, bbb를 섞어 HASH값을 만들어내고, 사용자가 보내온 Header의 HASH값과 비교하여
맞는 요청인지 아닌지 확인하는 방식으로 변조를 막았었다.
물론, 여기에서 HASH 값을 만들어내는 로직은 사용자의 javascript에 있기때문에, script를 분석하면 HASH값을 만들어 낼수 있고,
변조된 bbb의 값을 가지고 HASH를 만들어 데이터와 HASH값을 동시에 변조하면 막을 수 없는 맹점이 있긴 하지만
분명 공격자에게 script를 분석해야 하는 귀찮음과 요청시 hash값을 계산해야 하는 번거로움을 안겨줄 수 있는 방법임은 틀림없다.
'Security > Etc' 카테고리의 다른 글
[경험공유] 웹 DRM 캡처방지 , 오른쪽 버튼 비활성화 우회하기 :) (4) | 2016.06.08 |
---|---|
[경험공유] Android DB 파일 암호화 :) (0) | 2016.06.07 |
[경험공유] Android 데이터 암호화 :) (0) | 2016.06.03 |
[경험공유] Firmware 분석 :) (0) | 2016.06.03 |
[경험공유] Dexprotector :( (0) | 2016.06.01 |