IP Library Granted Patent US 9,547,766
Granted Patent B2
US 9,547,766 · App. 14/325,394 · Granted Jan 17, 2017

Device, system, and method of detecting malicious automatic script and code injection

Inventors: Avi Turgeman (Cambridge, MA); Edo Dekel (Tel Aviv, IL); Itai Novick (Rehovot, IL); Yaron Lehmann (Tel Aviv, IL); Lev Kadyshevitch (Tel Aviv, IL)
Assignee: BioCatch Ltd.
G06F21/554G06F21/31G06F21/316G06F21/32H04W12/06G06F2221/034G06F2221/2133
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,547,766
App. No.
14/325,394
Granted
Jan 17, 2017
Kind
B2
Abstract

Devices, systems, and methods of detecting user identity, differentiating between users of a computerized service, and detecting a possible attacker. The methods include monitoring of user-side input-unit interactions, in general and in response to an interference introduced to user-interface elements. The monitored interactions are used for detecting an attacker that utilizes a remote access channel; for detecting a malicious automatic script, as well as malicious code injection; to identify a particular hardware assembly; to perform user segmentation or user characterization; to enable a visual login process with implicit two-factor authentication; to enable stochastic cryptography; and to detect that multiple users are utilizing the same subscription account.

Claims (69)

1. A method comprising:

determining whether a user, who utilizes a computing device to interact with a computerized service, (i) is a human user who operates an input unit of said computing device, or (ii) is an automatic script executed by a processor and which poses as a human user operating said input unit of said computing device;

wherein the determining comprises:

(a) at said computing device, monitoring client-side data that is actually entered manually through said input unit of said computing device;

(b) at a remote server of said computing device, receiving information that was transmitted by the computing device to said remote server, wherein said information comprises data that said computing device presents to said remote server as data that was entered manually through said input unit of said computing device;

(c) at said remote server of said computing device, further receiving from said computing device, indications of the manual operations that were actually performed by said human user through said input unit of said computing device, based on the monitoring of step (a);

(d) at said remote server, detecting a mismatch between:

(I) the indications of manual operations that were actually performed by said human user through said input unit, said indications received from the computing device in step (c)

and

(II) said information that was received from the computing device in step (b), which comprises data that said computing device presents to said remote server as data that was entered manually through said input unit of said computing device;

(e) based on the detected mismatch, determining that said automatic script was executed by said processor and posed as a human user operating said input unit of said computing device;

wherein step (d) comprises:

based on monitoring of the user-side input-unit interactions, detecting a number of keystrokes entered via a keyboard within a pre-defined time period during which the computing device transmitted data to said server of the computerized service;

determining a total number of keystrokes that a human is expected to manually enter in order to cause the computing device to transmit said data to said server of the computerized service;

based on matching between (A) the number of keystrokes entered via the keyboard, and (B) the total number of keystrokes that the human is expected to manually enter in order to cause the computing device to transmit said data to said server, determining whether the computing device is operated by automatic script executed by said processor.

2. The method of claim 1 , comprising:

based on monitoring of the user-side input-unit interactions, detecting absence of any user-side input-unit interactions within a pre-defined time period during which the computing device transmitted data to the server of the computerized service;

based on detecting absence of any user-side input-unit interactions within said pre-defined time period, determining that the computing device is operated by automatic script executed by said processor.

3. The method of claim 1 , comprising:

based on monitoring of the user-side input-unit interactions, determining that keystrokes entered via said keyboard, within a pre-defined time period during which the computing device transmitted data to said server of the computerized service, correspond to: (a) a first batch of keystrokes having a first keystrokes-length; and (b) a second batch of keystrokes having a second keystrokes-length;

determining that the data transmitted from the computing device to said server of the computerized service corresponds to: (A) a first string having a first string-length; and (B) a second string having a second string-length;

based on matching between the first keystrokes-length and the first string-length, determining whether the computing device is operated by automatic script executed by said processor.

4. The method of claim 1 , comprising:

based on monitoring of the user-side input-unit interactions, determining that keystrokes entered via said keyboard, within a pre-defined time period during which the computing device transmitted data to said server of the computerized service, correspond to: (a) a first batch of keystrokes having a first keystrokes-length; and (b) a second batch of keystrokes having a second keystrokes-length;

determining that the data transmitted from the computing device to said server of the computerized service corresponds to: (A) a first string having a first string-length; and (B) a second string having a second string-length;

wherein a total of the first and second keystrokes-length, is equal to a total of the first and second string lengths;

based on matching between the first keystrokes-length and the first string-length, determining whether the computing device is operated by automatic script executed by said processor.

5. The method of claim 1 , comprising:

monitoring time-intervals among user-side input-unit interactions;

based on said time-intervals among the user-side input-unit interactions being constant, determining that the computing device is operated by an automatic script executed by said processor.

6. The method of claim 1 , comprising:

monitoring time-intervals among user-side input-unit interactions;

modeling human user's time-intervals among the user-side input-unit interactions;

based on comparing between (A) said monitored time-intervals among the user-side input-unit interactions and (B) said modeled human user's time-intervals among the user-side input-unit interactions, determining whether the computing device is operated by an automatic script executed by said processor.

7. The method of claim 1 , comprising:

monitoring time-gaps among user-side input-unit interactions;

determining distribution of said time-gaps among the user-side input-unit interactions;

if said distribution corresponds to a pseudo-random distribution, then determining that the computing device is operated by automatic script executed by said processor.

8. The method of claim 1 , comprising:

monitoring time-gaps among user-side input-unit interactions;

storing in a database a user profile indicating that a particular human user typically types at a particular temporal pattern of typing when interacting with said computerizes service;

subsequently, determining whether a current temporal pattern of typing, reflected in a current usage session of said computing device for interacting with said computerized service, is different by at least a threshold percentage from said particular temporal pattern of typing stored in said user profile;

based on said determining, further determining whether the computing device is operated by automatic script executed by said processor.

9. The method of claim 1 , comprising:

monitoring time-gaps among user-side input-unit interactions;

storing in a database a user profile indicating that a particular human user typically types a particular sequence of multiple characters in a specific temporal pattern;

subsequently, monitoring keystrokes of current user-side input-unit interactions;

determining whether the current user-side input-unit interactions, comprise typing of said particular sequence of multiple characters, but do not comprise rapid typing of said particular sequence of multiple characters;

based on said determining, further determining whether the computing device is operated by automatic script executed by said processor.

10. The method of claim 1 , comprising:

comparing (A) meta-data about user-side input-unit interactions, with (B) meta-data about the data sent electronically from said computing device to said server of said computerized service; wherein the method is performed without receiving from said computerized service a copy of the data sent electronically from said computing device to said server of said computerized service;

matching (A) the meta-data about the user-side input-unit interactions, with (B) the meta-data about the data sent electronically from said computing device to said server of said computerized service;

based on said matching, determining whether the computing device is operated by automatic script executed by said processor.

11. The method of claim 1 , comprising:

based on monitored user-side input-unit interactions on said computing device, computing a particular velocity profile of pointer strokes;

generating a model corresponding to velocity profile of pointer strokes performed by human users;

based on comparison between (A) said particular velocity profile, and (B) said model corresponding to velocity profile of pointer strokes performed by human users, determining whether the computing device is operated by automatic script executed by said processor.

12. The method of claim 1 , comprising:

based on monitored user-side input-unit interactions on said computing device, extracting a particular time interval profile reflecting time intervals between down click events and up click events of a pointing device;

generating a model of time intervals between down click events and up click events of pointing devices performed by human users;

based on a comparison between (A) said particular time interval profile, and (B) said model of time intervals between down-click events and up click events of pointing devices performed by human users, determining whether the computing device is operated by automatic script executed by said processor.

13. The method of claim 1 , comprising:

based on monitored user-side input-unit interactions on said computing device, extracting a profile of time intervals between pointer strokes and down click events of a pointing device;

generating a model of time intervals between pointer strokes and down click events of pointing devices performed by human users;

based on comparing between (A) said profile of time intervals, and (B) said model of time intervals, determining whether the computing device is operated by automatic script executed by said processor.

14. The method of claim 1 , wherein said keyboard of the computing device is a physical keyboard of the computing device; and wherein the method comprises monitoring user-side keystrokes performed on said physical keyboard of said computing device.

15. The method of claim 1 , wherein said keyboard of the computing device is an on-screen keyboard of the computing device; and wherein the method comprises monitoring user-side keystrokes performed on said on-screen keyboard of said computing device.

16. The method of claim 1 , wherein said keyboard of the computing device is a physical keypad of the computing device; and wherein the method comprises monitoring user-side keystrokes performed on said physical keypad of said computing device.

17. The method of claim 1 , wherein said keyboard of the computing device is an on-screen keypad of the computing device; and wherein the method comprises monitoring user-side keystrokes performed on said on-screen keypad of said computing device.

Assignments (6)
INTELLECTUAL PROPERTY SECURITY AGREEMENT TERMINATION UNDER REEL/FRAME: 049480/0823 Recorded Sep 14, 2020
From: KREOS CAPITAL VI (EXPERT FUND) LP
To: BIOCATCH LTD.
Reel/Frame 053769/0729 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT TERMINATION UNDER REEL/FRAME: 040233/0426 Recorded Sep 14, 2020
From: KREOS CAPITAL V (EXPERT FUND) L.P.
To: BIOCATCH LTD.
Reel/Frame 053770/0145 →
SECURITY INTEREST Recorded Jun 16, 2019
From: BIOCATCH LTD.
To: KREOS CAPITAL VI (EXPERT FUND) L.P.
Reel/Frame 049480/0823 →
CHANGE OF ADDRESS Recorded Jun 13, 2019
From: BIOCATCH LTD.
To: BIOCATCH LTD.
Reel/Frame 049459/0302 →
SECURITY INTEREST Recorded Nov 6, 2016
From: BIOCATCH LTD.
To: KREOS CAPITAL V (EXPERT FUND) L.P.
Reel/Frame 040233/0426 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2014
From: TURGEMAN, AVI; DEKEL, EDO; NOVICK, ITAI; LEHMANN, YARON; KADYSHEVITCH, LEV
To: BIOCATCH LTD.
Reel/Frame 033520/0939 →
Continuity (8)
Continuation In Part 13922271 · Jun 20, 2013
Continuation In Part 13877676
Continuation In Part 14325394
Continuation In Part 14320653 · Jul 1, 2014
Continuation In Part 14320656 · Jul 1, 2014
Provisional Application 61843915 · Jul 9, 2013
Provisional Application 61417479 · Nov 29, 2010
Related Publication 20140344927A1 · Nov 20, 2014