Here are two version browser console JSfile, If your UTM work based on JSON, use "alert_attack_on_UTM_based_on_json.js", otherwise "alert_attack_on_UTM_based_on_class"
Copy all codes in JSfile and paste browser console after log in UTM
then literally it catures packets which you want to alert with song.
★ functions ★
- when specific sip or dip packet goes through UTM, alert
- when packet goes through UTM which is applied specific policy, alert
- when packets, which one sip goes to many and various dip, goes through UTM, alert
- when UTM logout, alert
-----------한글------------
UTM에서 로그인 후, console에 붙여넣기 해 사용 가능한 알람 공격 알람 Javascript code 입니다.
관제 패킷이 "그냥 html의 body에 들어오는 경우"와 "JSON을 통해 받아오는 경우"를 나눠 스크립트를 만들었습니다.
"UTM의 관제 패킷 정보가 html의 body담겨 오는 경우"엔
'alert_attack_on_UTM_based_on_class.js'를 사용해주시고
"UTM의 관제 패킷 정보가 JSON을 통해 오는 경우"엔
'alert_attack_on_UTM_based_on_json.js'를 사용해주시면 됩니다.
★ 기능들 ★
1. 특정 sip나 dip를 가진 패킷이 UTM에 들어올 경우, 알람을 울림
-
특정 정책이 적용돼 차단되거나 허용된 패킷이 들어올 경우, 알람을 울림
-
하나의 sip가 여러개의 dip를 가진 경우, 알람을 울림
-
UTM이 로그아웃된 경우, 알람을 울림
/* ****** 개발하다 마주친 문제 및 고생한 점과 해결법들 ******
(해결법) 현재 진행형// 자바스크립트를 본격적으로 제대로 공부하기 시작함, 밖에서 공부하고 공부한 지식을 노트에 적어 가져와 개발 시작
★문제 2 :
i) 공격 발생시 알람으로 노래를 틀어야하는 데, 로컬 파일에 직접 접근하는 것은 보안정책상 대부분의 브라우저에서 막혀있음
ii) URL을 통해 알람을 울리려 해도 CORS 문제에 직면
(해결법) 3주 소요// 파일 업로드 요소를 화면에 추가후, 업로드 요소를 바로 실행하는 자바스크립트 실행 후, 파일을 선택 하고'IndexedDB'에 저장함
(해결법) 1일 소요// 파일이 업로드 되면, 이진파일로 바꾸고 저장하기
(해결법) 7일 소요// UTM URL의 'body'에서 sip와 dip 클래스 내 데이터를 가져와 특정 sip, dip 배열과 비교하고 공격이라 판단되는 ip는 1시간 지속되는 'attack_ip'란 쿠키를 만들어, 쿠키가 있을 시 알람을 안 울리게 하기
(해결법) 4일 소요// XMLHttpRequest를 공부해 사용해보다가, 더 편한 fetch와 setInterval()를 통해 10초마다 갱신 패킷을 가져옴
(해결법) 2일 소요// 알고보니 ahnlab UTM은 관제 룰을 포함한 'JSON URL'로, 따로 JSON 형태의 HTML을 받고 있었음
(해결법) 3일 소요// fetch로 받아온 HTML의 body 내용을 가져와 JSON으로 파싱하고, 그 안에서 패킷들을 가져오기
(해결법) 2일 소요// UTM은 이미 그런 공격들을 특정 정책을 통해 차단하고 있고, 그건 '정책 번호'를 통해 알 수 있으니 JSON에서 정책 번호를 가져와 알람을 울림
(해결법) 3일 소요// 복잡하게 생각할 필요 없이, 그냥 UTM 로그인 후 console에서 실행하면 로그인한 아이디 권한을 가지고 fetch가 가능
(해결법) 2일 소요// 네트워크 스캔의 특징은 한 sip가 여러 개의 dip를 향하는 패킷이라는 것이므로, 10개 이상의 다른 dip를 향한 sip 패킷이 차단될 경우 공격이라 판단하게 함
(해결법) 7일 소요// 배열로 사용했다, 객체를 사용했다, 검색을 통해 최적화 방법을 구상하며 겨우 구현
(해결법) 1일 소요// 관제 룰이 들어있는 요소에 적힌 '관제 룰'을 가져와, encodeURIComponent()를 이용해 URI 형태로 변환 후 JSON URL에 삽입해 fetch로 사용하기
(해결법) 4일 소요 //
메모리가 가득차서 브라우저가 종료되는 건 코드 자체가 초기화 되기에, 자바스크립트에서 어쩔 수 없다.
window.addEventListner의 'beforeunload' 이벤트를 사용해 로그아웃시 알람을 울리고
window.performance.memory 객체를 이용해 페이지 메모리 사용량이 99% 이상 될 시 알람을 울리게 만들었다.
(해결법) 1일 소요 // 공격 알람을 울릴 때, IndexedDB에 공격 패킷의 정보들을 기록하게 만듦
(해결법) 7일 소요 // 네트워크 스캔 알고리즘을 변형해서, 하나의 sip가 일정 개수 이상의 d를 가질 경우 알람을 울리게 함
(해결법) 3일 소요 // UTM에서 받아오는 jsonArray는 시간이 역순을 돼 있기에, 다시 순서를 반대로 돌리고 공격을 탐지할 당시의 sip를 통해서, jsonArray의 첫 번째 sip의 시간과 정보들을 console에 띄움 차후 UTM 관제 페이지에서 반투명의 알람창에 정보를 보낼 수 있게, 전역 변수에 알람할 정보를 저장하는 것까지 함 */
(해결법) 1일 소요 // jsonArray를 받아올 때, jsonArray의 길이가 15 이상이 아니면 네트워크 스캔, 포트 스캔 검사를 안하게 만들어서, 불필요한 계산을 줄임