'기관차 토마스' 스마트토이 앱의 채팅 애플리케이션 취약점 발견 사례 분석
취약점 발견 배경
토이톡은 픽사 전 임원들이 설립한 인공지능 장난감 스타트업 회사입니다. 그들이 디자인하는 스마트 장난감은 시각적 추적, 음성 인식, 네트워크 확장 기능을 갖추고 있어 아이들이 앱을 통해 음성으로 장난감과 소통할 수 있습니다. 행동 반응 인식을 통해 어린이가 가상 캐릭터와 대화하는 능력을 자극하고 장난감과 상호 작용하는 재미를 더 잘 실현할 수 있습니다.
ToyTalk는 2015년 7월 "토마스와 친구들 Talk To You"라는 유료 앱을 출시했습니다. 이 앱은 어린이들이 유명한 만화 캐릭터 "기관차 토마스"(Thomas the Tank Engine)와 상호작용할 수 있는 대화형 채팅을 제공합니다. Thomas와 그의 친구들 Percy, Gordon, Henry, James, Edward, Toby 및 Mr. "The Fat Controller" Topham Hay와 함께 Sodor 섬(Topham Hatt 경)의 8개 스토리 투어를 통해 양방향 대화를 나눕니다. 토이톡 장난감 제품의 보안과 홈 네트워크 환경 접속으로 인한 보안 위험을 테스트하기 위해 토이톡 제품은 모두 동일한 코드를 사용하기 때문에 "토마스와 친구들 채팅" 앱에 대한 분석을 하기로 했습니다. 기본이며 Thomas Talk 앱은 설치 및 제거가 쉽고 테스트가 편리하며 Hello Barbie 및 Barbie와 같은 다른 ToyTalk 제품에도 동일한 취약점이 있을 수 있습니다
.취약점 상황
#취약성 1: - 인증 메커니즘이 부족하여 공격자는 쉽게 어린이인 척하여 토마스 장난감과 대화할 수 있습니다.#취약성 2: - support@toytalk.com 또는 다른 사람인 것처럼 가장할 수 있습니다.
APP 작동 방식 분석
"토마스와 친구들이 당신과 채팅합니다" 앱이 실행된 후 입력이 필요합니다. 확인을 위해 부모님의 이메일 주소를 제공하세요. 앱에서 제공하는 음성 인식 기능 사용 이메일 주소를 제출한 후 앱이 실행 인터페이스에 진입합니다. 처음에는 확인 권한을 제공해야 하기 때문에 앱이 공격 표면에 노출되는 것이 매우 제한적이라고 느낄 수 있습니다.
다음으로 해당 앱의 네트워크 브라우징 차단 분석을 진행해보겠습니다. 분석 중 이 앱은 인증을 위한 인증서, 즉 인증서를 제공한다는 점에서 다른 앱과 다르다는 것을 발견했습니다. 즉, APP와 웹 서버 간에 상호 인증 프로세스가 있을 것입니다. 이를 기반으로 먼저 클라이언트 인증서의 작동 메커니즘과 관련 비밀번호 확인을 살펴봐야 합니다.
나중에 리버스 엔지니어링을 통해 알아냈습니다. 다음 두 가지 기능이 더 흥미롭습니다.
public void setSslClientCertificate(String filename, String passphrase) { InputStream file = null; try { KeyStore store = KeyStore.getInstance("PKCS12"); file = this.mContext.getResources().getAssets().open(filename); store.load(file, passphrase.toCharArray()); this.mClientCertificate = KeyManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); this.mClientCertificate.init(store, new char[0]); } catch (Exception e) { Log.OMG(e); } finally { Utils.close(file); } }
public void setSslCaCertificate(String filename, String passphrase) { InputStream file = null; try { KeyStore store = KeyStore.getInstance("BKS"); file = this.mContext.getResources().getAssets().open(filename); store.load(file, passphrase.toCharArray()); this.mCaCertificate = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); this.mCaCertificate.init(store); } catch (Exception e) { Log.OMG(e); } finally { Utils.close(file); } }

import frida import sys def on_message(message, data): print message device = frida.get_device_manager().enumerate_devices()[-1] pid = device.spawn(["com.toytalk.thomas"]) print (pid) session = device.attach(pid) ss = ''' Java.perform(function () { var MyClass = Java.use("com.toytalk.library.HttpRequester"); MyClass.setSslCaCertificate.overload("java.lang.String","java.lang.String").implementation = function(a,b){ send(a); send(b); return this.setSslCaCertificate.overload("java.lang.String","java.lang.String").call(this,a,b); } MyClass.setSslClientCertificate.overload("java.lang.String","java.lang.String").implementation = function(a,b){ send(a); send(b); return this.setSslCaCertificate.overload("java.lang.String","java.lang.String").call(this,a,b); } }) ''' script = session.create_script(ss) script.load() script.on('message', on_message) device.resume(pid) #session.detach() sys.stdin.read()
다행히도 올바른 인증 인증서 파일을 APK에서 추출하여 중간자 공격(MITM)을 수행하는 데 사용할 수 있으며, 흥미롭게도 Toystalk.12 파일은 어떤 비밀번호로도 보호되지 않습니다
이제 . 클라이언트 인증서를 사용할 수 있지만 인증서 고정 메커니즘은 여전히 우회해야 합니다. 이를 달성하는 방법은 여러 가지가 있지만 가장 쉬운 방법은 apk에서 인증서를 삭제하고 프로그램을 다시 빌드한 후 다시 설치하는 것입니다. 클라이언트 인증서를 Burpsuite로 가져와 인증서 잠금 기능을 비활성화한 후 대부분의 APP 프로그램 테스트의 첫 번째 단계인 트래픽 차단에 들어갈 수 있습니다.
취약점 분석
취약점 1 - 인증 메커니즘 부족
또한 앱은 덜 명확한 기능을 제공합니다. 즉, 캡처된 대화 오디오 파일은 부모가 나중에 재생할 수 있도록 온라인에 저장됩니다. 이전 동의에 사용된 이메일 주소. 단, 이 이메일 주소는 부모가 비밀번호를 재설정할 때만 사용됩니다.
虽然其中的发送内容涉及很多变量值,但通过把当前用户ID更改为其它用户ID后,就能把音频文件发送到指定的用户账户名下,这将会允许一些恶意攻击者向儿童父母发送一些淫秽音频信息。
在这种情况下,虽然用户ID是一个随机的全局惟一标识符(GUID),但我们可以根据邮箱地址等已知线索来发现一些有效的用户ID信息。
此外,通过在ToyTalk代码库上运行“strings”命令,我们也可以找到一些线索:
所以,根据上图信息,一旦客户端证书被安装到浏览器中后,通过访问地址:
https://api.toytalk.com/v3/account/
就能下载到一个包含用户ID的文件。有用户ID信息在手,就能更改POST请求中的ID信息,将对话音频发送到任何注册了该APP的邮箱地址中去。修复该漏洞的方法是要求提供正确的设备ID和相关联的用户ID。我们还没测试设备ID是否能以其它方法获取,但要向某个用户账号添加一个设备ID,貌似需要访问到关联的邮箱地址才行。
漏洞报送进程
2017.8.14 - 向ToyTalk报告漏洞
2017.11.16 - 被分类为一般漏洞并被初次修复,变为closed状态
2017.11.29 - ToyTalk再次测试发现漏洞仍然存在,并重置为reopen状态
2017.12.8 - 完全修复漏洞
2017.12.18 - 漏洞赏金发放并关闭漏洞报告
漏洞2 - 可向ToyTalk邮件中注入恶意HTML框架
几天过后,我的朋友建议我学习一下ToyTalk的邮箱注入机制,这是在提交漏洞1后发生的。在使用诸如“Thomas And You”等APP应用注册设备时,它会将一封电子邮件发送到用户提供的邮箱地址中, 由于该电子邮件中包含了用户信息(设备名称),如果攻击者利用漏洞1方法获取到受害者的用户ID之后,那么,接下来可以修改电子邮件HTML中包含的设备名称,以该受害者用户ID为可信发件人,向其它受害者发送恶意钓鱼邮件,或任意更改过的邮件内容。
为了向受害者发送钓鱼邮件,攻击者先要用邮箱在该APP上进行注册,利用该注册邮箱地址,再用漏洞1方法获取到受害者用户ID,用以后续进行钓鱼邮件发送。
也即,首先,攻击者用受害者注册过的邮箱地址,执行以下请求,以获取到相应的受害者用户ID:
GET /v3/account/<email> HTTP/1.1 User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.1; ONEPLUS A3003 Build/NMF26F) Host: api.2.toytalk.com Connection: close</email>
然后,再以该用户ID为可信发件人,用以下POST方式,向其它受害者发送包含钓鱼链接的恶意邮件内容:
POST /v3/account/<accountid>/email/consent?device_id=asdf&device_name=TEST%20DEVICE"%20<a>click%20here</a>&application=Thomas+And+You&always HTTP/1.1 Content-Type: text/plain Content-Length: 0 User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.1; ONEPLUS A3003 Build/NMF26F) Host: api.2.toytalk.com Connection: close</accountid>
以上只是一个简单的PoC示例,它利用标签将HTML链接注入到邮件内容框架中,但如果花时间调整,也可以精心制作出一个更具迷惑性的钓鱼邮件来,例如,某位家长可以假冒support@toytalk.com邮件来欺骗其它家长的用户名密码信息。以下邮件内容包含钓鱼链接,是我们冒充toytalk官方发送的:
漏洞报送进程:
2017.12.4 - 提交漏洞
2017.12.12 - 官方致谢
2017.12.18 - 官方修复漏洞
2017.12.18 - 发布赏金并关闭漏洞报告
整体来说,两个漏洞的利用方式都存在一定的受限条件,但也侧面说明了大量APP在开发过程中忽视了全面的安全考虑。
위 내용은 '기관차 토마스' 스마트토이 앱의 채팅 애플리케이션 취약점 발견 사례 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Jingdong Mall APP에서 실명인증을 받는 방법은 무엇입니까? Jingdong Mall은 많은 친구들이 자주 사용하는 온라인 쇼핑 플랫폼입니다. 쇼핑하기 전에 모든 사람이 완전한 서비스를 즐기고 더 나은 쇼핑 경험을 얻을 수 있도록 실명 인증을 수행하는 것이 가장 좋습니다. 다음은 JD.com 실명인증 방법입니다. 네티즌분들께 도움이 되었으면 좋겠습니다. 1. JD.com을 설치하고 열고 개인 계정에 로그인합니다. 2. 그런 다음 페이지 하단의 [내]를 클릭하여 개인 센터 페이지로 들어갑니다. 3. 그런 다음 화면에서 작은 [설정] 아이콘을 클릭합니다. 오른쪽 상단에서 설정 기능 인터페이스로 이동합니다. 4. [계정 및 보안]을 선택하여 계정 설정 페이지로 이동합니다. 5. 마지막으로 [실명 인증] 옵션을 클릭하여 실명 정보를 입력합니다. 설치시스템에서는 실제 개인정보를 입력하고 실명인증을 완료해야 합니다.

Dashen APK를 예로 들어 보겠습니다. 앱 복호화 Lua 스크립트에 대한 이전 분석을 통해 Dashen APK의 Lua 스크립트를 복호화할 수 있습니다. 이제 해당 리소스(구성 파일 및 사진 등)를 복호화해 보겠습니다. 복호화 전의 더 중요한 구성 파일을 예로 들어 보겠습니다. 파일 헤더에는 fuckyou!라는 서명 값도 있습니다. 이것을 보고 우리는 먼저 xxtea로 암호화한 것인지 생각해 보았으며, 먼저 xxtea로 복호화한 후 압축을 풀어보니 여전히 오류가 발생하고 있었습니다. 우리가 방금 말한 것을 부정해야 합니다. 우리는 계속해서 구성 파일의 암호를 단계별로 해독합니다. 잠시 생각해 보세요. 파일 헤더는 다음과 같습니다. fuckyou! 파일을 해독하려면 필연적으로 처리가 필요합니다

Microsoft는 올해 초 Windows 11 보안 기능인 SmartAppControl을 출시했습니다. 당시 마이크로소프트는 이를 "신뢰할 수 없거나 잠재적으로 위험한 애플리케이션을 차단하는" 보호 도구라고 설명했습니다. 당시 이 도구의 독특한 점은 Windows 11 장치에서 실행되어야 하는지 여부를 결정했다는 것입니다. SmartAppControl은 처음에 평가 모드에서 실행됩니다. 이 모드에서 응용 프로그램을 열어야 할지 여부가 결정됩니다. Microsoft는 사용자가 Windows 보안 앱의 앱 및 브라우저 컨트롤 섹션에서 스마트 앱 컨트롤을 활성화할 수 있음을 밝혔습니다. Microsoft에만 따르면 SmartAppC

Apple의 제품과 서비스는 항상 전 세계 사용자들에게 사랑을 받아왔습니다. 홍콩 Apple ID를 등록하면 사용자에게 더 많은 편리함과 특권이 제공됩니다. 홍콩 Apple ID를 등록하는 단계와 주의해야 할 사항을 살펴보겠습니다. 홍콩 Apple ID를 등록하는 방법 Apple 장치를 사용할 때 많은 응용 프로그램과 기능에 로그인하려면 Apple ID를 사용해야 합니다. 홍콩에서 애플리케이션을 다운로드하거나 홍콩 AppStore의 특혜 콘텐츠를 즐기려면 홍콩 Apple ID를 등록하는 것이 매우 필요합니다. 이 기사에서는 홍콩 Apple ID를 등록하는 방법과 주의해야 할 사항에 대한 단계를 자세히 설명합니다. 단계: 언어 및 지역 선택: Apple 장치에서 "설정" 옵션을 찾아 입력하세요.

AppStore는 iOS 관련 애플리케이션을 위한 마켓플레이스입니다. 여기에서는 무료 앱과 유료 앱도 찾을 수 있습니다. 앱은 게임 앱, 생산성 앱, 유틸리티 앱, 소셜 미디어 앱 및 더 많은 카테고리의 앱이 될 수 있습니다. AppStore에서 iPhone용 앱을 많이 다운로드하거나 구입했을 수 있습니다. 이제 App Store에서 구매한 앱의 구매 내역을 확인하는 방법이 궁금하실 것입니다. 때로는 개인 정보 보호를 위해 구매 내역에서 특정 구매를 숨기고 싶을 수도 있습니다. 이 글에서는 구매 내역을 찾는 방법과 필요한 경우 구매 내역에서 구매 항목을 삭제/숨기는 방법을 안내합니다. 1 부

China Unicom 앱은 모든 사람의 요구를 쉽게 충족할 수 있습니다. 다양한 서비스를 처리하고 싶다면 여기에서 제때에 구독을 취소할 수 있습니다. 후속 손실을 피하기 위해 많은 사람들이 휴대폰을 사용할 때 데이터가 충분하지 않다고 느껴 추가 데이터 패키지를 구입하지만 다음 달에 원하지 않으면 즉시 구독을 취소하려는 경우가 있습니다. 에디터가 설명하는 구독 취소 방법을 제공하여, 필요한 친구들이 와서 사용할 수 있도록 해드립니다! China Unicom 앱의 오른쪽 하단에 있는 "내" 옵션을 찾아 클릭하세요. 내 인터페이스에서 내 서비스 열을 슬라이드하고 "주문했습니다" 옵션을 클릭하세요.

구매 증빙 자료인 송장은 우리의 일상 생활과 업무에 매우 중요합니다. 그럼 우리가 평소 듀오디안 앱을 사용해 쇼핑을 할 때, 듀오디안 앱에서 쉽게 송장을 발행할 수 있는 방법은 무엇일까요? 아래에서 이 웹사이트의 편집자가 멀티 포인트 앱에서 송장을 개설하는 방법에 대한 자세한 단계별 가이드를 제공합니다. 더 알고 싶은 사용자는 이 내용을 놓치지 마세요. [송장센터]에서 [다점슈퍼마켓/무료쇼핑]을 클릭하고, 완료된 주문페이지에서 송장발행이 필요한 주문을 선택한 후, 다음을 클릭하여 [송장정보], [수취인정보]를 입력한 후, 몇 분 후 수신 메일함을 입력하여 이메일을 열고 전자 청구서 다운로드 주소를 클릭한 후 마지막으로 전자 청구서를 다운로드하여 인쇄하세요.

Blackmagic Design은 마침내 호평을 받은 Blackmagic Camera 앱을 Android에 출시했습니다. 전문 비디오 카메라 앱은 무료로 다운로드할 수 있으며 완전한 수동 제어 기능을 제공합니다. 이러한 컨트롤은 프로 수준의 cin을 더 쉽게 수강할 수 있도록 하는 것을 목표로 합니다.
