10/23/2018

LOKIDN - IDN HomoGraph Attack의 재미있는 공격 벡터

한 2주전쯤인가요? EDB에서 재미있는 문서 하나를 보았습니다.
(https://www.exploit-db.com/docs/english/45567-lokidn-a-new-vector-for-homograph-attacks.pdf)

내용인 즉슨 IDN Homograph attack의 새로운 공격 벡터라고 하는데 읽어보고 있을 수 있을법한 이야기네란 생각이 있었습니다.
이제서야 글로 작성해보네요. 

IDN Homograph attack인 LOKIDN 입니다.

IDN HomoGraph Attack

IDN HomoGraph Attack은 서로 다른 비슷한 문자를 이용해 어떤 도메인과 통신하는지 속이는 공격입니다. (눈속임이죠)
보통 피싱에서 많이 사용되고 솔직히 눈썰미 좋은거 아니면 문자셋에 따라 눈치채기 정말 어렵습니다.

단순하게 A의 예시로만 보아도..

일반적인 영문자 A (https://en.wikipedia.org/wiki/A) 와
키릴문자 А (https://en.wikipedia.org/wiki/A_(Cyrillic))

눈으로 구별이 ... 당연히 안가겠죠. (구별하면 인정해줘야합니다..전 모르겠네요)

이런 문자열을 이용해서 마치 애플 사이트 같이 (Apple.com) A가 키릴문자로 구성된 Apple.com으로 도메인을 생성하여 사용자를 낚을 수 있습니다.

라틴어, 키릴문자, 그리스어 영문자랑 유사하거나 동일한 문자 형태이지만 실제로 Bytecode가 다른 문자셋을 이용합니다. 그래서 보통은 미리 구성된 링크(a tag 등)를 사용자에게 클릭하도록 유도하거나 Open Redirect를 이용해서 마치 공식적인 페이지로 접근한 것 처럼 사용자를 속일 수 있는거지요.
(물론 SSL Chain 보면 금방 알겠지만, 보안에 관심있는 분 아니라면 대다수가 그냥 넘어갑니다..)

공격 코드 예시 생각해보면 뭐 이런식이겠죠.

<a href='https://Аpple.com'>Apple 홈페이지에서 보기</a>

주소는 애플 사 홈페이지인 Apple.com이지만 실제로 코드 링크 타고 들어가보면 없는 도메인으로 연결됩니다.



어떻게 라틴어나 키릴문자로 도메인을 만들지? 란 생각이 드실 수 있는데요, 이걸 가능하게 해주는게 바로 IDN(Internationalized Domain name) Structure입니다.
보통 도메인은 아스키로 제한되지만 유니코드로 된 문자를 아스키로 치환하여 사용하는 경우들이 있습니다.

대표적으로 한글 도메인인데요. 예를들면 한글.com 이라는 도메인에 대해 보면

Original Query: 한글.com
Showing results for: xn--bj0bj06e.com

이렇게 xn--bj0bj06e.com으로 매핑됩니다. ping만 때려봐도 같은 주소란걸 알 수 있죠.

root@HAHWUL:/home/hahwul/# ping 한글.com
PING 한글.com (202.31.187.154) 56(84) bytes of data.
64 bytes from 202.31.187.154 (202.31.187.154): icmp_seq=1 ttl=52 time=8.11 ms
^C
--- 한글.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.118/8.118/8.118/0.000 ms

root@HAHWUL:/home/hahwul/# ping xn--bj0bj06e.com
PING 한글.com (202.31.187.154) 56(84) bytes of data.
64 bytes from 202.31.187.154 (202.31.187.154): icmp_seq=1 ttl=52 time=8.31 ms
64 bytes from 202.31.187.154 (202.31.187.154): icmp_seq=2 ttl=52 time=8.76 ms

이런 IDN specification은 많은 국가에서 사용되고 있습니다.

What's new Vector? LOKIDN

그럼 과연 문서 작성자는 어떤것이 새로운 공격 벡터라고 이야기하고 있을까요?

LOKIDN
Lapse of Keyboard at Internationalized Domain Name

IDN에서 키보드의 Lapse.

Lapse.
    1. (기억·말 등의 사소한)착오,실수,잘못(slip)


의미만 보면 키보드 실수로 인한 IDN HomoGraph Attack 이라고 해석되는데요. 링크나 피싱 사이트에서 사용하는 IDN Homograph가 어떻게 키보드와 연관되는 걸까요.
우선 LOKIDN이 트리거 가능한 경우는 관리자가 코드 작성 시 css, script 링크 등에 잘못 입력하였을 때 가능하다고 하는데요. 이 가능성을 올려주는게 바로 키보드 자동 치환입니다.

보통 랩탑들을 보면 자국어 설정에 따라 문자를 치환해주는 경우들이 있습니다. 당장 한글만 봐도 한/영 전환된 영문자 상태에서 한글을 입력해도 자동으로 한글으로 치환되듯이 라틴어,그리스어 등 영어와 유사한 언어셋의 키보드에서도 동일하게 치환합니다.

또한 일부 키보드 소프트웨어 옵션으로 키를 길게 누르거나 특정 키가 눌리는 경우 해당 언어를 치환해주게 되는데 이런 부분들에서 관리자의 실수가 발생할 수 있습니다.

이 부분이 핵심이 부분이며 이를 통해 관리자가 놓친 실수를 찾으면 CSS 조작이나 JS 조작등을 할 수 있습니다.

How to find?

그럼 관리자가 놓친 부분들은 어떻게 찾을까요? 헤드리스 브라우저에서 Error 발생에 대해 체크할 수 있는지는 모르겠는데(된다면 자동화!!) 아니라면 그냥 수동으로 찾는게 답일 것 같습니다.
개발자 도구 여시고.. CSS/JS 오류 나는것 중 도메인을 못찾는 경우를 찾아가며 실수한 부분이 있는지 찾고, 있다면 해당 도메인을 점유할 수 있는지 체크해봐야겠죠.
(이런면에선 subdomain takeover와도 비슷한점이 있네요)

Reference

https://en.wikipedia.org/wiki/IDN_homograph_attack
https://www.exploit-db.com/docs/english/45567-lokidn-a-new-vector-for-homograph-attacks.pdf


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

0 개의 댓글:

Post a Comment